{"openapi":"3.1.0","jsonSchemaDialect":"https://json-schema.org/draft/2020-12/schema","info":{"title":"randomapi.dev API","version":"2.0.0","description":"Free mock fixtures, reference data and standards computations over GET. No signup, API key or authentication. This machine-readable contract is generated from the same endpoint registry that serves the API and builds the human documentation."},"servers":[{"url":"https://randomapi.dev","description":"Production"}],"security":[],"tags":[{"name":"people","description":"Fake people, names and contact details for fixtures and demos.","x-displayName":"People"},{"name":"geo","description":"Countries, cities, airports and currencies, plus safe coordinate and flight fixtures.","x-displayName":"Geo & Reference"},{"name":"datetime","description":"Public holidays, business-day math, current time, random dates and calendar-event fixtures.","x-displayName":"Date & Time"},{"name":"internet","description":"IPv4/IPv6 tools, DNS fixtures, IP/TLD references, user agents, UUIDs and passwords.","x-displayName":"Internet & Devices"},{"name":"text","description":"Placeholder text, conversations, support tickets, tasks, markdown and reviews.","x-displayName":"Text & Content"},{"name":"commerce","description":"Products, orders, inventory, returns, subscriptions, shipments and finance fixtures.","x-displayName":"Commerce & Finance"},{"name":"design","description":"Colors, placeholder images, avatars and file metadata.","x-displayName":"Design & Media"},{"name":"developer","description":"HTTP/Unicode standards, CI and deployment fixtures, telemetry, queues, webhooks and feature flags.","x-displayName":"Developer Tools"},{"name":"chance","description":"Random numbers, dice notation and weighted decisions.","x-displayName":"Numbers & Chance"}],"paths":{"/api/access-control":{"get":{"operationId":"get_access_control_root","tags":["developer"],"summary":"Generate explainable fictional access decisions","description":"Generate explainable mock RBAC/ABAC decisions or evaluate one request against an explicit vendor-neutral fixture policy.","parameters":[{"name":"model","in":"query","description":"Pin RBAC or ABAC, or allow either fixture model.","required":false,"schema":{"type":"string","enum":["rbac","abac","any"],"default":"any"},"example":"abac","x-randomapi-param-group":"route"},{"name":"role","in":"query","description":"Pin the synthetic subject role, or allow any.","required":false,"schema":{"type":"string","enum":["owner","admin","editor","billing","viewer","any"],"default":"any"},"example":"editor","x-randomapi-param-group":"route"},{"name":"resource","in":"query","description":"Pin the requested resource type, or allow any.","required":false,"schema":{"type":"string","enum":["document","project","invoice","deployment","secret","any"],"default":"any"},"example":"document","x-randomapi-param-group":"route"},{"name":"action","in":"query","description":"Pin the requested action, or allow any.","required":false,"schema":{"type":"string","enum":["read","create","update","delete","approve","manage","any"],"default":"any"},"example":"delete","x-randomapi-param-group":"route"},{"name":"tenantState","in":"query","description":"Pin active or suspended tenant context, or allow either.","required":false,"schema":{"type":"string","enum":["active","suspended","any"],"default":"any"},"example":"active","x-randomapi-param-group":"route"},{"name":"ownsResource","in":"query","description":"Require resource ownership context to be true or false. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean"},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"outcome","in":"query","description":"Return only combinations whose evaluated verdict matches this outcome.","required":false,"schema":{"type":"string","enum":["allow","deny","any"],"default":"any"},"example":"allow","x-randomapi-param-group":"route"},{"name":"windowDays","in":"query","description":"Elapsed decision-history window before asOf.","required":false,"schema":{"type":"integer","minimum":1,"maximum":90,"default":30},"example":14,"x-randomapi-param-group":"route"},{"name":"asOf","in":"query","description":"Replay anchor; defaults to the request clock and is echoed. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-10T12:00:00.000Z","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","model"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,model"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["evaluatedAt"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"evaluatedAt"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AccessControlRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/AccessControlRootRecord"}}]},"example":{"data":[{"id":"decision_fixture_0_a12b34c56d78","model":"rbac","subject":{"id":"subject_fixture_1","role":"editor"},"resource":{"id":"document_fixture_1","type":"document","ownedBySubject":true},"action":"update","tenantState":"active","outcome":"allow","reasonCode":"role_permission","matchedRules":[{"id":"role-editor","effect":"allow","description":"Role editor grants update on document."}],"evaluatedAt":"2026-07-10T12:00:00.000Z"}],"meta":{"endpoint":"access-control","count":1,"seed":42,"params":{"model":"any","role":"any","resource":"any","action":"any","tenantState":"any","outcome":"any","windowDays":30},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"decision_fixture_0_a12b34c56d78\",\"model\":\"rbac\",\"subject\":{\"id\":\"subject_fixture_1\",\"role\":\"editor\"},\"resource\":{\"id\":\"document_fixture_1\",\"type\":\"document\",\"ownedBySubject\":true},\"action\":\"update\",\"tenantState\":\"active\",\"outcome\":\"allow\",\"reasonCode\":\"role_permission\",\"matchedRules\":[{\"id\":\"role-editor\",\"effect\":\"allow\",\"description\":\"Role editor grants update on document.\"}],\"evaluatedAt\":\"2026-07-10T12:00:00.000Z\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Access-control fixtures","url":"https://randomapi.dev/apis/access-control"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/access-control/evaluate":{"get":{"operationId":"get_access_control_evaluate","tags":["developer"],"summary":"Evaluate one request against the documented fixture policy","description":"Generate explainable mock RBAC/ABAC decisions or evaluate one request against an explicit vendor-neutral fixture policy.","parameters":[{"name":"model","in":"query","description":"Use the documented RBAC or ABAC fixture model.","required":false,"schema":{"type":"string","enum":["rbac","abac"],"default":"rbac"},"example":"abac","x-randomapi-param-group":"route"},{"name":"role","in":"query","description":"Synthetic subject role.","required":true,"schema":{"type":"string","enum":["owner","admin","editor","billing","viewer"]},"example":"editor","x-randomapi-param-group":"route"},{"name":"resource","in":"query","description":"Synthetic resource type.","required":true,"schema":{"type":"string","enum":["document","project","invoice","deployment","secret"]},"example":"document","x-randomapi-param-group":"route"},{"name":"action","in":"query","description":"Action to evaluate.","required":true,"schema":{"type":"string","enum":["read","create","update","delete","approve","manage"]},"example":"delete","x-randomapi-param-group":"route"},{"name":"tenantState","in":"query","description":"Active or suspended tenant context.","required":false,"schema":{"type":"string","enum":["active","suspended"],"default":"active"},"example":"active","x-randomapi-param-group":"route"},{"name":"ownsResource","in":"query","description":"Whether the synthetic subject owns this resource. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"asOf","in":"query","description":"Decision timestamp; defaults to request time and is echoed. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-10T12:00:00.000Z","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","model"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,model"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["evaluatedAt"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"evaluatedAt"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AccessControlEvaluateEnvelope"},{"$ref":"#/components/schemas/AccessControlEvaluateRecord"}]},"example":{"data":{"id":"decision_fixture_0_a12b34c56d78","model":"rbac","subject":{"id":"subject_fixture_1","role":"editor"},"resource":{"id":"document_fixture_1","type":"document","ownedBySubject":true},"action":"update","tenantState":"active","outcome":"allow","reasonCode":"role_permission","matchedRules":[{"id":"role-editor","effect":"allow","description":"Role editor grants update on document."}],"evaluatedAt":"2026-07-10T12:00:00.000Z"},"meta":{"endpoint":"access-control","route":"/evaluate","params":{"model":"rbac","role":"editor","resource":"document","action":"delete","tenantState":"active","ownsResource":false},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Access-control fixtures","url":"https://randomapi.dev/apis/access-control"},"x-randomapi-kind":"mock","x-randomapi-mode":"compute"}},"/api/address-formats":{"get":{"operationId":"get_address_formats_root","tags":["geo"],"summary":"List every country's address-form layout rules","description":"All 252 region codes, always ordered alphabetically by `countryCode` so `offset` paging is stable. The `ZZ` fallback template is excluded here — it is not a region; fetch it from `/lookup?country=ZZ`. One caveat for `format=csv`: `fieldWidths` has one key per component in that region's `fieldOrder`, so the flattened CSV header is derived from whichever rows land on the page and is **not** the same column set on every page (the page holding India carries three extra `fieldWidths.landmark*` columns). Add an explicit `fields=` list whenever you intend to concatenate pages. Authoritative sources: Google libaddressinput address metadata (RegionDataConstants.java, commit 81eb9628382b, 2026-05-15); libaddressinput address_formatter.cc — the envelope rendering algorithm /render follows; libaddressinput address_strings.xml — the English field labels.","parameters":[{"name":"requires","in":"query","description":"Only regions whose `requiredFields` include this component. `country` is not offered: it is required everywhere, so filtering on it would be a no-op.","required":false,"schema":{"type":"string","enum":["adminArea","dependentLocality","locality","postalCode","streetAddress","any"],"default":"any"},"example":"adminArea","x-randomapi-param-group":"route"},{"name":"uses","in":"query","description":"Only regions whose local-script template has a slot for this component.","required":false,"schema":{"type":"string","enum":["adminArea","dependentLocality","landmarkAffix","landmarkDescriptor","landmarkName","locality","organization","postalCode","recipient","sortingCode","streetAddress","any"],"default":"any"},"example":"sortingCode","x-randomapi-param-group":"route"},{"name":"adminAreaType","in":"query","description":"Only regions that call the state/province level this. Matches the effective value, so `province` includes every region that inherits it.","required":false,"schema":{"type":"string","enum":["area","county","department","district","do_si","emirate","island","oblast","parish","prefecture","province","state","any"],"default":"any"},"example":"prefecture","x-randomapi-param-group":"route"},{"name":"postalCodeType","in":"query","description":"Only regions that call the postal code this.","required":false,"schema":{"type":"string","enum":["eircode","pin","postal","zip","any"],"default":"any"},"example":"eircode","x-randomapi-param-group":"route"},{"name":"hasLatinFormat","in":"query","description":"Only regions that do (or do not) declare a separate Latin-script template. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean"},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"usesDefaultFormat","in":"query","description":"Only regions that inherit the fallback template, or only those with a template of their own. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean"},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"search","in":"query","description":"Case-insensitive substring match over `countryCode` and `postalName`.","required":false,"schema":{"type":"string","minLength":2,"maxLength":60},"example":"ireland","x-randomapi-param-group":"route"},{"name":"offset","in":"query","description":"Skip this many matches before `count` applies. `count` caps at 100, so three calls page the whole 252-row table. To concatenate CSV pages, pin the columns — `?format=csv&fields=countryCode,format,requiredFields,fieldOrder&offset=…` — because an unpinned CSV header is derived from the rows on that page and differs between pages.","required":false,"schema":{"type":"integer","minimum":0,"maximum":1000,"default":0},"example":100,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to 100.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["countryCode","postalName"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"countryCode,postalName"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["languages"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"languages"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AddressFormatsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/AddressFormatsRootRecord"}}]},"example":{"data":[{"countryCode":"GB","postalName":"UNITED KINGDOM","format":"%N%n%O%n%A%n%C%n%Z","templateLines":["%N","%O","%A","%C","%Z"],"latinFormat":null,"usesDefaultFormat":false,"fieldOrder":["recipient","organization","streetAddress","locality","postalCode"],"requiredFields":["country","streetAddress","locality","postalCode"],"uppercaseFields":["locality","postalCode"],"adminAreaType":"province","adminAreaLabel":"Province","localityType":"post_town","localityLabel":"Post Town","sublocalityType":"suburb","sublocalityLabel":"Suburb","postalCodeType":"postal","postalCodeLabel":"Postal code","postalCodePrefix":null,"fieldWidths":{"recipient":"long","organization":"long","streetAddress":"long","locality":"long","postalCode":"short"},"defaultLanguage":null,"languages":[]}],"meta":{"endpoint":"address-formats","count":1,"params":{"requires":"any","uses":"any","adminAreaType":"any","postalCodeType":"any","offset":0},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"countryCode\":\"GB\",\"postalName\":\"UNITED KINGDOM\",\"format\":\"%N%n%O%n%A%n%C%n%Z\",\"templateLines\":[\"%N\",\"%O\",\"%A\",\"%C\",\"%Z\"],\"latinFormat\":null,\"usesDefaultFormat\":false,\"fieldOrder\":[\"recipient\",\"organization\",\"streetAddress\",\"locality\",\"postalCode\"],\"requiredFields\":[\"country\",\"streetAddress\",\"locality\",\"postalCode\"],\"uppercaseFields\":[\"locality\",\"postalCode\"],\"adminAreaType\":\"province\",\"adminAreaLabel\":\"Province\",\"localityType\":\"post_town\",\"localityLabel\":\"Post Town\",\"sublocalityType\":\"suburb\",\"sublocalityLabel\":\"Suburb\",\"postalCodeType\":\"postal\",\"postalCodeLabel\":\"Postal code\",\"postalCodePrefix\":null,\"fieldWidths\":{\"recipient\":\"long\",\"organization\":\"long\",\"streetAddress\":\"long\",\"locality\":\"long\",\"postalCode\":\"short\"},\"defaultLanguage\":null,\"languages\":[]}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for International postal address formats","url":"https://randomapi.dev/apis/address-formats"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/address-formats/lookup":{"get":{"operationId":"get_address_formats_lookup","tags":["geo"],"summary":"Look up one country's address layout rule","description":"Which fields an address needs in each of 252 countries and territories, and the order they print on the envelope — plus a live envelope renderer. Authoritative sources: Google libaddressinput address metadata (RegionDataConstants.java, commit 81eb9628382b, 2026-05-15); libaddressinput address_formatter.cc — the envelope rendering algorithm /render follows; libaddressinput address_strings.xml — the English field labels.","parameters":[{"name":"country","in":"query","description":"ISO 3166-1 alpha-2 region code, case-insensitive. `ZZ` returns the fallback template libaddressinput uses for a region it has no data for.","required":true,"schema":{"type":"string","minLength":2,"maxLength":2},"example":"JP","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["countryCode","postalName"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"countryCode,postalName"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["languages"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"languages"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AddressFormatsLookupEnvelope"},{"$ref":"#/components/schemas/AddressFormatsLookupRecord"}]},"example":{"data":{"countryCode":"GB","postalName":"UNITED KINGDOM","format":"%N%n%O%n%A%n%C%n%Z","templateLines":["%N","%O","%A","%C","%Z"],"latinFormat":null,"usesDefaultFormat":false,"fieldOrder":["recipient","organization","streetAddress","locality","postalCode"],"requiredFields":["country","streetAddress","locality","postalCode"],"uppercaseFields":["locality","postalCode"],"adminAreaType":"province","adminAreaLabel":"Province","localityType":"post_town","localityLabel":"Post Town","sublocalityType":"suburb","sublocalityLabel":"Suburb","postalCodeType":"postal","postalCodeLabel":"Postal code","postalCodePrefix":null,"fieldWidths":{"recipient":"long","organization":"long","streetAddress":"long","locality":"long","postalCode":"short"},"defaultLanguage":null,"languages":[]},"meta":{"endpoint":"address-formats","route":"/lookup","params":{"country":"JP"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"No address-format rule exists for the requested two-letter region code.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?country=QQ"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for International postal address formats","url":"https://randomapi.dev/apis/address-formats"},"x-randomapi-kind":"real","x-randomapi-mode":"lookup"}},"/api/address-formats/render":{"get":{"operationId":"get_address_formats_render","tags":["geo"],"summary":"Render address components into correctly ordered envelope lines","description":"Supply whichever components you have; the destination country's template decides the order, the line breaks and which of them print at all. Empty and whitespace-only values count as absent, which is what a form that posts every field wants. Authoritative sources: Google libaddressinput address metadata (RegionDataConstants.java, commit 81eb9628382b, 2026-05-15); libaddressinput address_formatter.cc — the envelope rendering algorithm /render follows; libaddressinput address_strings.xml — the English field labels.","parameters":[{"name":"country","in":"query","description":"Destination region code, case-insensitive. `ZZ` renders with the fallback template.","required":true,"schema":{"type":"string","minLength":2,"maxLength":2},"example":"JP","x-randomapi-param-group":"route"},{"name":"recipient","in":"query","description":"Person's name (`%N`).","required":false,"schema":{"type":"string","maxLength":200},"example":"Jane Doe","x-randomapi-param-group":"route"},{"name":"organization","in":"query","description":"Company or institution (`%O`).","required":false,"schema":{"type":"string","maxLength":200},"example":"Acme Inc","x-randomapi-param-group":"route"},{"name":"street","in":"query","description":"First street-address line (`%A`).","required":false,"schema":{"type":"string","maxLength":200},"example":"1600 Amphitheatre Parkway","x-randomapi-param-group":"route"},{"name":"street2","in":"query","description":"Second street-address line. Requires `street` — street lines are ordered.","required":false,"schema":{"type":"string","maxLength":200},"example":"Building 40","x-randomapi-param-group":"route"},{"name":"dependentLocality","in":"query","description":"Neighbourhood, district or townland (`%D`) — 14 regions print it.","required":false,"schema":{"type":"string","maxLength":120},"example":"Camberwell","x-randomapi-param-group":"route"},{"name":"locality","in":"query","description":"City or post town (`%C`).","required":false,"schema":{"type":"string","maxLength":120},"example":"Mountain View","x-randomapi-param-group":"route"},{"name":"adminArea","in":"query","description":"State, province or prefecture (`%S`).","required":false,"schema":{"type":"string","maxLength":120},"example":"CA","x-randomapi-param-group":"route"},{"name":"postalCode","in":"query","description":"Postal code, ZIP, Eircode or Pincode (`%Z`). Never validated.","required":false,"schema":{"type":"string","maxLength":40},"example":"94043","x-randomapi-param-group":"route"},{"name":"sortingCode","in":"query","description":"CEDEX-style sorting code (`%X`) — 15 territories print it.","required":false,"schema":{"type":"string","maxLength":40},"example":"CEDEX 12","x-randomapi-param-group":"route"},{"name":"script","in":"query","description":"`latin` selects the region's Latin-script template where it declares one (14 do). Where it does not, the region's own template is used and `latinFormatAvailable` reports false.","required":false,"schema":{"type":"string","enum":["local","latin"],"default":"local"},"example":"latin","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["countryCode","postalName"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"countryCode,postalName"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["complete"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"complete"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AddressFormatsRenderEnvelope"},{"$ref":"#/components/schemas/AddressFormatsRenderRecord"}]},"example":{"data":{"countryCode":"DE","postalName":"GERMANY","script":"local","format":"%N%n%O%n%A%n%Z %C","latinFormatAvailable":false,"usesDefaultFormat":false,"lines":["Erika Mustermann","Musterstrasse 12","10115 Berlin"],"oneLine":"Erika Mustermann, Musterstrasse 12, 10115 Berlin","lineSeparator":", ","missingRequired":[],"unusedComponents":["adminArea"],"uppercaseFields":[],"complete":true},"meta":{"endpoint":"address-formats","route":"/render","params":{"country":"JP","script":"local"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"The requested destination region has no address-format rule to render.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?country=QQ&recipient=Jane"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for International postal address formats","url":"https://randomapi.dev/apis/address-formats"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/addresses":{"get":{"operationId":"get_addresses_root","tags":["people"],"summary":"Generate locale-consistent postal addresses","description":"Locale-aware fake postal addresses — street, city, state, zip, country and coordinates that all agree, plus a one-line formatted form in the local layout.","parameters":[{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"locale","in":"query","description":"Locale for the generated data (names, addresses, …).","required":false,"schema":{"type":"string","enum":["en","da","de","fr","es","it","pt","ja"],"default":"en"},"example":"da","x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["street","city"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"street,city"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["formatted"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"formatted"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AddressesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/AddressesRootRecord"}}]},"example":{"data":[{"street":"883 Maple Avenue","city":"Portland","state":"Oregon","zipCode":"97205","country":"United States","countryCode":"US","latitude":45.515209,"longitude":-122.678437,"formatted":"883 Maple Avenue, Portland, Oregon 97205, United States"}],"meta":{"endpoint":"addresses","count":1,"seed":42,"locale":"en","params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"street\":\"883 Maple Avenue\",\"city\":\"Portland\",\"state\":\"Oregon\",\"zipCode\":\"97205\",\"country\":\"United States\",\"countryCode\":\"US\",\"latitude\":45.515209,\"longitude\":-122.678437,\"formatted\":\"883 Maple Avenue, Portland, Oregon 97205, United States\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Addresses","url":"https://randomapi.dev/apis/addresses"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/airports":{"get":{"operationId":"get_airports_root","tags":["geo"],"summary":"List scheduled-service airports, optionally filtered by country, text or type","description":"Returns matching airports in IATA-code order. At most 100 records come back per request — use 'offset' to page and 'count' to shorten. Filters compose, and a zero-match filter returns an empty list plus a warning. Authoritative sources: OurAirports public-domain airports.csv and countries.csv (snapshot 2026-07-29, SHA-256 pinned); OurAirports public-domain runways.csv (snapshot 2026-09-14, SHA-256 pinned) — runway dimensions, surfaces, lighting and headings; tz-lookup 6.1.25 (CC0-1.0) — coordinate to IANA time zone, run at snapshot time only; IANA Time Zone Database 2026c zone.tab — country/zone validation and canonical zone spelling.","parameters":[{"name":"country","in":"query","description":"ISO 3166-1 alpha-2 country or territory code, case-insensitive (dk and DK both resolve to DK). Must be exactly two letters.","required":false,"schema":{"type":"string"},"example":"DK","x-randomapi-param-group":"route"},{"name":"search","in":"query","description":"Case- and diacritic-insensitive contains match over name, served city, country, country code, IATA code, ICAO code and ident.","required":false,"schema":{"type":"string"},"example":"sao paulo","x-randomapi-param-group":"route"},{"name":"type","in":"query","description":"Only return one OurAirports size classification; any keeps every classification.","required":false,"schema":{"type":"string","enum":["any","large_airport","medium_airport","small_airport","seaplane_base","heliport"],"default":"any"},"example":"medium_airport","x-randomapi-param-group":"route"},{"name":"minRunwayFt","in":"query","description":"Only airports whose longest runway not flagged closed in the 2026-09-14 OurAirports runway snapshot is at least this many feet. The longest in the snapshot is 16,404 ft; the 204 airports with no runway row or no recorded open-runway length never match.","required":false,"schema":{"type":"integer","minimum":1,"maximum":20000},"example":10000,"x-randomapi-param-group":"route"},{"name":"offset","in":"query","description":"Skip this many matches before returning records, for paging through a filter that matches more than one page.","required":false,"schema":{"type":"integer","minimum":0,"maximum":100000,"default":0},"example":100,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to 100.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["name","city"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"name,city"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["timezone"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"timezone"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AirportsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/AirportsRootRecord"}}]},"example":{"data":[{"name":"Copenhagen Kastrup Airport","city":"Copenhagen","country":"Denmark","countryCode":"DK","iata":"CPH","icao":"EKCH","ident":"EKCH","type":"large_airport","latitude":55.617901,"longitude":12.656,"elevationFt":17,"timezone":"Europe/Copenhagen"}],"meta":{"endpoint":"airports","count":1,"params":{"type":"any","offset":0},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"name\":\"Copenhagen Kastrup Airport\",\"city\":\"Copenhagen\",\"country\":\"Denmark\",\"countryCode\":\"DK\",\"iata\":\"CPH\",\"icao\":\"EKCH\",\"ident\":\"EKCH\",\"type\":\"large_airport\",\"latitude\":55.617901,\"longitude\":12.656,\"elevationFt\":17,\"timezone\":\"Europe/Copenhagen\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Airports","url":"https://randomapi.dev/apis/airports"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/airports/lookup":{"get":{"operationId":"get_airports_lookup","tags":["geo"],"summary":"Look up one airport by IATA, ICAO or OurAirports ident","description":"Accepts a three-letter IATA code, a four-letter ICAO code or an OurAirports ident, case-insensitively and resolved in that order. Unknown well-formed codes are explicit 404s, never substitute records. Authoritative sources: OurAirports public-domain airports.csv and countries.csv (snapshot 2026-07-29, SHA-256 pinned); OurAirports public-domain runways.csv (snapshot 2026-09-14, SHA-256 pinned) — runway dimensions, surfaces, lighting and headings; tz-lookup 6.1.25 (CC0-1.0) — coordinate to IANA time zone, run at snapshot time only; IANA Time Zone Database 2026c zone.tab — country/zone validation and canonical zone spelling.","parameters":[{"name":"code","in":"query","description":"A 3-letter IATA code, a 4-letter ICAO code or an OurAirports ident, case-insensitive.","required":true,"schema":{"type":"string","minLength":3,"maxLength":7},"example":"CPH","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["name","city"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"name,city"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["timezone"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"timezone"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AirportsLookupEnvelope"},{"$ref":"#/components/schemas/AirportsLookupRecord"}]},"example":{"data":{"name":"Copenhagen Kastrup Airport","city":"Copenhagen","country":"Denmark","countryCode":"DK","iata":"CPH","icao":"EKCH","ident":"EKCH","type":"large_airport","latitude":55.617901,"longitude":12.656,"elevationFt":17,"timezone":"Europe/Copenhagen"},"meta":{"endpoint":"airports","route":"/lookup","params":{"code":"CPH"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"No scheduled-service airport in the pinned snapshot has the requested well-formed code.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?code=EKCX"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Airports","url":"https://randomapi.dev/apis/airports"},"x-randomapi-kind":"real","x-randomapi-mode":"lookup"}},"/api/airports/runways":{"get":{"operationId":"get_airports_runways","tags":["geo"],"summary":"List the runways of one airport by IATA, ICAO or ident","description":"Returns one record per runway in designator order, from the 2026-09-14 OurAirports runways.csv snapshot: length and width in feet, the upstream surface text, the lighted and closed flags and both true headings. An airport the snapshot has no runway row for returns an empty list plus a warning; an unknown code is a 404. Authoritative sources: OurAirports public-domain airports.csv and countries.csv (snapshot 2026-07-29, SHA-256 pinned); OurAirports public-domain runways.csv (snapshot 2026-09-14, SHA-256 pinned) — runway dimensions, surfaces, lighting and headings; tz-lookup 6.1.25 (CC0-1.0) — coordinate to IANA time zone, run at snapshot time only; IANA Time Zone Database 2026c zone.tab — country/zone validation and canonical zone spelling.","parameters":[{"name":"code","in":"query","description":"A 3-letter IATA code, a 4-letter ICAO code or an OurAirports ident, case-insensitive — the same codes /lookup accepts.","required":true,"schema":{"type":"string","minLength":3,"maxLength":7},"example":"CPH","x-randomapi-param-group":"route"},{"name":"includeClosed","in":"query","description":"Whether to include runways the snapshot flags as closed (297 of the 5,660 rows). false returns only runways that are not flagged closed. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":false,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["airportIdent","airportIata"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"airportIdent,airportIata"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["highEndHeadingDegT"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"highEndHeadingDegT"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AirportsRunwaysEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/AirportsRunwaysRecord"}}]},"example":{"data":[{"airportIdent":"EKCH","airportIata":"CPH","designator":"04L/22R","lowEndIdent":"04L","highEndIdent":"22R","lengthFt":11811,"widthFt":148,"surface":"ASP","lighted":true,"closed":false,"lowEndHeadingDegT":41,"highEndHeadingDegT":221}],"meta":{"endpoint":"airports","route":"/runways","count":1,"params":{"code":"CPH","includeClosed":true},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"airportIdent\":\"EKCH\",\"airportIata\":\"CPH\",\"designator\":\"04L/22R\",\"lowEndIdent\":\"04L\",\"highEndIdent\":\"22R\",\"lengthFt\":11811,\"widthFt\":148,\"surface\":\"ASP\",\"lighted\":true,\"closed\":false,\"lowEndHeadingDegT\":41,\"highEndHeadingDegT\":221}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"No scheduled-service airport in the pinned snapshot has the requested well-formed code.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?code=EKCX"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Airports","url":"https://randomapi.dev/apis/airports"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/airports/nearby":{"get":{"operationId":"get_airports_nearby","tags":["geo"],"summary":"Find the nearest scheduled-service airports to a coordinate","description":"Ranks the 4,159-airport snapshot by spherical great-circle distance. Radius, country and type filters compose before the count limit, and at most 100 records come back. Authoritative sources: OurAirports public-domain airports.csv and countries.csv (snapshot 2026-07-29, SHA-256 pinned); OurAirports public-domain runways.csv (snapshot 2026-09-14, SHA-256 pinned) — runway dimensions, surfaces, lighting and headings; tz-lookup 6.1.25 (CC0-1.0) — coordinate to IANA time zone, run at snapshot time only; IANA Time Zone Database 2026c zone.tab — country/zone validation and canonical zone spelling.","parameters":[{"name":"lat","in":"query","description":"Search-point latitude in WGS84 decimal degrees (-90 to 90).","required":true,"schema":{"type":"number","minimum":-90,"maximum":90},"example":55.617901,"x-randomapi-param-group":"route"},{"name":"lng","in":"query","description":"Search-point longitude in WGS84 decimal degrees (-180 to 180).","required":true,"schema":{"type":"number","minimum":-180,"maximum":180},"example":12.656,"x-randomapi-param-group":"route"},{"name":"radiusKm","in":"query","description":"Maximum spherical great-circle distance in kilometers (0–20020). Defaults to 500 km.","required":false,"schema":{"type":"number","minimum":0,"maximum":20020,"default":500},"example":100,"x-randomapi-param-group":"route"},{"name":"country","in":"query","description":"Optional ISO 3166-1 alpha-2 country/territory filter, case-insensitive.","required":false,"schema":{"type":"string"},"example":"GB","x-randomapi-param-group":"route"},{"name":"type","in":"query","description":"Optional OurAirports size classification filter; any keeps every classification.","required":false,"schema":{"type":"string","enum":["any","large_airport","medium_airport","small_airport","seaplane_base","heliport"],"default":"any"},"example":"medium_airport","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to 10.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["name","city"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"name,city"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["distanceKm"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"distanceKm"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AirportsNearbyEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/AirportsNearbyRecord"}}]},"example":{"data":[{"name":"Copenhagen Kastrup Airport","city":"Copenhagen","country":"Denmark","countryCode":"DK","iata":"CPH","icao":"EKCH","ident":"EKCH","type":"large_airport","latitude":55.617901,"longitude":12.656,"elevationFt":17,"timezone":"Europe/Copenhagen","distanceKm":0}],"meta":{"endpoint":"airports","route":"/nearby","count":1,"params":{"lat":55.617901,"lng":12.656,"radiusKm":500,"type":"any"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"name\":\"Copenhagen Kastrup Airport\",\"city\":\"Copenhagen\",\"country\":\"Denmark\",\"countryCode\":\"DK\",\"iata\":\"CPH\",\"icao\":\"EKCH\",\"ident\":\"EKCH\",\"type\":\"large_airport\",\"latitude\":55.617901,\"longitude\":12.656,\"elevationFt\":17,\"timezone\":\"Europe/Copenhagen\",\"distanceKm\":0}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Airports","url":"https://randomapi.dev/apis/airports"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/analytics-sessions":{"get":{"operationId":"get_analytics_sessions_root","tags":["developer"],"summary":"Generate coherent analytics sessions with bounded raw events","description":"Generate privacy-safe analytics sessions and funnel summaries with exact event order, timing, outcome, conversion and revenue arithmetic.","parameters":[{"name":"outcome","in":"query","description":"Mix outcomes or force bounced (1 event), engaged (2–8, no purchase) or converted (5–8, purchase last).","required":false,"schema":{"type":"string","enum":["any","bounced","engaged","converted"],"default":"any"},"example":"converted","x-randomapi-param-group":"route"},{"name":"channel","in":"query","description":"Mix acquisition channels or constrain every session to one channel.","required":false,"schema":{"type":"string","enum":["any","direct","organic","referral","email","paid"],"default":"any"},"example":"organic","x-randomapi-param-group":"route"},{"name":"device","in":"query","description":"Mix client classes or constrain coherent browser, OS and viewport profiles to one device class.","required":false,"schema":{"type":"string","enum":["any","desktop","mobile","tablet"],"default":"any"},"example":"mobile","x-randomapi-param-group":"route"},{"name":"minEvents","in":"query","description":"Inclusive minimum event count; must not exceed maxEvents or conflict with a forced outcome.","required":false,"schema":{"type":"integer","minimum":1,"maximum":8,"default":1},"example":3,"x-randomapi-param-group":"route"},{"name":"maxEvents","in":"query","description":"Inclusive maximum event count; nested arrays stay bounded to eight events.","required":false,"schema":{"type":"integer","minimum":1,"maximum":8,"default":8},"example":6,"x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Inclusive lower bound for synthetic session start, not end. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}],"default":"2026-06-01"},"example":"2026-06-10","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Inclusive upper bound for session start; the from/to span may not exceed 366 days. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}],"default":"2026-06-30"},"example":"2026-06-20","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["sessionId","anonymousId"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"sessionId,anonymousId"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["events"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"events"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AnalyticsSessionsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/AnalyticsSessionsRootRecord"}}]},"example":{"data":[{"sessionId":"ses_01_a1b2c3d4e5f6","anonymousId":"anon_fixture_1_a1b2c3d4","startedAt":"2026-06-12T10:00:00.000Z","endedAt":"2026-06-12T10:04:00.000Z","durationSeconds":240,"outcome":"converted","channel":"organic","client":{"device":"mobile","browser":"Safari","os":"iOS","viewport":{"width":390,"height":844},"locale":"en-US","ip":"192.0.2.1"},"eventCount":5,"pageviewCount":2,"converted":true,"revenueCents":8999,"funnel":{"landing":true,"productViewed":true,"carted":true,"checkoutStarted":true,"purchased":true,"deepestStage":"purchase","completedSteps":5},"events":[{"eventId":"ses_01_a1_e0","sequence":0,"type":"landing_view","occurredAt":"2026-06-12T10:00:00.000Z","path":"/","valueCents":null}]}],"meta":{"endpoint":"analytics-sessions","count":1,"seed":42,"params":{"outcome":"any","channel":"any","device":"any","minEvents":1,"maxEvents":8,"from":"2026-06-01","to":"2026-06-30"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"sessionId\":\"ses_01_a1b2c3d4e5f6\",\"anonymousId\":\"anon_fixture_1_a1b2c3d4\",\"startedAt\":\"2026-06-12T10:00:00.000Z\",\"endedAt\":\"2026-06-12T10:04:00.000Z\",\"durationSeconds\":240,\"outcome\":\"converted\",\"channel\":\"organic\",\"client\":{\"device\":\"mobile\",\"browser\":\"Safari\",\"os\":\"iOS\",\"viewport\":{\"width\":390,\"height\":844},\"locale\":\"en-US\",\"ip\":\"192.0.2.1\"},\"eventCount\":5,\"pageviewCount\":2,\"converted\":true,\"revenueCents\":8999,\"funnel\":{\"landing\":true,\"productViewed\":true,\"carted\":true,\"checkoutStarted\":true,\"purchased\":true,\"deepestStage\":\"purchase\",\"completedSteps\":5},\"events\":[{\"eventId\":\"ses_01_a1_e0\",\"sequence\":0,\"type\":\"landing_view\",\"occurredAt\":\"2026-06-12T10:00:00.000Z\",\"path\":\"/\",\"valueCents\":null}]}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Analytics session fixtures","url":"https://randomapi.dev/apis/analytics-sessions"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/analytics-sessions/funnels":{"get":{"operationId":"get_analytics_sessions_funnels","tags":["developer"],"summary":"Project the same seeded sessions into exact funnel aggregates","description":"Generate privacy-safe analytics sessions and funnel summaries with exact event order, timing, outcome, conversion and revenue arithmetic.","parameters":[{"name":"outcome","in":"query","description":"Mix outcomes or force bounced (1 event), engaged (2–8, no purchase) or converted (5–8, purchase last).","required":false,"schema":{"type":"string","enum":["any","bounced","engaged","converted"],"default":"any"},"example":"converted","x-randomapi-param-group":"route"},{"name":"channel","in":"query","description":"Mix acquisition channels or constrain every session to one channel.","required":false,"schema":{"type":"string","enum":["any","direct","organic","referral","email","paid"],"default":"any"},"example":"organic","x-randomapi-param-group":"route"},{"name":"device","in":"query","description":"Mix client classes or constrain coherent browser, OS and viewport profiles to one device class.","required":false,"schema":{"type":"string","enum":["any","desktop","mobile","tablet"],"default":"any"},"example":"mobile","x-randomapi-param-group":"route"},{"name":"minEvents","in":"query","description":"Inclusive minimum event count; must not exceed maxEvents or conflict with a forced outcome.","required":false,"schema":{"type":"integer","minimum":1,"maximum":8,"default":1},"example":3,"x-randomapi-param-group":"route"},{"name":"maxEvents","in":"query","description":"Inclusive maximum event count; nested arrays stay bounded to eight events.","required":false,"schema":{"type":"integer","minimum":1,"maximum":8,"default":8},"example":6,"x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Inclusive lower bound for synthetic session start, not end. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}],"default":"2026-06-01"},"example":"2026-06-10","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Inclusive upper bound for session start; the from/to span may not exceed 366 days. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}],"default":"2026-06-30"},"example":"2026-06-20","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["sessionId","outcome"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"sessionId,outcome"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["revenueCents"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"revenueCents"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AnalyticsSessionsFunnelsEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/AnalyticsSessionsFunnelsRecord"}}]},"example":{"data":[{"sessionId":"ses_01_a1b2c3d4e5f6","outcome":"converted","eventCount":5,"landingViews":1,"productViews":1,"addToCartEvents":1,"checkoutEvents":1,"purchaseEvents":1,"deepestStage":"purchase","converted":true,"revenueCents":8999}],"meta":{"endpoint":"analytics-sessions","route":"/funnels","count":1,"seed":42,"params":{"outcome":"any","channel":"any","device":"any","minEvents":1,"maxEvents":8,"from":"2026-06-01","to":"2026-06-30"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"sessionId\":\"ses_01_a1b2c3d4e5f6\",\"outcome\":\"converted\",\"eventCount\":5,\"landingViews\":1,\"productViews\":1,\"addToCartEvents\":1,\"checkoutEvents\":1,\"purchaseEvents\":1,\"deepestStage\":\"purchase\",\"converted\":true,\"revenueCents\":8999}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Analytics session fixtures","url":"https://randomapi.dev/apis/analytics-sessions"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/audit-logs":{"get":{"operationId":"get_audit_logs_root","tags":["developer"],"summary":"Generate coherent fictional audit records","description":"Generate coherent fake audit records for authentication, CRUD and permission changes — safely seeded, filterable and bounded by time.","parameters":[{"name":"action","in":"query","description":"Only generate this audit action. Omit for a mix.","required":false,"schema":{"type":"string","enum":["login","logout","create","update","delete","permissionChange"]},"example":"permissionChange","x-randomapi-param-group":"route"},{"name":"outcome","in":"query","description":"Only generate this outcome. Failure and denied records include metadata.reason.","required":false,"schema":{"type":"string","enum":["success","failure","denied"]},"example":"denied","x-randomapi-param-group":"route"},{"name":"service","in":"query","description":"Only generate resources from this application service; echoed as metadata.service.","required":false,"schema":{"type":"string","enum":["auth","billing","catalog","storage","admin"]},"example":"auth","x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Earliest timestamp, inclusive. With only from, to resolves exactly 30 days later; with neither bound, defaults to 30 UTC days before today. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Latest timestamp, inclusive. With only to, from resolves exactly 30 days earlier; with neither bound, defaults to the end of the current UTC day. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-31T23:59:59.999Z","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","timestamp"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,timestamp"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["metadata"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"metadata"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AuditLogsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/AuditLogsRootRecord"}}]},"example":{"data":[{"id":"aud_66f327f2-76cc-47a8-b2ca-a2cf7131537a","timestamp":"2026-01-18T14:27:31.488Z","actor":{"id":"usr_a81c42","name":"Jamie Carter","kind":"user"},"action":"update","resourceType":"user","resourceId":"user_31f0a82d9c41","outcome":"success","ipAddress":"192.0.2.42","userAgent":"randomapi-test-client/1.0","requestId":"req_53a4b81f9d0e7a2c","metadata":{"service":"admin","changedFields":["status"],"previousVersion":2,"newVersion":3}}],"meta":{"endpoint":"audit-logs","count":1,"seed":42,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"aud_66f327f2-76cc-47a8-b2ca-a2cf7131537a\",\"timestamp\":\"2026-01-18T14:27:31.488Z\",\"actor\":{\"id\":\"usr_a81c42\",\"name\":\"Jamie Carter\",\"kind\":\"user\"},\"action\":\"update\",\"resourceType\":\"user\",\"resourceId\":\"user_31f0a82d9c41\",\"outcome\":\"success\",\"ipAddress\":\"192.0.2.42\",\"userAgent\":\"randomapi-test-client/1.0\",\"requestId\":\"req_53a4b81f9d0e7a2c\",\"metadata\":{\"service\":\"admin\",\"changedFields\":[\"status\"],\"previousVersion\":2,\"newVersion\":3}}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Audit log fixtures","url":"https://randomapi.dev/apis/audit-logs"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/auth-sessions":{"get":{"operationId":"get_auth_sessions_root","tags":["developer"],"summary":"Generate coherent fictional authentication sessions","description":"Generate coherent fake authentication sessions and login attempts with exact expiry, revocation, MFA, risk and outcome states.","parameters":[{"name":"status","in":"query","description":"Pin active, expired or revoked status, or allow any.","required":false,"schema":{"type":"string","enum":["active","expired","revoked","any"],"default":"any"},"example":"revoked","x-randomapi-param-group":"route"},{"name":"method","in":"query","description":"Pin a password, passkey, OAuth or SAML authentication method, or allow any.","required":false,"schema":{"type":"string","enum":["password","passkey","oauth","saml","any"],"default":"any"},"example":"passkey","x-randomapi-param-group":"route"},{"name":"mfa","in":"query","description":"Pin the MFA method; none means no second factor. MFA outcomes reject none.","required":false,"schema":{"type":"string","enum":["none","totp","sms","webauthn","any"],"default":"any"},"example":"totp","x-randomapi-param-group":"route"},{"name":"risk","in":"query","description":"Pin the synthetic risk classification, or allow any.","required":false,"schema":{"type":"string","enum":["low","medium","high","any"],"default":"any"},"example":"high","x-randomapi-param-group":"route"},{"name":"windowDays","in":"query","description":"How many elapsed days before asOf may contain fixture activity.","required":false,"schema":{"type":"integer","minimum":1,"maximum":90,"default":30},"example":14,"x-randomapi-param-group":"route"},{"name":"asOf","in":"query","description":"Replay anchor. Defaults to the request clock and is always echoed in meta.params. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-10T12:00:00.000Z","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","user"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,user"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["active"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"active"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AuthSessionsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/AuthSessionsRootRecord"}}]},"example":{"data":[{"id":"ses_fixture_0_a12b34c56d78ef","user":{"id":"usr_fixture_12ab34cd56ef","name":"Avery Jensen","email":"user-a1b2c3d4@example.net"},"status":"active","method":"passkey","mfa":"webauthn","risk":"low","device":{"type":"desktop","browser":"Chrome","os":"Windows","userAgent":"Mozilla/5.0 ..."},"ip":"192.0.2.1","createdAt":"2026-07-01T08:00:00.000Z","lastSeenAt":"2026-07-10T10:00:00.000Z","expiresAt":"2026-07-17T08:00:00.000Z","revokedAt":null,"revocationReason":null,"active":true}],"meta":{"endpoint":"auth-sessions","count":1,"seed":42,"params":{"status":"any","method":"any","mfa":"any","risk":"any","windowDays":30},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"ses_fixture_0_a12b34c56d78ef\",\"user\":{\"id\":\"usr_fixture_12ab34cd56ef\",\"name\":\"Avery Jensen\",\"email\":\"user-a1b2c3d4@example.net\"},\"status\":\"active\",\"method\":\"passkey\",\"mfa\":\"webauthn\",\"risk\":\"low\",\"device\":{\"type\":\"desktop\",\"browser\":\"Chrome\",\"os\":\"Windows\",\"userAgent\":\"Mozilla/5.0 ...\"},\"ip\":\"192.0.2.1\",\"createdAt\":\"2026-07-01T08:00:00.000Z\",\"lastSeenAt\":\"2026-07-10T10:00:00.000Z\",\"expiresAt\":\"2026-07-17T08:00:00.000Z\",\"revokedAt\":null,\"revocationReason\":null,\"active\":true}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Authentication session fixtures","url":"https://randomapi.dev/apis/auth-sessions"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/auth-sessions/login-attempts":{"get":{"operationId":"get_auth_sessions_login_attempts","tags":["developer"],"summary":"Generate coherent fictional login attempts","description":"Generate coherent fake authentication sessions and login attempts with exact expiry, revocation, MFA, risk and outcome states.","parameters":[{"name":"outcome","in":"query","description":"Pin a success or exact login failure branch, or allow any.","required":false,"schema":{"type":"string","enum":["success","invalidCredentials","mfaRequired","mfaFailed","locked","any"],"default":"any"},"example":"mfaFailed","x-randomapi-param-group":"route"},{"name":"method","in":"query","description":"Pin a password, passkey, OAuth or SAML authentication method, or allow any.","required":false,"schema":{"type":"string","enum":["password","passkey","oauth","saml","any"],"default":"any"},"example":"passkey","x-randomapi-param-group":"route"},{"name":"mfa","in":"query","description":"Pin the MFA method; none means no second factor. MFA outcomes reject none.","required":false,"schema":{"type":"string","enum":["none","totp","sms","webauthn","any"],"default":"any"},"example":"totp","x-randomapi-param-group":"route"},{"name":"risk","in":"query","description":"Pin the synthetic risk classification, or allow any.","required":false,"schema":{"type":"string","enum":["low","medium","high","any"],"default":"any"},"example":"high","x-randomapi-param-group":"route"},{"name":"windowDays","in":"query","description":"How many elapsed days before asOf may contain fixture activity.","required":false,"schema":{"type":"integer","minimum":1,"maximum":90,"default":30},"example":14,"x-randomapi-param-group":"route"},{"name":"asOf","in":"query","description":"Replay anchor. Defaults to the request clock and is always echoed in meta.params. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-10T12:00:00.000Z","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","user"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,user"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["lockedUntil"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"lockedUntil"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AuthSessionsLoginAttemptsEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/AuthSessionsLoginAttemptsRecord"}}]},"example":{"data":[{"id":"login_fixture_0_a12b34c56d78ef","user":{"id":"usr_fixture_12ab34cd56ef","name":"Avery Jensen","email":"user-a1b2c3d4@example.net"},"method":"password","mfa":"totp","risk":"high","outcome":"mfaFailed","device":{"type":"mobile","browser":"Safari","os":"iOS","userAgent":"Mozilla/5.0 ..."},"ip":"198.51.100.2","attemptedAt":"2026-07-10T11:00:00.000Z","sessionId":null,"failureCode":"mfa_failed","challenge":{"method":"totp","required":true,"attemptedAt":"2026-07-10T11:00:05.000Z","satisfiedAt":null},"lockedUntil":null}],"meta":{"endpoint":"auth-sessions","route":"/login-attempts","count":1,"seed":42,"params":{"outcome":"any","method":"any","mfa":"any","risk":"any","windowDays":30},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"login_fixture_0_a12b34c56d78ef\",\"user\":{\"id\":\"usr_fixture_12ab34cd56ef\",\"name\":\"Avery Jensen\",\"email\":\"user-a1b2c3d4@example.net\"},\"method\":\"password\",\"mfa\":\"totp\",\"risk\":\"high\",\"outcome\":\"mfaFailed\",\"device\":{\"type\":\"mobile\",\"browser\":\"Safari\",\"os\":\"iOS\",\"userAgent\":\"Mozilla/5.0 ...\"},\"ip\":\"198.51.100.2\",\"attemptedAt\":\"2026-07-10T11:00:00.000Z\",\"sessionId\":null,\"failureCode\":\"mfa_failed\",\"challenge\":{\"method\":\"totp\",\"required\":true,\"attemptedAt\":\"2026-07-10T11:00:05.000Z\",\"satisfiedAt\":null},\"lockedUntil\":null}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Authentication session fixtures","url":"https://randomapi.dev/apis/auth-sessions"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/avatars/image":{"get":{"operationId":"get_avatars_image","tags":["design"],"summary":"Render a deterministic SVG avatar for a seed","description":"Returns the image itself (`image/svg+xml`), not JSON. The `seed` is the identity: equal seeds render byte-identical SVGs, so the URL is safe to store and hotlink.","parameters":[{"name":"style","in":"query","description":"Artwork: 'identicon' = mirrored 5×5 pixel grid, 'initials' = lettered tile, 'shapes' = 2–3 overlapping abstract shapes.","required":false,"schema":{"type":"string","enum":["identicon","initials","shapes"],"default":"identicon"},"example":"initials","x-randomapi-param-group":"route"},{"name":"seed","in":"query","description":"Identity key — the same seed always renders the exact same avatar, so use a user ID, email or username. Max 64 characters. Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"string","maxLength":64,"default":"random-user"},"example":"user-42","x-randomapi-param-group":"route"},{"name":"name","in":"query","description":"Initials source for style=initials: first letters of the first two words, uppercased ('Jane Doe' → JD). Without it the seed's first two characters are used. Ignored by the other styles.","required":false,"schema":{"type":"string","maxLength":60},"example":"Jane Doe","x-randomapi-param-group":"route"},{"name":"size","in":"query","description":"Rendered width/height in pixels (also the viewBox). The artwork is identical at every size — SVG scales losslessly.","required":false,"schema":{"type":"integer","minimum":16,"maximum":512,"default":128},"example":256,"x-randomapi-param-group":"route"},{"name":"rounded","in":"query","description":"Rounded-square tile (corner radius = 20% of size). Set false for sharp corners (rx=\"0\"). Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":false,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"bg","in":"query","description":"Background as a 6-digit hex color, with or without '#' (e.g. 1e293b) — anything else is a 400. Defaults to a pastel derived from the seed, stable across styles.","required":false,"schema":{"type":"string"},"example":"ffadad","x-randomapi-param-group":"route"}],"responses":{"200":{"description":"SVG image generated from the validated query parameters.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"Cache-Control":{"$ref":"#/components/headers/ImageCacheControl"}},"content":{"image/svg+xml":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Avatars","url":"https://randomapi.dev/apis/avatars"},"x-randomapi-kind":"mock","x-randomapi-mode":"image"}},"/api/avatars":{"get":{"operationId":"get_avatars_root","tags":["design"],"summary":"Generate ready-to-use avatar image URLs","description":"Generates avatar URLs pointing at `/api/avatars/image`, each with a readable `adjective-noun-NN` seed. Pin the platform `?seed=<int>` to get the same batch every time.","parameters":[{"name":"style","in":"query","description":"Bake one style into every generated URL. Omit for a random mix of all three.","required":false,"schema":{"type":"string","enum":["identicon","initials","shapes"]},"example":"identicon","x-randomapi-param-group":"route"},{"name":"size","in":"query","description":"Pixel size baked into every generated URL's `size` parameter.","required":false,"schema":{"type":"integer","minimum":16,"maximum":512,"default":128},"example":256,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["url","style"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"url,style"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["seed"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"seed"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AvatarsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/AvatarsRootRecord"}}]},"example":{"data":[{"url":"https://randomapi.dev/api/avatars/image?style=identicon&seed=brave-falcon-42&size=128","style":"identicon","seed":"brave-falcon-42"}],"meta":{"endpoint":"avatars","count":1,"seed":42,"params":{"size":128},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"url\":\"https://randomapi.dev/api/avatars/image?style=identicon&seed=brave-falcon-42&size=128\",\"style\":\"identicon\",\"seed\":\"brave-falcon-42\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Avatars","url":"https://randomapi.dev/apis/avatars"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/background-jobs":{"get":{"operationId":"get_background_jobs_root","tags":["developer"],"summary":"Generate bounded fictional background-job lifecycles","description":"Generate coherent queue-job fixtures with bounded attempts, retry timing, dead-letter states and queue-specific payloads.","parameters":[{"name":"queue","in":"query","description":"Only generate jobs and payloads for this queue.","required":false,"schema":{"type":"string","enum":["email","exports","media","billing"]},"example":"media","x-randomapi-param-group":"route"},{"name":"status","in":"query","description":"Pin the exact queue-job lifecycle status.","required":false,"schema":{"type":"string","enum":["queued","scheduled","running","retrying","succeeded","failed","deadLettered","cancelled"]},"example":"retrying","x-randomapi-param-group":"route"},{"name":"priority","in":"query","description":"Pin low, normal, high or critical priority.","required":false,"schema":{"type":"string","enum":["low","normal","high","critical"]},"example":"high","x-randomapi-param-group":"route"},{"name":"maxAttempts","in":"query","description":"Retry limit. Retrying requires at least 2; failed/deadLettered use the full limit.","required":false,"schema":{"type":"integer","minimum":1,"maximum":8,"default":3},"example":5,"x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Earliest creation time. With only from, to resolves 30 elapsed days later; with neither, defaults 30 UTC days before today. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-02-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Latest creation time. With only to, from resolves 30 elapsed days earlier; with neither, defaults to today's UTC end. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-02-28T23:59:59.999Z","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","queue"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,queue"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["attempts"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"attempts"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/BackgroundJobsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/BackgroundJobsRootRecord"}}]},"example":{"data":[{"id":"job_5819cd40d202_00","queue":"media","type":"resizeImage","status":"retrying","priority":"high","payload":{"source":"https://assets.example.com/files/demo.png","width":640,"height":480},"createdAt":"2026-02-10T10:00:00.000Z","scheduledAt":"2026-02-10T10:01:00.000Z","startedAt":"2026-02-10T10:01:00.000Z","finishedAt":null,"attemptCount":2,"maxAttempts":5,"nextRetryAt":"2026-02-10T10:10:00.000Z","deadLetteredAt":null,"error":"temporary dependency failure","attempts":[{"number":1,"startedAt":"2026-02-10T10:01:00.000Z","finishedAt":"2026-02-10T10:01:02.000Z","durationMs":2000,"outcome":"failure","error":"temporary dependency failure"}]}],"meta":{"endpoint":"background-jobs","count":1,"seed":42,"params":{"maxAttempts":3},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"job_5819cd40d202_00\",\"queue\":\"media\",\"type\":\"resizeImage\",\"status\":\"retrying\",\"priority\":\"high\",\"payload\":{\"source\":\"https://assets.example.com/files/demo.png\",\"width\":640,\"height\":480},\"createdAt\":\"2026-02-10T10:00:00.000Z\",\"scheduledAt\":\"2026-02-10T10:01:00.000Z\",\"startedAt\":\"2026-02-10T10:01:00.000Z\",\"finishedAt\":null,\"attemptCount\":2,\"maxAttempts\":5,\"nextRetryAt\":\"2026-02-10T10:10:00.000Z\",\"deadLetteredAt\":null,\"error\":\"temporary dependency failure\",\"attempts\":[{\"number\":1,\"startedAt\":\"2026-02-10T10:01:00.000Z\",\"finishedAt\":\"2026-02-10T10:01:02.000Z\",\"durationMs\":2000,\"outcome\":\"failure\",\"error\":\"temporary dependency failure\"}]}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Background job fixtures","url":"https://randomapi.dev/apis/background-jobs"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/barcodes/image":{"get":{"operationId":"get_barcodes_image","tags":["design"],"summary":"Render a scannable EAN-13 or Code 128 barcode","description":"Returns the barcode itself (`image/svg+xml`), not JSON. EAN-13 validates (or computes) the check digit; Code 128 encodes printable ASCII in set B with its check symbol. Authoritative source: GS1 General Specifications (EAN-13) and ISO/IEC 15417 (Code 128).","parameters":[{"name":"data","in":"query","description":"Payload to encode. For type=ean13: 13 digits with a valid check digit, or 12 digits to have it computed and appended. For type=code128: 1–40 characters of printable ASCII (space–~).","required":true,"schema":{"type":"string","maxLength":40},"example":"5901234123457","x-randomapi-param-group":"route"},{"name":"type","in":"query","description":"Symbology: 'ean13' = retail product codes (L/G/R patterns, mod-10 check digit), 'code128' = free-text code set B with mod-103 check symbol.","required":false,"schema":{"type":"string","enum":["ean13","code128"],"default":"ean13"},"example":"code128","x-randomapi-param-group":"route"},{"name":"height","in":"query","description":"Bar height in pixels (40–400). The image is 24 px taller when showText=true.","required":false,"schema":{"type":"integer","minimum":40,"maximum":400,"default":120},"example":200,"x-randomapi-param-group":"route"},{"name":"showText","in":"query","description":"Print the encoded value under the bars in a monospace font. For EAN-13 the label is always the full 13 digits, including a computed check digit. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":false,"allowEmptyValue":true,"x-randomapi-param-group":"route"}],"responses":{"200":{"description":"SVG image generated from the validated query parameters.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"Cache-Control":{"$ref":"#/components/headers/ImageCacheControl"}},"content":{"image/svg+xml":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Barcodes","url":"https://randomapi.dev/apis/barcodes"},"x-randomapi-kind":"real","x-randomapi-mode":"image"}},"/api/base-encodings/encode":{"get":{"operationId":"get_base_encodings_encode","tags":["developer"],"summary":"Encode UTF-8 text as base16, base32, base64 or base64url","description":"Strict RFC 4648 base16, base32, base64 and base64url encoding/decoding with Unicode-safe UTF-8, padding control and malformed-input errors. Authoritative source: RFC 4648 base16, base32, base64 and base64url algorithms.","parameters":[{"name":"text","in":"query","description":"Unicode text to encode exactly as UTF-8 (1–4,096 characters); surrounding whitespace and a leading BOM are preserved.","required":true,"schema":{"type":"string","minLength":1,"maxLength":4096},"example":"Hello, København 👋","x-randomapi-param-group":"route"},{"name":"encoding","in":"query","description":"RFC 4648 alphabet to use: hexadecimal base16, base32, standard base64, or URL-safe base64url.","required":false,"schema":{"type":"string","enum":["base16","base32","base64","base64url"],"default":"base64"},"example":"base64url","x-randomapi-param-group":"route"},{"name":"padding","in":"query","description":"Emit trailing '=' padding for base32/base64/base64url. Base16 has no padding. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":false,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["input","encoding"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"input,encoding"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["padded"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"padded"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/BaseEncodingsEncodeEnvelope"},{"$ref":"#/components/schemas/BaseEncodingsEncodeRecord"}]},"example":{"data":{"input":"Hello","encoding":"base64","output":"SGVsbG8=","bytes":5,"padded":true},"meta":{"endpoint":"base-encodings","route":"/encode","params":{"text":"Hello, København 👋","encoding":"base64","padding":true},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Base encodings","url":"https://randomapi.dev/apis/base-encodings"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/base-encodings/decode":{"get":{"operationId":"get_base_encodings_decode","tags":["developer"],"summary":"Strictly validate and decode an RFC 4648 string","description":"Strict RFC 4648 base16, base32, base64 and base64url encoding/decoding with Unicode-safe UTF-8, padding control and malformed-input errors. Authoritative source: RFC 4648 base16, base32, base64 and base64url algorithms.","parameters":[{"name":"value","in":"query","description":"Encoded value to validate and decode exactly (1–8,192 characters); surrounding whitespace is invalid, not silently trimmed.","required":true,"schema":{"type":"string","minLength":1,"maxLength":8192},"example":"SGVsbG8sIEvDuGJlbmhhdm4g8J-Riw==","x-randomapi-param-group":"route"},{"name":"encoding","in":"query","description":"RFC 4648 alphabet to use: hexadecimal base16, base32, standard base64, or URL-safe base64url.","required":false,"schema":{"type":"string","enum":["base16","base32","base64","base64url"],"default":"base64"},"example":"base64url","x-randomapi-param-group":"route"},{"name":"output","in":"query","description":"Return decoded UTF-8 text, or an integer array for arbitrary binary bytes.","required":false,"schema":{"type":"string","enum":["text","bytes"],"default":"text"},"example":"bytes","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["input","encoding"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"input,encoding"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["padded"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"padded"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/BaseEncodingsDecodeEnvelope"},{"$ref":"#/components/schemas/BaseEncodingsDecodeRecord"}]},"example":{"data":{"input":"SGVsbG8=","encoding":"base64","output":"Hello","bytes":5,"validUtf8":true,"padded":true},"meta":{"endpoint":"base-encodings","route":"/decode","params":{"value":"SGVsbG8sIEvDuGJlbmhhdm4g8J-Riw==","encoding":"base64","output":"text"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Base encodings","url":"https://randomapi.dev/apis/base-encodings"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/bookings":{"get":{"operationId":"get_bookings_root","tags":["datetime"],"summary":"Generate coherent fictional booking lifecycles","description":"Generate coherent reservation lifecycles and deterministic IANA-timezone availability slots with exact capacity and DST behavior.","parameters":[{"name":"resource","in":"query","description":"Pin appointment, room, desk or rental, or allow any.","required":false,"schema":{"type":"string","enum":["appointment","room","desk","rental","any"],"default":"any"},"example":"appointment","x-randomapi-param-group":"route"},{"name":"status","in":"query","description":"Pin one exact lifecycle state, or allow any.","required":false,"schema":{"type":"string","enum":["pending","confirmed","checkedIn","completed","cancelled","noShow","any"],"default":"any"},"example":"confirmed","x-randomapi-param-group":"route"},{"name":"timezone","in":"query","description":"Case-insensitive canonical IANA timezone used for localStart/localEnd.","required":false,"schema":{"type":"string","minLength":1,"maxLength":100,"default":"UTC"},"example":"Europe/Copenhagen","x-randomapi-param-group":"route"},{"name":"partySize","in":"query","description":"Exact number of fictional attendees or guests.","required":false,"schema":{"type":"integer","minimum":1,"maximum":12,"default":2},"example":4,"x-randomapi-param-group":"route"},{"name":"minDurationMinutes","in":"query","description":"Minimum elapsed booking duration.","required":false,"schema":{"type":"integer","minimum":15,"maximum":480,"default":30},"example":60,"x-randomapi-param-group":"route"},{"name":"maxDurationMinutes","in":"query","description":"Maximum elapsed booking duration; must be at least minDurationMinutes.","required":false,"schema":{"type":"integer","minimum":15,"maximum":480,"default":120},"example":180,"x-randomapi-param-group":"route"},{"name":"windowDays","in":"query","description":"Past/future lifecycle horizon around asOf.","required":false,"schema":{"type":"integer","minimum":1,"maximum":90,"default":30},"example":14,"x-randomapi-param-group":"route"},{"name":"asOf","in":"query","description":"Replay instant controlling lifecycle state; defaults to the request clock and is echoed. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-10T12:00:00.000Z","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","resource"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,resource"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["cancellationReason"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"cancellationReason"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/BookingsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/BookingsRootRecord"}}]},"example":{"data":[{"id":"booking_fixture_0_a12b34c56d78ef","resource":{"id":"room_fixture_12ab34cd","type":"room","name":"Room 1"},"status":"confirmed","timezone":"Europe/Copenhagen","partySize":4,"start":"2026-07-12T08:00:00.000Z","end":"2026-07-12T09:00:00.000Z","localStart":"2026-07-12T10:00:00","localEnd":"2026-07-12T11:00:00","durationMinutes":60,"customer":{"id":"customer_fixture_12ab34cd","name":"Avery Jensen","email":"customer-a1b2c3d4@example.com"},"createdAt":"2026-07-01T08:00:00.000Z","confirmedAt":"2026-07-01T09:00:00.000Z","checkedInAt":null,"completedAt":null,"cancelledAt":null,"noShowAt":null,"cancellationReason":null}],"meta":{"endpoint":"bookings","count":1,"seed":42,"params":{"resource":"any","status":"any","timezone":"UTC","partySize":2,"minDurationMinutes":30,"maxDurationMinutes":120,"windowDays":30},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"booking_fixture_0_a12b34c56d78ef\",\"resource\":{\"id\":\"room_fixture_12ab34cd\",\"type\":\"room\",\"name\":\"Room 1\"},\"status\":\"confirmed\",\"timezone\":\"Europe/Copenhagen\",\"partySize\":4,\"start\":\"2026-07-12T08:00:00.000Z\",\"end\":\"2026-07-12T09:00:00.000Z\",\"localStart\":\"2026-07-12T10:00:00\",\"localEnd\":\"2026-07-12T11:00:00\",\"durationMinutes\":60,\"customer\":{\"id\":\"customer_fixture_12ab34cd\",\"name\":\"Avery Jensen\",\"email\":\"customer-a1b2c3d4@example.com\"},\"createdAt\":\"2026-07-01T08:00:00.000Z\",\"confirmedAt\":\"2026-07-01T09:00:00.000Z\",\"checkedInAt\":null,\"completedAt\":null,\"cancelledAt\":null,\"noShowAt\":null,\"cancellationReason\":null}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Booking fixtures","url":"https://randomapi.dev/apis/bookings"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/bookings/availability":{"get":{"operationId":"get_bookings_availability","tags":["datetime"],"summary":"Build deterministic timezone-aware availability slots","description":"Generate coherent reservation lifecycles and deterministic IANA-timezone availability slots with exact capacity and DST behavior.","parameters":[{"name":"date","in":"query","description":"Date-only local calendar value (YYYY-MM-DD), restricted to 1970–2100. Offset timestamps that resolve away from UTC midnight are rejected instead of changing the requested day. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":true,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-13","x-randomapi-param-group":"route"},{"name":"timezone","in":"query","description":"Case-insensitive canonical IANA timezone for the local date/window.","required":false,"schema":{"type":"string","minLength":1,"maxLength":100,"default":"UTC"},"example":"Europe/Copenhagen","x-randomapi-param-group":"route"},{"name":"resource","in":"query","description":"Fixture resource type used to derive capacity occupancy.","required":false,"schema":{"type":"string","enum":["appointment","room","desk","rental"],"default":"appointment"},"example":"room","x-randomapi-param-group":"route"},{"name":"openHour","in":"query","description":"Inclusive local opening hour.","required":false,"schema":{"type":"integer","minimum":0,"maximum":22,"default":9},"example":8,"x-randomapi-param-group":"route"},{"name":"closeHour","in":"query","description":"Exclusive local closing boundary; must exceed openHour.","required":false,"schema":{"type":"integer","minimum":1,"maximum":23,"default":17},"example":18,"x-randomapi-param-group":"route"},{"name":"slotMinutes","in":"query","description":"Start-time interval measured on the local wall clock.","required":false,"schema":{"type":"integer","minimum":15,"maximum":120,"default":30},"example":30,"x-randomapi-param-group":"route"},{"name":"durationMinutes","in":"query","description":"Exact elapsed duration; must fit inside opening hours.","required":false,"schema":{"type":"integer","minimum":15,"maximum":480,"default":60},"example":60,"x-randomapi-param-group":"route"},{"name":"capacity","in":"query","description":"Exact capacity shared by every slot.","required":false,"schema":{"type":"integer","minimum":1,"maximum":20,"default":1},"example":4,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["date","timezone"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"date,timezone"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["slots"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"slots"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/BookingsAvailabilityEnvelope"},{"$ref":"#/components/schemas/BookingsAvailabilityRecord"}]},"example":{"data":{"date":"2026-07-13","timezone":"Europe/Copenhagen","resource":"room","window":{"openHour":8,"closeHour":18,"slotMinutes":30,"durationMinutes":60},"slotCount":19,"availableCount":14,"slots":[{"start":"2026-07-13T06:00:00.000Z","end":"2026-07-13T07:00:00.000Z","localStart":"2026-07-13T08:00:00","localEnd":"2026-07-13T09:00:00","offsetMinutes":120,"capacity":4,"booked":1,"remaining":3,"available":true}]},"meta":{"endpoint":"bookings","route":"/availability","params":{"date":"2026-07-13","timezone":"UTC","resource":"appointment","openHour":9,"closeHour":17,"slotMinutes":30,"durationMinutes":60,"capacity":1},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Booking fixtures","url":"https://randomapi.dev/apis/bookings"},"x-randomapi-kind":"mock","x-randomapi-mode":"compute"}},"/api/business-days/add":{"get":{"operationId":"get_business_days_add","tags":["datetime"],"summary":"Add or subtract business days from a date","description":"Add, count or inspect business days using verified national public-holiday rules for 61 countries, including observed substitute days. Authoritative source: Computed from the platform's verified national public-holiday rules for 61 countries; each country's official statute or ministry page is cited by GET /api/holidays/countries.","parameters":[{"name":"country","in":"query","description":"ISO 3166-1 alpha-2 country code. Supported: AM, AR, AT, AU, BE, BG, BO, BR, BY, CA, CH, CO, CY, CZ, DE, DK, EE, ES, FI, FR, GB, GR, GT, HR, HU, IE, IN, IS, IT, JP, KE, KR, KZ, LI, LT, LU, LV, MA, MT, MX, NG, NL, NO, NZ, PA, PE, PH, PL, PT, RO, RS, SE, SG, SI, SK, SM, TH, TR, UA, US, ZA.","required":true,"schema":{"type":"string","minLength":2,"maxLength":2},"example":"US","x-randomapi-param-group":"route"},{"name":"start","in":"query","description":"Starting UTC calendar date (2020–2052). Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":true,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-02","x-randomapi-param-group":"route"},{"name":"days","in":"query","description":"Signed number of business days to move (-2,600–2,600).","required":true,"schema":{"type":"integer","minimum":-2600,"maximum":2600},"example":1,"x-randomapi-param-group":"route"},{"name":"includeStart","in":"query","description":"Count start as the first day when it is a business day. days=0 still returns start. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["country","countryName"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"country,countryName"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["holidaysSkipped"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"holidaysSkipped"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/BusinessDaysAddEnvelope"},{"$ref":"#/components/schemas/BusinessDaysAddRecord"}]},"example":{"data":{"country":"US","countryName":"United States","start":"2026-07-02","days":1,"includeStart":false,"result":"2026-07-06","calendarDays":4,"weekendsSkipped":2,"holidaysSkipped":1},"meta":{"endpoint":"business-days","route":"/add","params":{"country":"US","start":"2026-07-02","days":1,"includeStart":false},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Business days","url":"https://randomapi.dev/apis/business-days"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/business-days/between":{"get":{"operationId":"get_business_days_between","tags":["datetime"],"summary":"Count business days in a date range","description":"Add, count or inspect business days using verified national public-holiday rules for 61 countries, including observed substitute days. Authoritative source: Computed from the platform's verified national public-holiday rules for 61 countries; each country's official statute or ministry page is cited by GET /api/holidays/countries.","parameters":[{"name":"country","in":"query","description":"ISO 3166-1 alpha-2 country code. Supported: AM, AR, AT, AU, BE, BG, BO, BR, BY, CA, CH, CO, CY, CZ, DE, DK, EE, ES, FI, FR, GB, GR, GT, HR, HU, IE, IN, IS, IT, JP, KE, KR, KZ, LI, LT, LU, LV, MA, MT, MX, NG, NL, NO, NZ, PA, PE, PH, PL, PT, RO, RS, SE, SG, SI, SK, SM, TH, TR, UA, US, ZA.","required":true,"schema":{"type":"string","minLength":2,"maxLength":2},"example":"US","x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Range start (2020–2052). Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":true,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Range end (2020–2052); must be on or after from. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":true,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-08","x-randomapi-param-group":"route"},{"name":"includeStart","in":"query","description":"Include from in the interval when it is a business day. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":false,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"includeEnd","in":"query","description":"Include to in the interval when it is a business day. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["country","countryName"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"country,countryName"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["holidaysExcluded"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"holidaysExcluded"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/BusinessDaysBetweenEnvelope"},{"$ref":"#/components/schemas/BusinessDaysBetweenRecord"}]},"example":{"data":{"country":"US","countryName":"United States","from":"2026-07-01","to":"2026-07-08","includeStart":true,"includeEnd":false,"businessDays":4,"daysExamined":7,"weekendsExcluded":2,"holidaysExcluded":1},"meta":{"endpoint":"business-days","route":"/between","params":{"country":"US","from":"2026-07-01","to":"2026-07-08","includeStart":true,"includeEnd":false},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Business days","url":"https://randomapi.dev/apis/business-days"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/business-days/calendar":{"get":{"operationId":"get_business_days_calendar","tags":["datetime"],"summary":"Inspect an inclusive business-day calendar with exact totals","description":"Returns one row per UTC calendar date. Weekend rows remain weekends even when a public holiday falls there; actual and observed public-holiday labels stay visible in `holidays`. Authoritative source: Computed from the platform's verified national public-holiday rules for 61 countries; each country's official statute or ministry page is cited by GET /api/holidays/countries.","parameters":[{"name":"country","in":"query","description":"ISO 3166-1 alpha-2 country code. Supported: AM, AR, AT, AU, BE, BG, BO, BR, BY, CA, CH, CO, CY, CZ, DE, DK, EE, ES, FI, FR, GB, GR, GT, HR, HU, IE, IN, IS, IT, JP, KE, KR, KZ, LI, LT, LU, LV, MA, MT, MX, NG, NL, NO, NZ, PA, PE, PH, PL, PT, RO, RS, SE, SG, SI, SK, SM, TH, TR, UA, US, ZA.","required":true,"schema":{"type":"string","minLength":2,"maxLength":2},"example":"US","x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"First included UTC calendar date (2020–2052). Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":true,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2021-12-30","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Last included UTC calendar date; the inclusive range may contain at most 366 dates. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":true,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2022-01-03","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["country","countryName"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"country,countryName"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["days"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"days"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/BusinessDaysCalendarEnvelope"},{"$ref":"#/components/schemas/BusinessDaysCalendarRecord"}]},"example":{"data":{"country":"US","countryName":"United States","from":"2021-12-30","to":"2022-01-03","totalDays":5,"businessDays":2,"weekendDays":2,"holidayDays":1,"days":[{"date":"2021-12-31","weekday":"Friday","classification":"holiday","holidays":[{"name":"New Year's Day","localName":"New Year's Day","observed":true,"actualDate":"2022-01-01"}]}]},"meta":{"endpoint":"business-days","route":"/calendar","params":{"country":"US","from":"2021-12-30","to":"2022-01-03"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Business days","url":"https://randomapi.dev/apis/business-days"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/calendar-events":{"get":{"operationId":"get_calendar_events_root","tags":["datetime"],"summary":"Generate timed or all-day calendar event fixtures","description":"Generate coherent fake calendar events with bounded durations, attendees, IANA timezones and correct timed or all-day date shapes.","parameters":[{"name":"status","in":"query","description":"Only generate this event status. Omit for a mix.","required":false,"schema":{"type":"string","enum":["confirmed","tentative","cancelled"]},"example":"confirmed","x-randomapi-param-group":"route"},{"name":"allDay","in":"query","description":"False produces timed ISO instants; true produces YYYY-MM-DD dates with exclusive end. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"timezone","in":"query","description":"Canonical runtime IANA timezone id (plus UTC), matched case-insensitively and used as display metadata. Numeric offsets are rejected.","required":false,"schema":{"type":"string","minLength":1,"maxLength":100,"default":"UTC"},"example":"Europe/Copenhagen","x-randomapi-param-group":"route"},{"name":"minDurationMinutes","in":"query","description":"Minimum duration. Defaults to 30 timed or 1440 all-day; all-day values must be multiples of 1440.","required":false,"schema":{"type":"integer","minimum":1,"maximum":43200},"example":60,"x-randomapi-param-group":"route"},{"name":"maxDurationMinutes","in":"query","description":"Maximum duration. Defaults to 120 timed or 4320 all-day; must be ≥ minDurationMinutes.","required":false,"schema":{"type":"integer","minimum":1,"maximum":43200},"example":180,"x-randomapi-param-group":"route"},{"name":"attendeeCount","in":"query","description":"Exact number of fictional attendees on every event.","required":false,"schema":{"type":"integer","minimum":0,"maximum":20,"default":3},"example":5,"x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Earliest allowed start, inclusive. With neither bound defaults to today's UTC midnight; with only to derives to minus 90 days. Must resolve to UTC midnight for all-day events (use YYYY-MM-DD). Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-06-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Latest allowed end, inclusive for timed events and exclusive for all-day events. With only from derives from plus 90 days. Must resolve to UTC midnight for all-day events (use YYYY-MM-DD). Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-06-30","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","title"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,title"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["attendees"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"attendees"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CalendarEventsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CalendarEventsRootRecord"}}]},"example":{"data":[{"id":"8f76e7de-67dd-49e0-a7c1-43f575cc3381","title":"Product planning","description":"Review priorities, owners and delivery risks for the next iteration.","status":"confirmed","start":"2026-06-10T09:00:00.000Z","end":"2026-06-10T10:00:00.000Z","timezone":"Europe/Copenhagen","allDay":false,"location":"Video call","organizer":{"name":"Jordan Lee","email":"jordan.lee@example.com"},"attendees":[{"name":"Alex Kim","email":"alex.kim@example.net","response":"accepted"}]}],"meta":{"endpoint":"calendar-events","count":1,"seed":42,"params":{"allDay":false,"timezone":"UTC","attendeeCount":3},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"8f76e7de-67dd-49e0-a7c1-43f575cc3381\",\"title\":\"Product planning\",\"description\":\"Review priorities, owners and delivery risks for the next iteration.\",\"status\":\"confirmed\",\"start\":\"2026-06-10T09:00:00.000Z\",\"end\":\"2026-06-10T10:00:00.000Z\",\"timezone\":\"Europe/Copenhagen\",\"allDay\":false,\"location\":\"Video call\",\"organizer\":{\"name\":\"Jordan Lee\",\"email\":\"jordan.lee@example.com\"},\"attendees\":[{\"name\":\"Alex Kim\",\"email\":\"alex.kim@example.net\",\"response\":\"accepted\"}]}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Calendar event fixtures","url":"https://randomapi.dev/apis/calendar-events"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/charts/sparkline":{"get":{"operationId":"get_charts_sparkline","tags":["design"],"summary":"Render a sparkline SVG from a series of numbers","description":"Returns the chart itself (`image/svg+xml`), not JSON. The series is normalized into the canvas with 8% padding; line/area can be smoothed, bars are zero-based.","parameters":[{"name":"data","in":"query","description":"Comma-separated numeric series to plot: 2–100 values, decimals and negatives allowed. Any non-numeric item is a 400 naming the item. Serialized as one comma-separated query value.","required":true,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["1","4","2","8"],"style":"form","explode":false,"x-randomapi-param-group":"route","x-randomapi-query-example":"1,4,2,8"},{"name":"type","in":"query","description":"Chart style: 'line' = stroked polyline, 'area' = line plus 18%-opacity fill to the baseline, 'bar' = one rect per value growing from the zero line.","required":false,"schema":{"type":"string","enum":["line","area","bar"],"default":"line"},"example":"area","x-randomapi-param-group":"route"},{"name":"width","in":"query","description":"Image width in pixels (60–1200).","required":false,"schema":{"type":"integer","minimum":60,"maximum":1200,"default":300},"example":400,"x-randomapi-param-group":"route"},{"name":"height","in":"query","description":"Image height in pixels (24–400).","required":false,"schema":{"type":"integer","minimum":24,"maximum":400,"default":80},"example":120,"x-randomapi-param-group":"route"},{"name":"color","in":"query","description":"Stroke/fill color as exactly 6 hex digits without '#' (e.g. 0ea5e9). Anything else is a 400. Default b4540a (copper).","required":false,"schema":{"type":"string","default":"b4540a"},"example":"0ea5e9","x-randomapi-param-group":"route"},{"name":"smooth","in":"query","description":"Draw line/area with quadratic curves through segment midpoints instead of straight segments. Ignored for type=bar. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"}],"responses":{"200":{"description":"SVG image generated from the validated query parameters.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"Cache-Control":{"$ref":"#/components/headers/ImageCacheControl"}},"content":{"image/svg+xml":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Chart placeholders","url":"https://randomapi.dev/apis/charts"},"x-randomapi-kind":"mock","x-randomapi-mode":"image"}},"/api/check-digits":{"get":{"operationId":"get_check_digits_root","tags":["developer"],"summary":"List the supported check-digit schemes","description":"One record per scheme with its algorithm, alphabet, length rules, applicability scope, error-detection limits and specification reference. Authoritative source: Published check-digit algorithms: GS1 General Specifications, ISO/IEC 7064, ISO/IEC 7812-1, ISO 2108, ISO 3297, ISO 6166, ISO 10957, ISO 17442, ISO 3779 with 49 CFR 565.15, 3GPP TS 23.003, ANSI X9 and CMS — each cited per scheme.","parameters":[{"name":"search","in":"query","description":"Case-insensitive filter: any substring of the scheme id or name, or the start of any word in the algorithm description (so 'luhn' also finds imei, npi and isin). No match returns an empty list plus a warning — never a substitute scheme.","required":false,"schema":{"type":"string","minLength":1,"maxLength":40},"example":"isbn","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to 20.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":20},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["scheme","name"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"scheme,name"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["meaning"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"meaning"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CheckDigitsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CheckDigitsRootRecord"}}]},"example":{"data":[{"scheme":"gtin13","name":"GTIN-13 (EAN-13)","algorithm":"GS1 modulo-10: weights 3 and 1 alternating from the right, subtracted from the next multiple of ten","alphabet":"0-9","lengths":[13],"minLength":13,"checkCharacters":1,"checkAlphabet":"0-9","checkPosition":"last character","scope":"Global GS1 key, printed as an EAN-13 symbol.","strictRules":null,"detectsAllSingleCharacterErrors":true,"undetectedSubstitutions":null,"detectsAllAdjacentTranspositions":false,"undetectedTranspositions":"Swapping two adjacent digits whose values differ by five is undetected (05↔50, 16↔61, 27↔72, 38↔83, 49↔94). Every other adjacent transposition changes the check digit.","specification":"GS1 General Specifications — check-digit calculation","specificationUrl":"https://www.gs1.org/standards/barcodes/ean-upc","meaning":"A correct check digit means the digits are internally consistent. It does not mean the GTIN has been allocated to a company or assigned to a product — this endpoint queries no GS1 registry and holds no product catalogue."}],"meta":{"endpoint":"check-digits","count":1,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"scheme\":\"gtin13\",\"name\":\"GTIN-13 (EAN-13)\",\"algorithm\":\"GS1 modulo-10: weights 3 and 1 alternating from the right, subtracted from the next multiple of ten\",\"alphabet\":\"0-9\",\"lengths\":[13],\"minLength\":13,\"checkCharacters\":1,\"checkAlphabet\":\"0-9\",\"checkPosition\":\"last character\",\"scope\":\"Global GS1 key, printed as an EAN-13 symbol.\",\"strictRules\":null,\"detectsAllSingleCharacterErrors\":true,\"undetectedSubstitutions\":null,\"detectsAllAdjacentTranspositions\":false,\"undetectedTranspositions\":\"Swapping two adjacent digits whose values differ by five is undetected (05↔50, 16↔61, 27↔72, 38↔83, 49↔94). Every other adjacent transposition changes the check digit.\",\"specification\":\"GS1 General Specifications — check-digit calculation\",\"specificationUrl\":\"https://www.gs1.org/standards/barcodes/ean-upc\",\"meaning\":\"A correct check digit means the digits are internally consistent. It does not mean the GTIN has been allocated to a company or assigned to a product — this endpoint queries no GS1 registry and holds no product catalogue.\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Check digit validator & calculator","url":"https://randomapi.dev/apis/check-digits"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/check-digits/validate":{"get":{"operationId":"get_check_digits_validate","tags":["developer"],"summary":"Check an identifier's check character and name the failing rule","description":"Returns a structured verdict for any input: malformed values produce valid=false with ordered reason codes, never an error page. Authoritative source: Published check-digit algorithms: GS1 General Specifications, ISO/IEC 7064, ISO/IEC 7812-1, ISO 2108, ISO 3297, ISO 6166, ISO 10957, ISO 17442, ISO 3779 with 49 CFR 565.15, 3GPP TS 23.003, ANSI X9 and CMS — each cited per scheme.","parameters":[{"name":"scheme","in":"query","description":"Identifier scheme to apply. 'upca' is an alias for 'gtin12'. 'npi' and 'aba' are United States schemes, and the 'vin' check character is only enforced where the world manufacturer identifier's ISO 3780 region block is North American (1-5) or Chinese (L).","required":true,"schema":{"type":"string","enum":["luhn","gtin8","gtin12","gtin13","gtin14","upca","isbn10","isbn13","issn","ismn","imei","isin","lei","vin","npi","aba","iso7064-mod11-2","iso7064-mod11-10","iso7064-mod97-10"]},"example":"isbn13","x-randomapi-param-group":"route"},{"name":"value","in":"query","description":"The identifier to check, with or without spaces and hyphens. Whitespace is preserved when normalize=false so it shows up as an invalid character.","required":true,"schema":{"type":"string","minLength":1,"maxLength":64},"example":"978-0-306-40615-7","x-randomapi-param-group":"route"},{"name":"normalize","in":"query","description":"Remove ASCII spaces and hyphens before checking. ASCII letters are uppercased either way, because every scheme's alphabet is uppercase-only. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"strict","in":"query","description":"Also enforce the scheme's structural rules (prefixes, VIN model-year code, Federal Reserve routing symbol). Schemes with no further rules answer with a warning. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["scheme","canonicalScheme"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"scheme,canonicalScheme"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["notes"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"notes"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CheckDigitsValidateEnvelope"},{"$ref":"#/components/schemas/CheckDigitsValidateRecord"}]},"example":{"data":{"scheme":"isbn13","canonicalScheme":"isbn13","input":"978-0-306-40615-7","normalized":"9780306406157","valid":true,"reasons":[],"payload":"978030640615","checkCharacter":"7","expectedCheckCharacter":"7","checkCharacterValid":true,"checkDigitApplicable":true,"actualLength":13,"expectedLengths":[13],"minLength":13,"invalidCharacters":[{"index":4,"character":"#"}],"algorithm":"GS1 modulo-10 over the thirteen-digit Bookland EAN (weights 3 and 1 alternating from the right)","scope":"Global.","notes":[]},"meta":{"endpoint":"check-digits","route":"/validate","params":{"scheme":"isbn13","value":"978-0-306-40615-7","normalize":true,"strict":false},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Check digit validator & calculator","url":"https://randomapi.dev/apis/check-digits"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/check-digits/compute":{"get":{"operationId":"get_check_digits_compute","tags":["developer"],"summary":"Return the check character a payload is missing","description":"Takes the identifier without its check character(s) and returns both the character and the completed value. A malformed payload answers computable=false with reason codes. Authoritative source: Published check-digit algorithms: GS1 General Specifications, ISO/IEC 7064, ISO/IEC 7812-1, ISO 2108, ISO 3297, ISO 6166, ISO 10957, ISO 17442, ISO 3779 with 49 CFR 565.15, 3GPP TS 23.003, ANSI X9 and CMS — each cited per scheme.","parameters":[{"name":"scheme","in":"query","description":"Identifier scheme to apply. 'upca' is an alias for 'gtin12'. 'npi' and 'aba' are United States schemes, and the 'vin' check character is only enforced where the world manufacturer identifier's ISO 3780 region block is North American (1-5) or Chinese (L).","required":true,"schema":{"type":"string","enum":["luhn","gtin8","gtin12","gtin13","gtin14","upca","isbn10","isbn13","issn","ismn","imei","isin","lei","vin","npi","aba","iso7064-mod11-2","iso7064-mod11-10","iso7064-mod97-10"]},"example":"gtin13","x-randomapi-param-group":"route"},{"name":"value","in":"query","description":"The payload without its check character(s) — twelve digits for a GTIN-13, nine for an ISBN-10 or NPI, eighteen for a LEI. For a VIN, pass either the sixteen characters around position 9 or a full seventeen-character VIN whose position 9 is a placeholder.","required":true,"schema":{"type":"string","minLength":1,"maxLength":64},"example":"590123412345","x-randomapi-param-group":"route"},{"name":"normalize","in":"query","description":"Remove ASCII spaces and hyphens before checking. ASCII letters are uppercased either way, because every scheme's alphabet is uppercase-only. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["scheme","canonicalScheme"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"scheme,canonicalScheme"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["notes"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"notes"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CheckDigitsComputeEnvelope"},{"$ref":"#/components/schemas/CheckDigitsComputeRecord"}]},"example":{"data":{"scheme":"gtin13","canonicalScheme":"gtin13","input":"590123412345","payload":"590123412345","checkCharacter":"7","value":"5901234123457","computable":true,"reasons":[],"invalidCharacters":[{"index":4,"character":"#"}],"expectedPayloadLengths":[12],"actualPayloadLength":12,"checkDigitApplicable":true,"algorithm":"GS1 modulo-10: weights 3 and 1 alternating from the right, subtracted from the next multiple of ten","scope":"Global GS1 key, printed as an EAN-13 symbol.","notes":[]},"meta":{"endpoint":"check-digits","route":"/compute","params":{"scheme":"gtin13","value":"590123412345","normalize":true},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Check digit validator & calculator","url":"https://randomapi.dev/apis/check-digits"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/check-digits/convert":{"get":{"operationId":"get_check_digits_convert","tags":["developer"],"summary":"Convert between equivalent GTIN and ISBN forms","description":"Detects the source form from its length, verifies its own check character, then re-expresses it as the target and recomputes the check character. Authoritative source: Published check-digit algorithms: GS1 General Specifications, ISO/IEC 7064, ISO/IEC 7812-1, ISO 2108, ISO 3297, ISO 6166, ISO 10957, ISO 17442, ISO 3779 with 49 CFR 565.15, 3GPP TS 23.003, ANSI X9 and CMS — each cited per scheme.","parameters":[{"name":"value","in":"query","description":"Source identifier: a GTIN-8, ISBN-10, GTIN-12/UPC-A, GTIN-13/ISBN-13 or GTIN-14. Spaces and hyphens are always removed. Its own check character must be correct.","required":true,"schema":{"type":"string","minLength":1,"maxLength":64},"example":"036000291452","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Target form. Conversions that do not exist — a GTIN-14 above indicator 0, a GTIN-13 without a leading zero to UPC-A, a 979-prefixed ISBN-13 to ISBN-10 — return a 400 explaining why.","required":true,"schema":{"type":"string","enum":["gtin13","gtin14","upca","isbn10","isbn13"]},"example":"gtin13","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["input","normalized"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"input,normalized"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["notes"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"notes"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CheckDigitsConvertEnvelope"},{"$ref":"#/components/schemas/CheckDigitsConvertRecord"}]},"example":{"data":{"input":"036000291452","normalized":"036000291452","sourceForm":"gtin12","sourceCheckCharacter":"2","to":"gtin13","value":"0036000291452","checkCharacter":"2","checkCharacterChanged":false,"notes":[]},"meta":{"endpoint":"check-digits","route":"/convert","params":{"value":"036000291452","to":"gtin13"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Check digit validator & calculator","url":"https://randomapi.dev/apis/check-digits"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/ci-runs":{"get":{"operationId":"get_ci_runs_root","tags":["developer"],"summary":"Generate compact fictional CI run hierarchies","description":"Generate compact, coherent CI run fixtures with run-derived job conclusions, ordered steps, safe commits and exact lifecycle dates.","parameters":[{"name":"status","in":"query","description":"Pin every run to this exact lifecycle/result state.","required":false,"schema":{"type":"string","enum":["queued","inProgress","success","failure","cancelled"]},"example":"failure","x-randomapi-param-group":"route"},{"name":"pipeline","in":"query","description":"Pin the job-name set to ci, release or docs.","required":false,"schema":{"type":"string","enum":["ci","release","docs"]},"example":"ci","x-randomapi-param-group":"route"},{"name":"trigger","in":"query","description":"Pin the fictional run trigger.","required":false,"schema":{"type":"string","enum":["push","pullRequest","manual","schedule"]},"example":"pullRequest","x-randomapi-param-group":"route"},{"name":"branch","in":"query","description":"Use this resolved branch value in every record.","required":false,"schema":{"type":"string","minLength":1,"maxLength":60},"example":"feature/example-checkout","x-randomapi-param-group":"route"},{"name":"minJobs","in":"query","description":"Minimum jobs per run, inclusive.","required":false,"schema":{"type":"integer","minimum":1,"maximum":3,"default":2},"example":2,"x-randomapi-param-group":"route"},{"name":"maxJobs","in":"query","description":"Maximum jobs per run, inclusive; must be ≥ minJobs.","required":false,"schema":{"type":"integer","minimum":1,"maximum":3,"default":3},"example":3,"x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Earliest creation time. With only from, to resolves 30 elapsed days later; with neither, defaults 30 UTC days before today. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-03-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Latest creation time. With only to, from resolves 30 elapsed days earlier; with neither, defaults to today's UTC end. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-03-31T23:59:59.999Z","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","runNumber"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,runNumber"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["artifacts"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"artifacts"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CiRunsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CiRunsRootRecord"}}]},"example":{"data":[{"id":"run_836f2c4ac196_00","runNumber":1842,"pipeline":"ci","trigger":"pullRequest","branch":"feature/example-checkout","commit":{"sha":"0123456789abcdef0123456789abcdef01234567","message":"test: cover checkout flow","authorName":"Avery Chen","authorEmail":"avery@example.com"},"status":"failure","createdAt":"2026-03-12T08:00:00.000Z","startedAt":"2026-03-12T08:00:04.000Z","completedAt":"2026-03-12T08:02:20.000Z","durationSeconds":136,"jobs":[{"id":"run_demo_job1","name":"test","status":"completed","conclusion":"success","startedAt":"2026-03-12T08:00:04.000Z","completedAt":"2026-03-12T08:01:00.000Z","durationSeconds":56,"steps":[]}],"artifacts":[]}],"meta":{"endpoint":"ci-runs","count":1,"seed":42,"params":{"minJobs":2,"maxJobs":3},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"run_836f2c4ac196_00\",\"runNumber\":1842,\"pipeline\":\"ci\",\"trigger\":\"pullRequest\",\"branch\":\"feature/example-checkout\",\"commit\":{\"sha\":\"0123456789abcdef0123456789abcdef01234567\",\"message\":\"test: cover checkout flow\",\"authorName\":\"Avery Chen\",\"authorEmail\":\"avery@example.com\"},\"status\":\"failure\",\"createdAt\":\"2026-03-12T08:00:00.000Z\",\"startedAt\":\"2026-03-12T08:00:04.000Z\",\"completedAt\":\"2026-03-12T08:02:20.000Z\",\"durationSeconds\":136,\"jobs\":[{\"id\":\"run_demo_job1\",\"name\":\"test\",\"status\":\"completed\",\"conclusion\":\"success\",\"startedAt\":\"2026-03-12T08:00:04.000Z\",\"completedAt\":\"2026-03-12T08:01:00.000Z\",\"durationSeconds\":56,\"steps\":[]}],\"artifacts\":[]}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for CI run fixtures","url":"https://randomapi.dev/apis/ci-runs"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/cities":{"get":{"operationId":"get_cities_root","tags":["geo"],"summary":"List world cities (filter by country, division, timezone, size, elevation, name or capital status)","description":"Returns matching places from the pinned 31,793-place GeoNames snapshot, ordered by population or name. A page holds at most 100 records; use offset to walk further. Authoritative sources: GeoNames cities15000 dump (CC BY 4.0); GeoNames cities500 dump — small-country depth (CC BY 4.0); GeoNames admin1 code list — first-order division names; English country names joined from this project's ISO 3166-1 country dataset (Natural Earth + countries-list).","parameters":[{"name":"country","in":"query","description":"Only cities in this country (ISO 3166-1 alpha-2, case-insensitive — dk and DK both work). A valid two-letter code with no cities in the set returns an empty list; anything that isn't two letters is a 400.","required":false,"schema":{"type":"string"},"example":"DK","x-randomapi-param-group":"route"},{"name":"admin1","in":"query","description":"Only cities in this first-order division (state, province, region…), matched on the published GeoNames spelling ignoring case and diacritics. A division that is not in the snapshot returns an empty list with a warning.","required":false,"schema":{"type":"string"},"example":"Bavaria","x-randomapi-param-group":"route"},{"name":"timezone","in":"query","description":"Only cities whose GeoNames IANA time zone is this one, matched case-insensitively and echoed canonically. A real IANA zone that no place here uses returns an empty list with a warning; a string that is not a zone identifier is a 400.","required":false,"schema":{"type":"string"},"example":"Europe/Copenhagen","x-randomapi-param-group":"route"},{"name":"featureCode","in":"query","description":"Pin GeoNames' own classification: PPL (plain populated place), PPLC (capital of a political entity), PPLA–PPLA5 (seat of a first- to fifth-order administrative division), and the rarer PPLF/PPLG/PPLL/PPLR/PPLS/STLMT. any keeps every classification.","required":false,"schema":{"type":"string","enum":["any","PPL","PPLA","PPLA2","PPLA3","PPLA4","PPLA5","PPLC","PPLF","PPLG","PPLL","PPLR","PPLS","STLMT"],"default":"any"},"example":"PPLA","x-randomapi-param-group":"route"},{"name":"search","in":"query","description":"Only cities whose name or GeoNames ASCII alias contains this text — case-, diacritic- and apostrophe-insensitive (sao matches São Paulo, xian matches Xi’an).","required":false,"schema":{"type":"string"},"example":"york","x-randomapi-param-group":"route"},{"name":"minPopulation","in":"query","description":"Only cities whose GeoNames population is ≥ this value. Places with no published population are excluded, since an unknown figure cannot be shown to clear the bar.","required":false,"schema":{"type":"integer","minimum":0},"example":1000000,"x-randomapi-param-group":"route"},{"name":"minDemElevation","in":"query","description":"Only cities whose MODELLED demElevation is ≥ this many metres. It filters demElevation, not the sparse source-stated elevation column, and places with no modelled value are excluded.","required":false,"schema":{"type":"integer","minimum":-500,"maximum":9000},"example":1000,"x-randomapi-param-group":"route"},{"name":"maxDemElevation","in":"query","description":"Only cities whose MODELLED demElevation is ≤ this many metres. Must be ≥ minDemElevation when both are given, or the request is a 400.","required":false,"schema":{"type":"integer","minimum":-500,"maximum":9000},"example":10,"x-randomapi-param-group":"route"},{"name":"capital","in":"query","description":"true = only places GeoNames codes PPLC — the capital of a political entity, which includes the capitals of dependent territories (Douglas, Tórshavn), not only sovereign states; false = only non-capitals; omit for both. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean"},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"sort","in":"query","description":"population = largest first, unknown populations last; name = A→Z (diacritic-insensitive).","required":false,"schema":{"type":"string","enum":["population","name"],"default":"population"},"example":"name","x-randomapi-param-group":"route"},{"name":"offset","in":"query","description":"Skip this many matches before count is applied, so you can page through large results (offset=100 with count=100 returns the second hundred).","required":false,"schema":{"type":"integer","minimum":0,"maximum":100000,"default":0},"example":100,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to 25.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["name","asciiName"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"name,asciiName"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["isCapital"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"isCapital"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CitiesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CitiesRootRecord"}}]},"example":{"data":[{"name":"Copenhagen","asciiName":"Copenhagen","country":"Denmark","countryCode":"DK","admin1":"Capital Region","latitude":55.6759,"longitude":12.5655,"timezone":"Europe/Copenhagen","population":1153615,"elevation":10,"demElevation":14,"featureCode":"PPLC","isCapital":true}],"meta":{"endpoint":"cities","count":1,"params":{"featureCode":"any","sort":"population","offset":0},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"name\":\"Copenhagen\",\"asciiName\":\"Copenhagen\",\"country\":\"Denmark\",\"countryCode\":\"DK\",\"admin1\":\"Capital Region\",\"latitude\":55.6759,\"longitude\":12.5655,\"timezone\":\"Europe/Copenhagen\",\"population\":1153615,\"elevation\":10,\"demElevation\":14,\"featureCode\":\"PPLC\",\"isCapital\":true}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Cities","url":"https://randomapi.dev/apis/cities"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/cities/search":{"get":{"operationId":"get_cities_search","tags":["geo"],"summary":"Autocomplete-ranked city search: prefix matches first, then contains matches, each by population","description":"Ranked name search over the pinned 31,793-place snapshot. Places whose name or ASCII alias STARTS WITH the query rank above places that merely contain it, and both groups are ordered by population descending — the order an autocomplete wants. Matching ignores case, diacritics and apostrophes. At most 100 records come back. Authoritative sources: GeoNames cities15000 dump (CC BY 4.0); GeoNames cities500 dump — small-country depth (CC BY 4.0); GeoNames admin1 code list — first-order division names; English country names joined from this project's ISO 3166-1 country dataset (Natural Earth + countries-list).","parameters":[{"name":"q","in":"query","description":"The text to match against the place name and its GeoNames ASCII alias, ignoring case, diacritics and apostrophes. koeln matches Köln's alias Koeln, xian matches Xi’an. An empty or whitespace-only value is a 400.","required":true,"schema":{"type":"string"},"example":"roch","x-randomapi-param-group":"route"},{"name":"country","in":"query","description":"Only cities in this country (ISO 3166-1 alpha-2, case-insensitive — dk and DK both work). A valid two-letter code with no cities in the set returns an empty list; anything that isn't two letters is a 400.","required":false,"schema":{"type":"string"},"example":"DK","x-randomapi-param-group":"route"},{"name":"minPopulation","in":"query","description":"Only cities whose GeoNames population is ≥ this value. Places with no published population are excluded, since an unknown figure cannot be shown to clear the bar.","required":false,"schema":{"type":"integer","minimum":0},"example":1000000,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to 10.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["name","asciiName"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"name,asciiName"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["isCapital"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"isCapital"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CitiesSearchEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CitiesSearchRecord"}}]},"example":{"data":[{"name":"Copenhagen","asciiName":"Copenhagen","country":"Denmark","countryCode":"DK","admin1":"Capital Region","latitude":55.6759,"longitude":12.5655,"timezone":"Europe/Copenhagen","population":1153615,"elevation":10,"demElevation":14,"featureCode":"PPLC","isCapital":true}],"meta":{"endpoint":"cities","route":"/search","count":1,"params":{"q":"roch"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"name\":\"Copenhagen\",\"asciiName\":\"Copenhagen\",\"country\":\"Denmark\",\"countryCode\":\"DK\",\"admin1\":\"Capital Region\",\"latitude\":55.6759,\"longitude\":12.5655,\"timezone\":\"Europe/Copenhagen\",\"population\":1153615,\"elevation\":10,\"demElevation\":14,\"featureCode\":\"PPLC\",\"isCapital\":true}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Cities","url":"https://randomapi.dev/apis/cities"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/cities/nearest":{"get":{"operationId":"get_cities_nearest","tags":["geo"],"summary":"Find the nearest cities to a coordinate","description":"Ranks the pinned 31,793-place snapshot by great-circle distance on the mean-Earth sphere. A bounding-box prefilter narrows the candidates before any trigonometry, and optional country, size and radius filters apply before count. At most 100 records come back. Authoritative sources: GeoNames cities15000 dump (CC BY 4.0); GeoNames cities500 dump — small-country depth (CC BY 4.0); GeoNames admin1 code list — first-order division names; English country names joined from this project's ISO 3166-1 country dataset (Natural Earth + countries-list).","parameters":[{"name":"lat","in":"query","description":"Search-point latitude in WGS84 decimal degrees (-90 to 90).","required":true,"schema":{"type":"number","minimum":-90,"maximum":90},"example":48.8566,"x-randomapi-param-group":"route"},{"name":"lng","in":"query","description":"Search-point longitude in WGS84 decimal degrees (-180 to 180).","required":true,"schema":{"type":"number","minimum":-180,"maximum":180},"example":2.3522,"x-randomapi-param-group":"route"},{"name":"maxDistanceKm","in":"query","description":"Optional maximum great-circle distance in kilometers. Omit it to rank outward from the point with no limit until count is satisfied.","required":false,"schema":{"type":"number","minimum":0,"maximum":20020},"example":100,"x-randomapi-param-group":"route"},{"name":"country","in":"query","description":"Only cities in this country (ISO 3166-1 alpha-2, case-insensitive — dk and DK both work). A valid two-letter code with no cities in the set returns an empty list; anything that isn't two letters is a 400.","required":false,"schema":{"type":"string"},"example":"DK","x-randomapi-param-group":"route"},{"name":"minPopulation","in":"query","description":"Optional floor on the GeoNames population, so you can ask for the nearest sizeable city rather than the nearest village. Places with no published figure are excluded.","required":false,"schema":{"type":"integer","minimum":0},"example":500000,"x-randomapi-param-group":"route"},{"name":"capital","in":"query","description":"true = rank only places GeoNames codes PPLC — capitals of political entities, dependent territories included, so the nearest one to a North Sea point is Douglas on the Isle of Man; false = exclude them; omit for both. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean"},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to 10.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["name","asciiName"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"name,asciiName"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["radiusMeters"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"radiusMeters"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CitiesNearestEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CitiesNearestRecord"}}]},"example":{"data":[{"name":"Copenhagen","asciiName":"Copenhagen","country":"Denmark","countryCode":"DK","admin1":"Capital Region","latitude":55.6759,"longitude":12.5655,"timezone":"Europe/Copenhagen","population":1153615,"elevation":10,"demElevation":14,"featureCode":"PPLC","isCapital":true,"distanceKm":0,"model":"mean-earth-sphere","radiusMeters":6371008.8}],"meta":{"endpoint":"cities","route":"/nearest","count":1,"params":{"lat":48.8566,"lng":2.3522},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"name\":\"Copenhagen\",\"asciiName\":\"Copenhagen\",\"country\":\"Denmark\",\"countryCode\":\"DK\",\"admin1\":\"Capital Region\",\"latitude\":55.6759,\"longitude\":12.5655,\"timezone\":\"Europe/Copenhagen\",\"population\":1153615,\"elevation\":10,\"demElevation\":14,\"featureCode\":\"PPLC\",\"isCapital\":true,\"distanceKm\":0,\"model\":\"mean-earth-sphere\",\"radiusMeters\":6371008.8}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Cities","url":"https://randomapi.dev/apis/cities"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/cloud-costs":{"get":{"operationId":"get_cloud_costs_root","tags":["commerce"],"summary":"One fictional cloud billing period as FOCUS-column-named cost and usage rows","description":"A seeded billing period is exactly 100 rows built from one deterministic stream. The four selection filters choose from those rows without regenerating them, and `count` is a limit — so seeded prefixes are stable.","parameters":[{"name":"billingPeriod","in":"query","description":"The calendar month this fixture invoices, as YYYY-MM (2000-01 … 2099-12). It sets BillingPeriodStart and BillingPeriodEnd on every row. Defaults to the previous complete UTC month and the resolved value is echoed in meta.params, so any response can be replayed exactly.","required":false,"schema":{"type":"string"},"example":"2026-05","x-randomapi-param-group":"route"},{"name":"currency","in":"query","description":"Active ISO 4217 code (case-insensitive) used as BillingCurrency and as the denomination of every price and cost. Prices are NOT converted — changing this relabels the fixture, it does not apply an exchange rate.","required":false,"schema":{"type":"string","default":"USD"},"example":"EUR","x-randomapi-param-group":"route"},{"name":"granularity","in":"query","description":"Charge-period length for metered usage rows: one clean UTC hour or one clean UTC day. Period-level rows (commitment purchase, unused commitment, tax, credit) always span the whole billing period.","required":false,"schema":{"type":"string","enum":["hourly","daily"],"default":"daily"},"example":"hourly","x-randomapi-param-group":"route"},{"name":"subAccounts","in":"query","description":"How many distinct sub accounts the period's metered usage is spread across (EX-SA-0001 upward). Tax, credit, purchase and unused rows stay at billing-account level with a null SubAccountId.","required":false,"schema":{"type":"integer","minimum":1,"maximum":8,"default":3},"example":5,"x-randomapi-param-group":"route"},{"name":"commitments","in":"query","description":"How many commitment discounts exist in the period. Each one adds a Purchase row, an Unused row and a block of commitment-covered Used usage rows. 0 means no committed pricing anywhere and /commitments returns an empty list.","required":false,"schema":{"type":"integer","minimum":0,"maximum":4,"default":2},"example":4,"x-randomapi-param-group":"route"},{"name":"taxRatePercent","in":"query","description":"Whole-percentage tax applied once per period to the summed BilledCost of every non-correction Usage and Purchase row, producing the single Tax row. 0 emits no Tax row at all.","required":false,"schema":{"type":"integer","minimum":0,"maximum":30,"default":20},"example":25,"x-randomapi-param-group":"route"},{"name":"chargeCategory","in":"query","description":"Return only rows with this FOCUS ChargeCategory. Adjustment is not offered because this fixture never emits adjustment rows.","required":false,"schema":{"type":"string","enum":["any","Usage","Purchase","Tax","Credit"],"default":"any"},"example":"Purchase","x-randomapi-param-group":"route"},{"name":"serviceCategory","in":"query","description":"Return only rows with this FOCUS ServiceCategory. Only the seven categories this fixture's SKU catalogue actually uses are offered; Other selects the tax and credit rows.","required":false,"schema":{"type":"string","enum":["any","Compute","Storage","Databases","Networking","Analytics","Security","Other"],"default":"any"},"example":"Compute","x-randomapi-param-group":"route"},{"name":"chargeClass","in":"query","description":"Correction returns only the prior-period correction rows; regular returns only rows whose ChargeClass is null (FOCUS defines Correction as the single allowed value, so 'regular' is this endpoint's word for the null case).","required":false,"schema":{"type":"string","enum":["any","Correction","regular"],"default":"any"},"example":"Correction","x-randomapi-param-group":"route"},{"name":"subAccountId","in":"query","description":"Return only rows belonging to one sub account, matched exactly and case-sensitively. An id that exists in no row returns an empty list plus a warning listing the period's sub-account ids — never a substitute row.","required":false,"schema":{"type":"string"},"example":"EX-SA-0002","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to 10.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["AvailabilityZone","BilledCost"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"AvailabilityZone,BilledCost"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["Tags"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"Tags"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CloudCostsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CloudCostsRootRecord"}}]},"example":{"data":[{"AvailabilityZone":"ex-eu-1a","BilledCost":8.9856,"BillingAccountId":"EX-BA-4821","BillingAccountName":"Fixture Industries","BillingAccountType":"Billing Account","BillingCurrency":"USD","BillingPeriodEnd":"2026-07-01T00:00:00Z","BillingPeriodStart":"2026-06-01T00:00:00Z","ChargeCategory":"Usage","ChargeClass":null,"ChargeDescription":"Virtual Machines — Instance uptime (2 vCPU) in ex-eu-1","ChargeFrequency":"Usage-Based","ChargePeriodEnd":"2026-06-04T00:00:00Z","ChargePeriodStart":"2026-06-03T00:00:00Z","CommitmentDiscountCategory":null,"CommitmentDiscountId":null,"CommitmentDiscountName":null,"CommitmentDiscountQuantity":null,"CommitmentDiscountStatus":null,"CommitmentDiscountType":null,"CommitmentDiscountUnit":null,"ConsumedQuantity":12,"ConsumedUnit":"Hours","ContractedCost":8.9856,"ContractedUnitPrice":0.03744,"EffectiveCost":8.9856,"InvoiceId":"EX-INV-202606-4821","InvoiceIssuerName":"Example Cloud","ListCost":9.984,"ListUnitPrice":0.0416,"PricingCategory":"Standard","PricingQuantity":12,"PricingUnit":"Hours","RegionId":"ex-eu-1","RegionName":"Example EU Central","ResourceId":"EX-RES-0007","ResourceName":"fixture-vm-a2-0007","ResourceType":"Virtual machine","ServiceCategory":"Compute","ServiceName":"Virtual Machines","ServiceProviderName":"Example Cloud","ServiceSubcategory":"Virtual Machines","SkuId":"EX-CMP-VM-A2","SkuMeter":"Instance uptime (2 vCPU)","SkuPriceId":"EX-CMP-VM-A2-ex-eu-1-OD","SubAccountId":"EX-SA-0002","SubAccountName":"Data Engineering","SubAccountType":"Project","Tags":{"env":"prod","costCenter":"cc-1003"}}],"meta":{"endpoint":"cloud-costs","count":1,"seed":42,"params":{"currency":"USD","granularity":"daily","subAccounts":3,"commitments":2,"taxRatePercent":20,"chargeCategory":"any","serviceCategory":"any","chargeClass":"any"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"AvailabilityZone\":\"ex-eu-1a\",\"BilledCost\":8.9856,\"BillingAccountId\":\"EX-BA-4821\",\"BillingAccountName\":\"Fixture Industries\",\"BillingAccountType\":\"Billing Account\",\"BillingCurrency\":\"USD\",\"BillingPeriodEnd\":\"2026-07-01T00:00:00Z\",\"BillingPeriodStart\":\"2026-06-01T00:00:00Z\",\"ChargeCategory\":\"Usage\",\"ChargeClass\":null,\"ChargeDescription\":\"Virtual Machines — Instance uptime (2 vCPU) in ex-eu-1\",\"ChargeFrequency\":\"Usage-Based\",\"ChargePeriodEnd\":\"2026-06-04T00:00:00Z\",\"ChargePeriodStart\":\"2026-06-03T00:00:00Z\",\"CommitmentDiscountCategory\":null,\"CommitmentDiscountId\":null,\"CommitmentDiscountName\":null,\"CommitmentDiscountQuantity\":null,\"CommitmentDiscountStatus\":null,\"CommitmentDiscountType\":null,\"CommitmentDiscountUnit\":null,\"ConsumedQuantity\":12,\"ConsumedUnit\":\"Hours\",\"ContractedCost\":8.9856,\"ContractedUnitPrice\":0.03744,\"EffectiveCost\":8.9856,\"InvoiceId\":\"EX-INV-202606-4821\",\"InvoiceIssuerName\":\"Example Cloud\",\"ListCost\":9.984,\"ListUnitPrice\":0.0416,\"PricingCategory\":\"Standard\",\"PricingQuantity\":12,\"PricingUnit\":\"Hours\",\"RegionId\":\"ex-eu-1\",\"RegionName\":\"Example EU Central\",\"ResourceId\":\"EX-RES-0007\",\"ResourceName\":\"fixture-vm-a2-0007\",\"ResourceType\":\"Virtual machine\",\"ServiceCategory\":\"Compute\",\"ServiceName\":\"Virtual Machines\",\"ServiceProviderName\":\"Example Cloud\",\"ServiceSubcategory\":\"Virtual Machines\",\"SkuId\":\"EX-CMP-VM-A2\",\"SkuMeter\":\"Instance uptime (2 vCPU)\",\"SkuPriceId\":\"EX-CMP-VM-A2-ex-eu-1-OD\",\"SubAccountId\":\"EX-SA-0002\",\"SubAccountName\":\"Data Engineering\",\"SubAccountType\":\"Project\",\"Tags\":{\"env\":\"prod\",\"costCenter\":\"cc-1003\"}}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for FOCUS-shaped cloud billing rows","url":"https://randomapi.dev/apis/cloud-costs"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/cloud-costs/summary":{"get":{"operationId":"get_cloud_costs_summary","tags":["commerce"],"summary":"Group the same seeded billing period and prove the group totals sum to the grand total","description":"Aggregates exactly the rows the root route returns for the same `seed` and the same generation and selection parameters. Every group's costs sum to `totals` in exact integer micro-units.","parameters":[{"name":"billingPeriod","in":"query","description":"The calendar month this fixture invoices, as YYYY-MM (2000-01 … 2099-12). It sets BillingPeriodStart and BillingPeriodEnd on every row. Defaults to the previous complete UTC month and the resolved value is echoed in meta.params, so any response can be replayed exactly.","required":false,"schema":{"type":"string"},"example":"2026-05","x-randomapi-param-group":"route"},{"name":"currency","in":"query","description":"Active ISO 4217 code (case-insensitive) used as BillingCurrency and as the denomination of every price and cost. Prices are NOT converted — changing this relabels the fixture, it does not apply an exchange rate.","required":false,"schema":{"type":"string","default":"USD"},"example":"EUR","x-randomapi-param-group":"route"},{"name":"granularity","in":"query","description":"Charge-period length for metered usage rows: one clean UTC hour or one clean UTC day. Period-level rows (commitment purchase, unused commitment, tax, credit) always span the whole billing period.","required":false,"schema":{"type":"string","enum":["hourly","daily"],"default":"daily"},"example":"hourly","x-randomapi-param-group":"route"},{"name":"subAccounts","in":"query","description":"How many distinct sub accounts the period's metered usage is spread across (EX-SA-0001 upward). Tax, credit, purchase and unused rows stay at billing-account level with a null SubAccountId.","required":false,"schema":{"type":"integer","minimum":1,"maximum":8,"default":3},"example":5,"x-randomapi-param-group":"route"},{"name":"commitments","in":"query","description":"How many commitment discounts exist in the period. Each one adds a Purchase row, an Unused row and a block of commitment-covered Used usage rows. 0 means no committed pricing anywhere and /commitments returns an empty list.","required":false,"schema":{"type":"integer","minimum":0,"maximum":4,"default":2},"example":4,"x-randomapi-param-group":"route"},{"name":"taxRatePercent","in":"query","description":"Whole-percentage tax applied once per period to the summed BilledCost of every non-correction Usage and Purchase row, producing the single Tax row. 0 emits no Tax row at all.","required":false,"schema":{"type":"integer","minimum":0,"maximum":30,"default":20},"example":25,"x-randomapi-param-group":"route"},{"name":"chargeCategory","in":"query","description":"Return only rows with this FOCUS ChargeCategory. Adjustment is not offered because this fixture never emits adjustment rows.","required":false,"schema":{"type":"string","enum":["any","Usage","Purchase","Tax","Credit"],"default":"any"},"example":"Purchase","x-randomapi-param-group":"route"},{"name":"serviceCategory","in":"query","description":"Return only rows with this FOCUS ServiceCategory. Only the seven categories this fixture's SKU catalogue actually uses are offered; Other selects the tax and credit rows.","required":false,"schema":{"type":"string","enum":["any","Compute","Storage","Databases","Networking","Analytics","Security","Other"],"default":"any"},"example":"Compute","x-randomapi-param-group":"route"},{"name":"chargeClass","in":"query","description":"Correction returns only the prior-period correction rows; regular returns only rows whose ChargeClass is null (FOCUS defines Correction as the single allowed value, so 'regular' is this endpoint's word for the null case).","required":false,"schema":{"type":"string","enum":["any","Correction","regular"],"default":"any"},"example":"Correction","x-randomapi-param-group":"route"},{"name":"subAccountId","in":"query","description":"Return only rows belonging to one sub account, matched exactly and case-sensitively. An id that exists in no row returns an empty list plus a warning listing the period's sub-account ids — never a substitute row.","required":false,"schema":{"type":"string"},"example":"EX-SA-0002","x-randomapi-param-group":"route"},{"name":"seed","in":"query","description":"Seed of the billing period to summarise. Any integer (reduced modulo 2³² like the platform's universal seed) — pass the `seed` echoed by the root route to aggregate exactly the rows you fetched. Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer","default":1},"example":42,"x-randomapi-param-group":"route"},{"name":"groupBy","in":"query","description":"Which FOCUS column to group by. Day groups by the UTC calendar date of ChargePeriodStart, so a correction row lands on a day in the previous month. Nullable columns produce one group whose groupKey is null, and that group sorts last.","required":false,"schema":{"type":"string","enum":["ServiceCategory","ServiceSubcategory","ServiceName","SubAccountId","ChargeCategory","PricingCategory","RegionId","CommitmentDiscountId","Day"],"default":"ServiceCategory"},"example":"Day","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["billingPeriod","billingPeriodStart"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"billingPeriod,billingPeriodStart"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["totals"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"totals"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CloudCostsSummaryEnvelope"},{"$ref":"#/components/schemas/CloudCostsSummaryRecord"}]},"example":{"data":{"billingPeriod":"2026-06","billingPeriodStart":"2026-06-01T00:00:00Z","billingPeriodEnd":"2026-07-01T00:00:00Z","billingCurrency":"USD","decimalPlaces":6,"groupBy":"ServiceCategory","periodRowCount":100,"rowCount":100,"groupCount":7,"groups":[{"groupKey":"Compute","rowCount":34,"billedCost":812.4432,"contractedCost":903.16,"effectiveCost":890.2011,"listCost":1003.5111}],"totals":{"rowCount":100,"billedCost":4210.9912,"contractedCost":4788.0044,"effectiveCost":4210.9912,"listCost":5602.771}},"meta":{"endpoint":"cloud-costs","route":"/summary","params":{"currency":"USD","granularity":"daily","subAccounts":3,"commitments":2,"taxRatePercent":20,"chargeCategory":"any","serviceCategory":"any","chargeClass":"any","seed":1,"groupBy":"ServiceCategory"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for FOCUS-shaped cloud billing rows","url":"https://randomapi.dev/apis/cloud-costs"},"x-randomapi-kind":"mock","x-randomapi-mode":"compute"}},"/api/cloud-costs/commitments":{"get":{"operationId":"get_cloud_costs_commitments","tags":["commerce"],"summary":"Commitment utilization for the same seeded period, reconciled against its purchase rows","description":"One row per commitment discount in the seeded period. A commitment aggregates every usage row that draws on it, across sub accounts and availability zones, so this route takes no selection filters — only the generation params, which must match the ones you passed to the root route.","parameters":[{"name":"billingPeriod","in":"query","description":"The calendar month this fixture invoices, as YYYY-MM (2000-01 … 2099-12). It sets BillingPeriodStart and BillingPeriodEnd on every row. Defaults to the previous complete UTC month and the resolved value is echoed in meta.params, so any response can be replayed exactly.","required":false,"schema":{"type":"string"},"example":"2026-05","x-randomapi-param-group":"route"},{"name":"currency","in":"query","description":"Active ISO 4217 code (case-insensitive) used as BillingCurrency and as the denomination of every price and cost. Prices are NOT converted — changing this relabels the fixture, it does not apply an exchange rate.","required":false,"schema":{"type":"string","default":"USD"},"example":"EUR","x-randomapi-param-group":"route"},{"name":"granularity","in":"query","description":"Charge-period length for metered usage rows: one clean UTC hour or one clean UTC day. Period-level rows (commitment purchase, unused commitment, tax, credit) always span the whole billing period.","required":false,"schema":{"type":"string","enum":["hourly","daily"],"default":"daily"},"example":"hourly","x-randomapi-param-group":"route"},{"name":"subAccounts","in":"query","description":"How many distinct sub accounts the period's metered usage is spread across (EX-SA-0001 upward). Tax, credit, purchase and unused rows stay at billing-account level with a null SubAccountId.","required":false,"schema":{"type":"integer","minimum":1,"maximum":8,"default":3},"example":5,"x-randomapi-param-group":"route"},{"name":"commitments","in":"query","description":"How many commitment discounts exist in the period. Each one adds a Purchase row, an Unused row and a block of commitment-covered Used usage rows. 0 means no committed pricing anywhere and /commitments returns an empty list.","required":false,"schema":{"type":"integer","minimum":0,"maximum":4,"default":2},"example":4,"x-randomapi-param-group":"route"},{"name":"taxRatePercent","in":"query","description":"Whole-percentage tax applied once per period to the summed BilledCost of every non-correction Usage and Purchase row, producing the single Tax row. 0 emits no Tax row at all.","required":false,"schema":{"type":"integer","minimum":0,"maximum":30,"default":20},"example":25,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["commitmentDiscountId","commitmentDiscountName"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"commitmentDiscountId,commitmentDiscountName"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["netSavings"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"netSavings"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CloudCostsCommitmentsEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CloudCostsCommitmentsRecord"}}]},"example":{"data":[{"commitmentDiscountId":"EX-CMT-0001","commitmentDiscountName":"Capacity commitment — Virtual Machines (1 year)","commitmentDiscountCategory":"Usage","commitmentDiscountType":"Capacity Commitment","commitmentDiscountUnit":"Hours","skuId":"EX-CMP-VM-A2","regionId":"ex-eu-1","chargePeriodStart":"2026-06-01T00:00:00Z","chargePeriodEnd":"2026-07-01T00:00:00Z","billingCurrency":"USD","committedQuantity":412.5,"usedQuantity":350.625,"unusedQuantity":61.875,"utilizationPercent":85,"coveredRowCount":9,"purchaseBilledCost":12.7361,"usedEffectiveCost":10.8257,"unusedEffectiveCost":1.9104,"onDemandEquivalentCost":13.122,"netSavings":0.3859}],"meta":{"endpoint":"cloud-costs","route":"/commitments","count":1,"seed":42,"params":{"currency":"USD","granularity":"daily","subAccounts":3,"commitments":2,"taxRatePercent":20},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"commitmentDiscountId\":\"EX-CMT-0001\",\"commitmentDiscountName\":\"Capacity commitment — Virtual Machines (1 year)\",\"commitmentDiscountCategory\":\"Usage\",\"commitmentDiscountType\":\"Capacity Commitment\",\"commitmentDiscountUnit\":\"Hours\",\"skuId\":\"EX-CMP-VM-A2\",\"regionId\":\"ex-eu-1\",\"chargePeriodStart\":\"2026-06-01T00:00:00Z\",\"chargePeriodEnd\":\"2026-07-01T00:00:00Z\",\"billingCurrency\":\"USD\",\"committedQuantity\":412.5,\"usedQuantity\":350.625,\"unusedQuantity\":61.875,\"utilizationPercent\":85,\"coveredRowCount\":9,\"purchaseBilledCost\":12.7361,\"usedEffectiveCost\":10.8257,\"unusedEffectiveCost\":1.9104,\"onDemandEquivalentCost\":13.122,\"netSavings\":0.3859}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for FOCUS-shaped cloud billing rows","url":"https://randomapi.dev/apis/cloud-costs"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/cloud-events":{"get":{"operationId":"get_cloud_events_root","tags":["developer"],"summary":"Generate CloudEvents 1.0 structured JSON fixtures","description":"Generate coherent mock CloudEvents 1.0 structured JSON envelopes with all required context attributes and action-specific event data.","parameters":[{"name":"resource","in":"query","description":"Only generate events for this resource domain. Omit for a mix.","required":false,"schema":{"type":"string","enum":["user","order","file","deployment"]},"example":"order","x-randomapi-param-group":"route"},{"name":"action","in":"query","description":"Only generate this lifecycle action. Omit for a mix.","required":false,"schema":{"type":"string","enum":["created","updated","deleted","failed"]},"example":"updated","x-randomapi-param-group":"route"},{"name":"source","in":"query","description":"Non-empty RFC 3986 URI-reference, preserved exactly. Use percent-encoding for Unicode; URI user information/credentials are rejected.","required":false,"schema":{"type":"string","minLength":1,"maxLength":256,"default":"/randomapi/demo"},"example":"/acme/orders","x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Earliest event time, inclusive. With neither bound, defaults to seven UTC days before today; with only to, derives to minus seven days. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Latest event time, inclusive. With neither bound, defaults to the end of today; with only from, derives from plus seven days. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-31T23:59:59.999Z","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["specversion","id"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"specversion,id"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["data"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"data"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CloudEventsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CloudEventsRootRecord"}}]},"example":{"data":[{"specversion":"1.0","id":"a5a12c9e-d4de-4f0a-a498-2f75b78f0562","source":"/acme/orders","type":"dev.randomapi.order.updated","subject":"order/ord_71d14f42d1804b91","time":"2026-01-18T14:27:31.488Z","datacontenttype":"application/json","data":{"id":"ord_71d14f42d1804b91","changes":{"status":"shipped"}}}],"meta":{"endpoint":"cloud-events","count":1,"seed":42,"params":{"source":"/randomapi/demo"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"specversion\":\"1.0\",\"id\":\"a5a12c9e-d4de-4f0a-a498-2f75b78f0562\",\"source\":\"/acme/orders\",\"type\":\"dev.randomapi.order.updated\",\"subject\":\"order/ord_71d14f42d1804b91\",\"time\":\"2026-01-18T14:27:31.488Z\",\"datacontenttype\":\"application/json\",\"data\":{\"id\":\"ord_71d14f42d1804b91\",\"changes\":{\"status\":\"shipped\"}}}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for CloudEvents fixtures","url":"https://randomapi.dev/apis/cloud-events"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/collation/sort":{"get":{"operationId":"get_collation_sort","tags":["text"],"summary":"Sort a list of strings under one locale and collation configuration","description":"Returns the input order and the sorted order side by side, plus the collator's resolved options. The sort is stable, so equal-comparing entries keep their input order in both directions. Authoritative source: ECMA-402 Intl.Collator over the serving runtime's Unicode CLDR/ICU collation data.","parameters":[{"name":"items","in":"query","description":"Comma-separated strings to sort: at most 200 entries, at most 100 characters each and at most 8000 characters in total. Entries are trimmed, empty entries are dropped, and an entry cannot contain a comma. Serialized as one comma-separated query value.","required":true,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["b","a","z","ä"],"style":"form","explode":false,"x-randomapi-param-group":"route","x-randomapi-query-example":"b,a,z,ä"},{"name":"locale","in":"query","description":"Unicode BCP 47 locale identifier whose ordering rules to use. It is canonicalized first; a malformed tag returns 400 instead of falling back to English, and a tag this runtime has no collation data for still answers but reports 'hasCollationData': false plus a warning naming the locale that actually served it. Tags carrying a Unicode '-u-' extension are rejected — use the option parameters.","required":false,"schema":{"type":"string","minLength":2,"maxLength":64,"default":"en"},"example":"de","x-randomapi-param-group":"route"},{"name":"sensitivity","in":"query","description":"ECMA-402 comparison strength. base: a = á = A. accent: a ≠ á, a = A. case: a = á, a ≠ A. variant: everything counts (the default for sorting).","required":false,"schema":{"type":"string","enum":["base","accent","case","variant"],"default":"variant"},"example":"base","x-randomapi-param-group":"route"},{"name":"numeric","in":"query","description":"Compare digit runs as numbers (the '-u-kn' key), so 'item2' sorts before 'item10' instead of after it. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"caseFirst","in":"query","description":"Which case wins when only case separates two strings (the '-u-kf' key). 'false' keeps the locale's own default.","required":false,"schema":{"type":"string","enum":["false","upper","lower"],"default":"false"},"example":"upper","x-randomapi-param-group":"route"},{"name":"collation","in":"query","description":"Named CLDR collation to request through the '-u-co-' key, e.g. phonebk, pinyin or stroke. Values outside this runtime's Intl.supportedValuesOf('collation') return 400; a value the locale does not tailor is reported as a warning, and a 'search…' tailoring is answered with a warning that its order is not a display order.","required":false,"schema":{"type":"string","minLength":3,"maxLength":32},"example":"phonebk","x-randomapi-param-group":"route"},{"name":"descending","in":"query","description":"Reverse the comparator. Equal-comparing entries still keep their input order. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["locale","hasCollationData"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"locale,hasCollationData"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["movedCount"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"movedCount"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CollationSortEnvelope"},{"$ref":"#/components/schemas/CollationSortRecord"}]},"example":{"data":{"locale":"de","hasCollationData":true,"resolvedLocale":"de","resolvedOptions":{"locale":"de","usage":"sort","sensitivity":"variant","ignorePunctuation":false,"collation":"default","numeric":false,"caseFirst":"false"},"items":["b","a","z","ä"],"sorted":["a","ä","b","z"],"movedCount":4},"meta":{"endpoint":"collation","route":"/sort","params":{"items":["b","a","z","ä"],"locale":"en","sensitivity":"variant","numeric":false,"caseFirst":"false","descending":false},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Locale-aware sorting","url":"https://randomapi.dev/apis/collation"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/collation/compare":{"get":{"operationId":"get_collation_compare","tags":["text"],"summary":"Compare two strings and report which collation level decided it","description":"Sort and compare strings the way a locale actually orders them: German sorts ä with a, Swedish sorts it after z. Every option visibly changes the answer. Authoritative source: ECMA-402 Intl.Collator over the serving runtime's Unicode CLDR/ICU collation data.","parameters":[{"name":"left","in":"query","description":"First string, compared exactly as sent (leading and trailing spaces included).","required":true,"schema":{"type":"string","minLength":1,"maxLength":200},"example":"a","x-randomapi-param-group":"route"},{"name":"right","in":"query","description":"Second string, compared exactly as sent (leading and trailing spaces included).","required":true,"schema":{"type":"string","minLength":1,"maxLength":200},"example":"A","x-randomapi-param-group":"route"},{"name":"locale","in":"query","description":"Unicode BCP 47 locale identifier whose ordering rules to use. It is canonicalized first; a malformed tag returns 400 instead of falling back to English, and a tag this runtime has no collation data for still answers but reports 'hasCollationData': false plus a warning naming the locale that actually served it. Tags carrying a Unicode '-u-' extension are rejected — use the option parameters.","required":false,"schema":{"type":"string","minLength":2,"maxLength":64,"default":"en"},"example":"de","x-randomapi-param-group":"route"},{"name":"sensitivity","in":"query","description":"ECMA-402 comparison strength. base: a = á = A. accent: a ≠ á, a = A. case: a = á, a ≠ A. variant: everything counts (the default for sorting).","required":false,"schema":{"type":"string","enum":["base","accent","case","variant"],"default":"variant"},"example":"base","x-randomapi-param-group":"route"},{"name":"numeric","in":"query","description":"Compare digit runs as numbers (the '-u-kn' key), so 'item2' sorts before 'item10' instead of after it. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"caseFirst","in":"query","description":"Which case wins when only case separates two strings (the '-u-kf' key). 'false' keeps the locale's own default.","required":false,"schema":{"type":"string","enum":["false","upper","lower"],"default":"false"},"example":"upper","x-randomapi-param-group":"route"},{"name":"collation","in":"query","description":"Named CLDR collation to request through the '-u-co-' key, e.g. phonebk, pinyin or stroke. Values outside this runtime's Intl.supportedValuesOf('collation') return 400; a value the locale does not tailor is reported as a warning, and a 'search…' tailoring is answered with a warning that its order is not a display order.","required":false,"schema":{"type":"string","minLength":3,"maxLength":32},"example":"phonebk","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["left","right"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"left,right"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["decidedAt"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"decidedAt"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CollationCompareEnvelope"},{"$ref":"#/components/schemas/CollationCompareRecord"}]},"example":{"data":{"left":"a","right":"á","result":-1,"relation":"before","locale":"en","hasCollationData":true,"resolvedLocale":"en","resolvedOptions":{"locale":"en","usage":"sort","sensitivity":"variant","ignorePunctuation":false,"collation":"default","numeric":false,"caseFirst":"false"},"decidedAt":"accent"},"meta":{"endpoint":"collation","route":"/compare","params":{"left":"a","right":"A","locale":"en","sensitivity":"variant","numeric":false,"caseFirst":"false"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Locale-aware sorting","url":"https://randomapi.dev/apis/collation"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/collation/locales":{"get":{"operationId":"get_collation_locales","tags":["text"],"summary":"Check which of your locale tags this runtime has collation data for","description":"One row per tag you send, in the order you sent them. ECMA-402 leaves Intl.Collator's locale list implementation-defined, and reduced-ICU builds genuinely lack whole languages, so this asks the serving runtime directly with Intl.Collator.supportedLocalesOf instead of consulting a pinned table. A tag with no data reports resolvedLocale and defaultCollation as null, because what it would fall back to is the runtime's own default locale rather than anything derived from your tag. Authoritative source: ECMA-402 Intl.Collator over the serving runtime's Unicode CLDR/ICU collation data.","parameters":[{"name":"locales","in":"query","description":"Comma-separated Unicode BCP 47 locale identifiers to check — at most 50. Each is canonicalized first (so 'iw' is checked as 'he'), and a malformed tag or one carrying a '-u-' extension returns 400 naming the offending entry. Serialized as one comma-separated query value.","required":true,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["de","sv","ja","zz"],"style":"form","explode":false,"x-randomapi-param-group":"route","x-randomapi-query-example":"de,sv,ja,zz"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["requested","locale"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"requested,locale"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["defaultCollation"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"defaultCollation"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CollationLocalesEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CollationLocalesRecord"}}]},"example":{"data":[{"requested":"de","locale":"de","hasCollationData":true,"resolvedLocale":"de","defaultCollation":"default"}],"meta":{"endpoint":"collation","route":"/locales","count":1,"params":{"locales":["de","sv","ja","zz"]},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"requested\":\"de\",\"locale\":\"de\",\"hasCollationData\":true,\"resolvedLocale\":\"de\",\"defaultCollation\":\"default\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Locale-aware sorting","url":"https://randomapi.dev/apis/collation"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/collation/collations":{"get":{"operationId":"get_collation_collations","tags":["text"],"summary":"List the collation identifiers this runtime supports","description":"The bare route lists every identifier Intl.supportedValuesOf('collation') reports. ECMA-402 leaves that set implementation-defined, so it varies between JavaScript runtimes and ICU versions. Add 'locale' to see which of them that locale actually tailors. Authoritative source: ECMA-402 Intl.Collator over the serving runtime's Unicode CLDR/ICU collation data.","parameters":[{"name":"locale","in":"query","description":"Optional Unicode BCP 47 locale identifier, validated exactly as on the other routes (malformed tags 400; '-u-' extensions rejected). When given, every row reports whether that locale tailors the collation, what the runtime resolved, and the locale's default collation; when omitted those fields are null rather than guessed.","required":false,"schema":{"type":"string","minLength":2,"maxLength":64},"example":"de","x-randomapi-param-group":"route"},{"name":"search","in":"query","description":"Case-insensitive substring filter over the collation identifiers. No match returns an empty list plus a warning listing what this runtime does support.","required":false,"schema":{"type":"string","minLength":1,"maxLength":32},"example":"phonebk","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["collation","supportedForLocale"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"collation,supportedForLocale"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["resolvedOptions"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"resolvedOptions"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CollationCollationsEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CollationCollationsRecord"}}]},"example":{"data":[{"collation":"phonebk","supportedForLocale":true,"resolvedCollation":"phonebk","resolvedLocale":"de-u-co-phonebk","localeDefaultCollation":"default","resolvedOptions":{"locale":"de-u-co-phonebk","usage":"sort","sensitivity":"variant","ignorePunctuation":false,"collation":"phonebk","numeric":false,"caseFirst":"false"}}],"meta":{"endpoint":"collation","route":"/collations","count":1,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"collation\":\"phonebk\",\"supportedForLocale\":true,\"resolvedCollation\":\"phonebk\",\"resolvedLocale\":\"de-u-co-phonebk\",\"localeDefaultCollation\":\"default\",\"resolvedOptions\":{\"locale\":\"de-u-co-phonebk\",\"usage\":\"sort\",\"sensitivity\":\"variant\",\"ignorePunctuation\":false,\"collation\":\"phonebk\",\"numeric\":false,\"caseFirst\":\"false\"}}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Locale-aware sorting","url":"https://randomapi.dev/apis/collation"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/color-contrast/check":{"get":{"operationId":"get_color_contrast_check","tags":["design"],"summary":"Calculate WCAG 2.2 contrast and AA/AAA text results","description":"Canonicalizes two opaque sRGB hex colors, returns their relative luminance and evaluates the four WCAG text thresholds. Authoritative source: W3C Web Content Accessibility Guidelines (WCAG) 2.2.","parameters":[{"name":"foreground","in":"query","description":"Opaque foreground sRGB color in #rgb or #rrggbb notation. The # must be URL-encoded as %23 in a request URL.","required":true,"schema":{"type":"string","minLength":1,"maxLength":32},"example":"#111827","x-randomapi-param-group":"route"},{"name":"background","in":"query","description":"Opaque background sRGB color in #rgb or #rrggbb notation. Alpha and non-hex CSS color syntax are rejected.","required":true,"schema":{"type":"string","minLength":1,"maxLength":32},"example":"#ffffff","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["foreground","background"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"foreground,background"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["passesAaaLargeText"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"passesAaaLargeText"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ColorContrastCheckEnvelope"},{"$ref":"#/components/schemas/ColorContrastCheckRecord"}]},"example":{"data":{"foreground":"#111827","background":"#ffffff","foregroundLuminance":0.009955,"backgroundLuminance":1,"contrastRatio":17.739,"passesAaNormalText":true,"passesAaLargeText":true,"passesAaaNormalText":true,"passesAaaLargeText":true},"meta":{"endpoint":"color-contrast","route":"/check","params":{"foreground":"#111827","background":"#ffffff"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Color contrast checker","url":"https://randomapi.dev/apis/color-contrast"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/color-spaces/convert":{"get":{"operationId":"get_color_spaces_convert","tags":["design"],"summary":"Convert one CSS color into any CSS Color 4 color space","description":"Parses a CSS <color>, converts it through CIE XYZ with linear Bradford adaptation when the white points differ, and reports the result plus its gamut status in every bounded RGB space — never clamped. Authoritative sources: CSS Color Module Level 4 — W3C Candidate Recommendation Draft, 28 July 2026 (conversion matrices, chromatic adaptation and gamut-mapping algorithms); CIE 142:2001 — Improvement to industrial colour-difference evaluation (CIEDE2000); Björn Ottosson — A perceptual color space for image processing (Oklab).","parameters":[{"name":"color","in":"query","description":"Any absolute CSS Color 4 <color>: #rgb/#rgba/#rrggbb/#rrggbbaa, one of the 148 named colors, rgb()/rgba() (legacy comma or modern space form), hsl()/hsla(), hwb(), lab(), lch(), oklab(), oklch(), or color() with a predefined space. Percentages and angle units (deg, grad, rad, turn) are accepted; hue angles are normalized to [0, 360). Encode '#' as %23 and spaces as '+' in a URL.","required":true,"schema":{"type":"string","minLength":1,"maxLength":128},"example":"#ff5500","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Destination color space id. Required on purpose: an unnamed destination is a request without a meaning. 'xyz' is accepted as CSS's alias for 'xyz-d65' and is canonicalized, with a warning.","required":true,"schema":{"type":"string","enum":["srgb","srgb-linear","display-p3","display-p3-linear","a98-rgb","prophoto-rgb","rec2020","xyz","xyz-d50","xyz-d65","lab","lch","oklab","oklch","hsl","hwb"]},"example":"oklch","x-randomapi-param-group":"route"},{"name":"precision","in":"query","description":"Decimal places for the rounded numbers in the response. Rounded towards +∞ per CSS Color 4 §16, so a component of exactly -0.125 becomes -0.12 at precision=2. Gamut verdicts and the reported difference figures are always computed from the UNROUNDED result, so precision can never flip a verdict.","required":false,"schema":{"type":"integer","minimum":0,"maximum":12,"default":5},"example":4,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["input","inputSpace"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"input,inputSpace"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["roundingDeltaEOK"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"roundingDeltaEOK"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ColorSpacesConvertEnvelope"},{"$ref":"#/components/schemas/ColorSpacesConvertRecord"}]},"example":{"data":{"input":"color(srgb 1 0.33333 0)","inputSpace":"srgb","space":"oklch","whitePoint":"D65","chromaticAdaptation":null,"components":{"l":0.67589,"c":0.21747,"h":38.80221},"css":"oklch(0.67589 0.21747 38.80221)","hex":"#ff5500","alpha":1,"inGamut":{"srgb":true,"display-p3":true,"a98-rgb":true,"prophoto-rgb":true,"rec2020":true},"powerlessComponents":[],"roundingDeltaEOK":0},"meta":{"endpoint":"color-spaces","route":"/convert","params":{"color":"#ff5500","to":"oklch","precision":5},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Color space conversion","url":"https://randomapi.dev/apis/color-spaces"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/color-spaces/difference":{"get":{"operationId":"get_color_spaces_difference","tags":["design"],"summary":"Measure the color difference between two CSS colors","description":"Computes CIEDE2000, CIE76 or deltaEOK between two colors and reports the coordinate space, white point and just-noticeable-difference convention the number is expressed in. Authoritative sources: CSS Color Module Level 4 — W3C Candidate Recommendation Draft, 28 July 2026 (conversion matrices, chromatic adaptation and gamut-mapping algorithms); CIE 142:2001 — Improvement to industrial colour-difference evaluation (CIEDE2000); Björn Ottosson — A perceptual color space for image processing (Oklab).","parameters":[{"name":"from","in":"query","description":"First color. Any absolute CSS Color 4 <color>: #rgb/#rgba/#rrggbb/#rrggbbaa, one of the 148 named colors, rgb()/rgba() (legacy comma or modern space form), hsl()/hsla(), hwb(), lab(), lch(), oklab(), oklch(), or color() with a predefined space. Percentages and angle units (deg, grad, rad, turn) are accepted; hue angles are normalized to [0, 360). Encode '#' as %23 and spaces as '+' in a URL. All three metrics are symmetric, so swapping 'from' and 'to' returns the same number.","required":true,"schema":{"type":"string","minLength":1,"maxLength":128},"example":"#d32f2f","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Second color. NOTE: on this route 'to' is a COLOR, not a space id — pass a space id to /api/color-spaces/convert?to=… instead. Any absolute CSS Color 4 <color>: #rgb/#rgba/#rrggbb/#rrggbbaa, one of the 148 named colors, rgb()/rgba() (legacy comma or modern space form), hsl()/hsla(), hwb(), lab(), lch(), oklab(), oklch(), or color() with a predefined space. Percentages and angle units (deg, grad, rad, turn) are accepted; hue angles are normalized to [0, 360). Encode '#' as %23 and spaces as '+' in a URL.","required":true,"schema":{"type":"string","minLength":1,"maxLength":128},"example":"#dc2626","x-randomapi-param-group":"route"},{"name":"method","in":"query","description":"Difference formula. ciede2000 = CIE 142:2001 with kL=kC=kH=1; cie76 = plain Euclidean distance in CIELAB (ΔE*ab); oklab = ΔEOK, the Euclidean distance in OKLab (CSS Color 4 §20.2).","required":false,"schema":{"type":"string","enum":["cie76","ciede2000","oklab"],"default":"ciede2000"},"example":"ciede2000","x-randomapi-param-group":"route"},{"name":"whitePoint","in":"query","description":"White point for the CIELAB coordinates the Lab-based metrics use. Omitted ⇒ d50, matching CSS Color 4's lab(), and the resolved value is echoed in meta.params. Rejected with a 400 for method=oklab, which is defined only at D65.","required":false,"schema":{"type":"string","enum":["d50","d65"]},"example":"d50","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["from","to"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"from,to"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["aboveJnd"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"aboveJnd"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ColorSpacesDifferenceEnvelope"},{"$ref":"#/components/schemas/ColorSpacesDifferenceRecord"}]},"example":{"data":{"from":"color(srgb 0.827451 0.184314 0.184314)","to":"color(srgb 0.862745 0.14902 0.14902)","method":"ciede2000","metric":"CIEDE2000 (CIE 142:2001), kL = kC = kH = 1","coordinateSpace":"lab","whitePoint":"D50","fromCoordinates":{"l":49.508243,"a":65.311663,"b":41.617664},"toCoordinates":{"l":50.42375,"a":68.166768,"b":44.700709},"deltaE":1.602137,"jnd":2,"aboveJnd":false},"meta":{"endpoint":"color-spaces","route":"/difference","params":{"from":"#d32f2f","to":"#dc2626","method":"ciede2000"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Color space conversion","url":"https://randomapi.dev/apis/color-spaces"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/color-spaces/gamut":{"get":{"operationId":"get_color_spaces_gamut","tags":["design"],"summary":"Test a color against an RGB gamut and map it in with the CSS algorithm","description":"Reports whether a color fits a bounded RGB gamut and, when it does not, maps it in with a named CSS Color 4 gamut-mapping algorithm — returning the chroma actually reached, the hue drift and the deltaEOK cost. Authoritative sources: CSS Color Module Level 4 — W3C Candidate Recommendation Draft, 28 July 2026 (conversion matrices, chromatic adaptation and gamut-mapping algorithms); CIE 142:2001 — Improvement to industrial colour-difference evaluation (CIEDE2000); Björn Ottosson — A perceptual color space for image processing (Oklab).","parameters":[{"name":"color","in":"query","description":"Any absolute CSS Color 4 <color>: #rgb/#rgba/#rrggbb/#rrggbbaa, one of the 148 named colors, rgb()/rgba() (legacy comma or modern space form), hsl()/hsla(), hwb(), lab(), lch(), oklab(), oklch(), or color() with a predefined space. Percentages and angle units (deg, grad, rad, turn) are accepted; hue angles are normalized to [0, 360). Encode '#' as %23 and spaces as '+' in a URL.","required":true,"schema":{"type":"string","minLength":1,"maxLength":128},"example":"oklch(0.7 0.3 30)","x-randomapi-param-group":"route"},{"name":"gamut","in":"query","description":"Destination RGB gamut. Only bounded RGB spaces are accepted: lab, lch, oklab, oklch and xyz-* have no gamut limits, so 'mapping' into them is a no-op that would look like an answer.","required":false,"schema":{"type":"string","enum":["srgb","display-p3","a98-rgb","prophoto-rgb","rec2020"],"default":"srgb"},"example":"srgb","x-randomapi-param-group":"route"},{"name":"method","in":"query","description":"Algorithm. binary-search-minde = CSS Color 4 §14.2.1/§14.2.2 (ΔEOK, JND 0.02, epsilon 1e-4). raytrace = §14.2.5/§14.2.6, with the 64-bit 1e-12 constants. clip = naive per-component clamping (§14.1.1), NOT a CSS gamut-mapping algorithm, offered so you can see what your own Math.min/max does.","required":false,"schema":{"type":"string","enum":["binary-search-minde","raytrace","clip"],"default":"binary-search-minde"},"example":"raytrace","x-randomapi-param-group":"route"},{"name":"precision","in":"query","description":"Decimal places for the rounded numbers in the response. Rounded towards +∞ per CSS Color 4 §16, so a component of exactly -0.125 becomes -0.12 at precision=2. Gamut verdicts and the reported difference figures are always computed from the UNROUNDED result, so precision can never flip a verdict.","required":false,"schema":{"type":"integer","minimum":0,"maximum":12,"default":5},"example":4,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["input","gamut"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"input,gamut"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["boundaryCase"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"boundaryCase"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ColorSpacesGamutEnvelope"},{"$ref":"#/components/schemas/ColorSpacesGamutRecord"}]},"example":{"data":{"input":"oklch(0.7 0.3 30)","gamut":"srgb","whitePoint":"D65","inGamut":false,"method":"binary-search-minde","algorithm":"Binary Search Gamut Mapping with Local MINDE (CSS Color 4 §14.2.1)","mapped":"color(srgb 1 0.34514 0.26458)","mappedHex":"#ff5843","components":{"r":1,"g":0.34514,"b":0.26458},"originalChroma":0.3,"mappedChroma":0.2062,"chromaReduction":0.0938,"deltaEOK":0.09532,"hueShiftDegrees":0.1816,"boundaryCase":null},"meta":{"endpoint":"color-spaces","route":"/gamut","params":{"color":"oklch(0.7 0.3 30)","gamut":"srgb","method":"binary-search-minde","precision":5},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Color space conversion","url":"https://randomapi.dev/apis/color-spaces"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/color-vision/simulate":{"get":{"operationId":"get_color_vision_simulate","tags":["design"],"summary":"Simulate one colour-vision deficiency on a single sRGB hex colour","description":"Decodes the colour to linear light, applies the named published matrix, clamps and re-encodes it, then reports how far the colour moved. Authoritative source: Brettel, Viénot & Mollon (1997), Viénot, Brettel & Mollon (1999) and Machado, Oliveira & Fernandes (2009) simulation matrices, as published by the authors and by the public-domain libDaltonLens reference implementation.","parameters":[{"name":"hex","in":"query","description":"Opaque sRGB colour in #rgb or #rrggbb notation. The # must be URL-encoded as %23. Alpha and non-hex CSS colour syntax are rejected.","required":true,"schema":{"type":"string","minLength":1,"maxLength":32},"example":"#ed002e","x-randomapi-param-group":"route"},{"name":"type","in":"query","description":"Colour-vision deficiency to simulate. The -opia types are complete dichromacy; the -anomaly types are anomalous trichromacy and require model=machado2009 plus a 'severity'.","required":true,"schema":{"type":"string","enum":["protanopia","deuteranopia","tritanopia","protanomaly","deuteranomaly","tritanomaly"]},"example":"deuteranopia","x-randomapi-param-group":"route"},{"name":"model","in":"query","description":"Published model to apply. brettel1997 covers all three dichromacies (and is the model the DaltonLens reference implementation picks for tritanopia); vienot1999 covers protanopia and deuteranopia only; machado2009 covers all six types and is the only one with a severity. Required because the models genuinely disagree.","required":true,"schema":{"type":"string","enum":["brettel1997","vienot1999","machado2009"]},"example":"machado2009","x-randomapi-param-group":"route"},{"name":"severity","in":"query","description":"Machado 2009 severity from 0 (normal vision) to 1 (dichromacy). Accepted only with model=machado2009 — required on the -anomaly types, and on the -opia types only as the redundant severity=1 those types already are. Values off the published 0.1 grid are interpolated and reported in meta.warnings.","required":false,"schema":{"type":"number","minimum":0,"maximum":1},"example":0.4,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["input","model"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"input,model"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["clippedChannels"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"clippedChannels"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ColorVisionSimulateEnvelope"},{"$ref":"#/components/schemas/ColorVisionSimulateRecord"}]},"example":{"data":{"input":"#ed002e","model":"machado2009","type":"deuteranopia","severity":1,"simulatedHex":"#968623","simulatedRgb":{"r":150,"g":134,"b":35},"deltaFromOriginal":45.7212,"contrastAgainstOriginal":1.2351,"clippedChannels":[]},"meta":{"endpoint":"color-vision","route":"/simulate","params":{"hex":"#ed002e","type":"deuteranopia","model":"machado2009"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Color blindness simulator","url":"https://randomapi.dev/apis/color-vision"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/color-vision/palette":{"get":{"operationId":"get_color_vision_palette","tags":["design"],"summary":"Simulate 2–8 colours together and flag pairs that become indistinguishable","description":"Applies one model to a whole palette, then compares every unordered pair with CIEDE2000 before and after simulation. Authoritative source: Brettel, Viénot & Mollon (1997), Viénot, Brettel & Mollon (1999) and Machado, Oliveira & Fernandes (2009) simulation matrices, as published by the authors and by the public-domain libDaltonLens reference implementation.","parameters":[{"name":"colors","in":"query","description":"2–8 distinct opaque sRGB colours in #rgb or #rrggbb notation, comma-separated. Encode each # as %23. Serialized as one comma-separated query value.","required":true,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["#ed002e","#00a000"],"style":"form","explode":false,"x-randomapi-param-group":"route","x-randomapi-query-example":"#ed002e,#00a000"},{"name":"type","in":"query","description":"Colour-vision deficiency to simulate. The -opia types are complete dichromacy; the -anomaly types are anomalous trichromacy and require model=machado2009 plus a 'severity'.","required":true,"schema":{"type":"string","enum":["protanopia","deuteranopia","tritanopia","protanomaly","deuteranomaly","tritanomaly"]},"example":"deuteranopia","x-randomapi-param-group":"route"},{"name":"model","in":"query","description":"Published model to apply. brettel1997 covers all three dichromacies (and is the model the DaltonLens reference implementation picks for tritanopia); vienot1999 covers protanopia and deuteranopia only; machado2009 covers all six types and is the only one with a severity. Required because the models genuinely disagree.","required":true,"schema":{"type":"string","enum":["brettel1997","vienot1999","machado2009"]},"example":"machado2009","x-randomapi-param-group":"route"},{"name":"severity","in":"query","description":"Machado 2009 severity from 0 (normal vision) to 1 (dichromacy). Accepted only with model=machado2009 — required on the -anomaly types, and on the -opia types only as the redundant severity=1 those types already are. Values off the published 0.1 grid are interpolated and reported in meta.warnings.","required":false,"schema":{"type":"number","minimum":0,"maximum":1},"example":0.4,"x-randomapi-param-group":"route"},{"name":"threshold","in":"query","description":"CIEDE2000 distance below which a simulated pair is reported indistinguishable. This API's convention, not a standard threshold — it is echoed in every response.","required":false,"schema":{"type":"number","minimum":0,"maximum":100,"default":5},"example":2,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["model","type"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"model,type"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["indistinguishablePairs"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"indistinguishablePairs"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ColorVisionPaletteEnvelope"},{"$ref":"#/components/schemas/ColorVisionPaletteRecord"}]},"example":{"data":{"model":"vienot1999","type":"deuteranopia","severity":null,"threshold":5,"colors":[{"input":"#ed002e","simulatedHex":"#888817","simulatedRgb":{"r":136,"g":136,"b":23},"deltaFromOriginal":51.6696,"contrastAgainstOriginal":1.2027,"clippedChannels":[]},{"input":"#00a000","simulatedHex":"#898916","simulatedRgb":{"r":137,"g":137,"b":22},"deltaFromOriginal":19.4091,"contrastAgainstOriginal":1.0663,"clippedChannels":[]}],"pairs":[{"a":"#ed002e","b":"#00a000","originalDistance":78.4845,"simulatedDistance":0.3963,"indistinguishable":true}],"indistinguishablePairs":1},"meta":{"endpoint":"color-vision","route":"/palette","params":{"colors":["#ed002e","#00a000"],"type":"deuteranopia","model":"machado2009","threshold":5},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Color blindness simulator","url":"https://randomapi.dev/apis/color-vision"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/colors":{"get":{"operationId":"get_colors_root","tags":["design"],"summary":"Generate random colors with hue and luminosity filters","description":"Colors are drawn uniformly inside the requested HSL ranges; `hex`, `rgb` and `hsl` always describe the same value.","parameters":[{"name":"hue","in":"query","description":"Color family as an HSL hue range: red 345–15°, orange 15–45°, yellow 45–70°, green 70–170°, blue 170–260°, purple 260–315°, pink 315–345°. 'monochrome' = pure grays (saturation 0%).","required":false,"schema":{"type":"string","enum":["red","orange","yellow","green","blue","purple","pink","monochrome","any"],"default":"any"},"example":"green","x-randomapi-param-group":"route"},{"name":"luminosity","in":"query","description":"Lightness band: 'bright' = lightness 45–65% with saturation ≥ 60%, 'light' = 70–90%, 'dark' = 10–35%, 'any' = 10–90%.","required":false,"schema":{"type":"string","enum":["bright","light","dark","any"],"default":"any"},"example":"dark","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["hex","rgb"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"hex,rgb"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["contrastText"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"contrastText"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ColorsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/ColorsRootRecord"}}]},"example":{"data":[{"hex":"#3ea873","rgb":"rgb(62, 168, 115)","hsl":"hsl(150, 46%, 45%)","name":"mediumseagreen","contrastText":"#000000"}],"meta":{"endpoint":"colors","count":1,"seed":42,"params":{"hue":"any","luminosity":"any"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"hex\":\"#3ea873\",\"rgb\":\"rgb(62, 168, 115)\",\"hsl\":\"hsl(150, 46%, 45%)\",\"name\":\"mediumseagreen\",\"contrastText\":\"#000000\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Colors","url":"https://randomapi.dev/apis/colors"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/colors/palette":{"get":{"operationId":"get_colors_palette","tags":["design"],"summary":"Build a color-scheme palette from one base color","description":"Deterministic — no `seed`, no randomness: the same `base` and `scheme` always return the same palette. The base swatch keeps your exact input hex.","parameters":[{"name":"base","in":"query","description":"Base color as hex: '#rrggbb', 'rrggbb' or 3-digit shorthand ('#f80' / 'f80'). In a URL, encode '#' as %23 — or just omit it. Anything else is a 400.","required":true,"schema":{"type":"string"},"example":"3498db","x-randomapi-param-group":"route"},{"name":"scheme","in":"query","description":"Scheme recipe: complementary (base + 180° opposite), analogous (±30° neighbors), triadic (+120°/+240°), tetradic (+90°/+180°/+270°), monochromatic (lightness ladder 15/35/50/70/88%).","required":false,"schema":{"type":"string","enum":["complementary","analogous","triadic","tetradic","monochromatic"],"default":"complementary"},"example":"triadic","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["base","scheme"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"base,scheme"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["colors"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"colors"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ColorsPaletteEnvelope"},{"$ref":"#/components/schemas/ColorsPaletteRecord"}]},"example":{"data":{"base":"#3498db","scheme":"complementary","colors":[{"hex":"#3498db","role":"base"},{"hex":"#db7734","role":"complement"}]},"meta":{"endpoint":"colors","route":"/palette","params":{"base":"3498db","scheme":"complementary"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Colors","url":"https://randomapi.dev/apis/colors"},"x-randomapi-kind":"mock","x-randomapi-mode":"compute"}},"/api/companies":{"get":{"operationId":"get_companies_root","tags":["commerce"],"summary":"Generate fake companies","description":"Fake companies with locale-aware names, industry-flavored catchphrases, founding years, log-distributed headcounts and safe example.com websites and emails.","parameters":[{"name":"industry","in":"query","description":"Pin every company to this industry — the `industry` field matches and the `catchphrase` uses that industry's vocabulary. Omit for a random mix.","required":false,"schema":{"type":"string","enum":["technology","finance","healthcare","retail","manufacturing","energy","media","transportation","hospitality","construction","agriculture","education"]},"example":"technology","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"locale","in":"query","description":"Locale for the generated data (names, addresses, …).","required":false,"schema":{"type":"string","enum":["en","da","de","fr","es","it","pt","ja"],"default":"en"},"example":"da","x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["name","legalName"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"name,legalName"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["email"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"email"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CompaniesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CompaniesRootRecord"}}]},"example":{"data":[{"name":"Greenholt - Kerluke","legalName":"Greenholt - Kerluke LLC","industry":"technology","catchphrase":"Rethinking cloud infrastructure for modern enterprises","foundedYear":1998,"employees":240,"website":"https://greenholt-kerluke.example.com","email":"contact@greenholt-kerluke.example.com"}],"meta":{"endpoint":"companies","count":1,"seed":42,"locale":"en","params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"name\":\"Greenholt - Kerluke\",\"legalName\":\"Greenholt - Kerluke LLC\",\"industry\":\"technology\",\"catchphrase\":\"Rethinking cloud infrastructure for modern enterprises\",\"foundedYear\":1998,\"employees\":240,\"website\":\"https://greenholt-kerluke.example.com\",\"email\":\"contact@greenholt-kerluke.example.com\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Companies","url":"https://randomapi.dev/apis/companies"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/confusables/skeleton":{"get":{"operationId":"get_confusables_skeleton","tags":["developer"],"summary":"Compute the UTS #39 skeleton of a string and show every prototype substitution","description":"UTS #39 skeletons, mixed-script and identifier-status checks: whether two usernames or domains are visual lookalikes, and which characters differ. Authoritative sources: Unicode Security Mechanisms data files (UTS #39, Unicode 17.0.0); Unicode Character Database 17.0.0 (Script, Script_Extensions, Default_Ignorable_Code_Point, Bidi_Class, names, decimal digits); UAX #31 Table 5 — Recommended Scripts (Unicode 17.0.0).","parameters":[{"name":"text","in":"query","description":"Text to reduce to its UTS #39 skeleton. Limited to 256 UTF-16 code units; whitespace is significant and is not trimmed.","required":true,"schema":{"type":"string","minLength":1,"maxLength":256},"example":"раураl","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["text","nfd"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"text,nfd"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["characters"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"characters"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ConfusablesSkeletonEnvelope"},{"$ref":"#/components/schemas/ConfusablesSkeletonRecord"}]},"example":{"data":{"text":"раураl","nfd":"раураl","skeleton":"paypal","skeletonCodePoints":["U+0070","U+0061","U+0079","U+0070","U+0061","U+006C"],"changed":true,"definition":"skeleton","bidiExact":true,"bidiNote":null,"ignorablesRemoved":0,"charactersMapped":5,"characters":[{"index":0,"character":"р","codePoint":"U+0440","name":"CYRILLIC SMALL LETTER ER","script":"Cyrl","scriptName":"Cyrillic","identifierStatus":"Allowed","identifierTypes":["Recommended"],"ignorable":false,"prototype":"p","prototypeCodePoints":["U+0070"]}]},"meta":{"endpoint":"confusables","route":"/skeleton","params":{"text":"раураl"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Unicode confusables","url":"https://randomapi.dev/apis/confusables"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/confusables/compare":{"get":{"operationId":"get_confusables_compare","tags":["developer"],"summary":"Are two strings confusable under UTS #39, and exactly which characters differ?","description":"UTS #39 skeletons, mixed-script and identifier-status checks: whether two usernames or domains are visual lookalikes, and which characters differ. Authoritative sources: Unicode Security Mechanisms data files (UTS #39, Unicode 17.0.0); Unicode Character Database 17.0.0 (Script, Script_Extensions, Default_Ignorable_Code_Point, Bidi_Class, names, decimal digits); UAX #31 Table 5 — Recommended Scripts (Unicode 17.0.0).","parameters":[{"name":"a","in":"query","description":"The first string — for example the username or domain that already exists. Limited to 256 UTF-16 code units; whitespace is significant and is not trimmed.","required":true,"schema":{"type":"string","minLength":1,"maxLength":256},"example":"paypal","x-randomapi-param-group":"route"},{"name":"b","in":"query","description":"The second string — for example the one being registered. Limited to 256 UTF-16 code units; whitespace is significant and is not trimmed.","required":true,"schema":{"type":"string","minLength":1,"maxLength":256},"example":"раураl","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["a","b"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"a,b"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["differences"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"differences"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ConfusablesCompareEnvelope"},{"$ref":"#/components/schemas/ConfusablesCompareRecord"}]},"example":{"data":{"a":"paypal","b":"раураl","equal":false,"skeletonA":"paypal","skeletonB":"paypal","confusable":true,"confusableClass":"mixed-script","bidiExact":true,"undeterminedReason":null,"resolvedScriptsA":["Latn"],"resolvedScriptsB":[],"differences":[{"index":1,"aCharacter":"a","aCodePoint":"U+0061","aName":"LATIN SMALL LETTER A","aScript":"Latn","bCharacter":"а","bCodePoint":"U+0430","bName":"CYRILLIC SMALL LETTER A","bScript":"Cyrl"}]},"meta":{"endpoint":"confusables","route":"/compare","params":{"a":"paypal","b":"раураl"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Unicode confusables","url":"https://randomapi.dev/apis/confusables"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/confusables/inspect":{"get":{"operationId":"get_confusables_inspect","tags":["developer"],"summary":"Scripts, restriction level, identifier status and mixed-number check for one string","description":"UTS #39 skeletons, mixed-script and identifier-status checks: whether two usernames or domains are visual lookalikes, and which characters differ. Authoritative sources: Unicode Security Mechanisms data files (UTS #39, Unicode 17.0.0); Unicode Character Database 17.0.0 (Script, Script_Extensions, Default_Ignorable_Code_Point, Bidi_Class, names, decimal digits); UAX #31 Table 5 — Recommended Scripts (Unicode 17.0.0).","parameters":[{"name":"text","in":"query","description":"Text to evaluate as a candidate identifier. Limited to 256 UTF-16 code units; whitespace is significant and is not trimmed.","required":true,"schema":{"type":"string","minLength":1,"maxLength":256},"example":"ѕсоре","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["text","codePointCount"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"text,codePointCount"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["characters"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"characters"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ConfusablesInspectEnvelope"},{"$ref":"#/components/schemas/ConfusablesInspectRecord"}]},"example":{"data":{"text":"ѕсоре","codePointCount":5,"nonAsciiCount":5,"scripts":["Cyrl"],"scriptsMinimal":true,"singleScript":true,"mixedScript":false,"restrictionLevel":"Single Script","identifierAllowed":true,"restrictedCharacters":[],"confusableCharacters":[{"character":"ѕ","codePoint":"U+0455","name":"CYRILLIC SMALL LETTER DZE","script":"Cyrl","scriptName":"Cyrillic","identifierStatus":"Allowed","identifierTypes":["Recommended"],"prototype":"s","confusableWithCount":21}],"mixedNumbers":false,"numberSystems":[],"skeleton":"scope","bidiExact":true,"characters":[{"index":0,"character":"ѕ","codePoint":"U+0455","name":"CYRILLIC SMALL LETTER DZE","script":"Cyrl","scriptName":"Cyrillic","identifierStatus":"Allowed","identifierTypes":["Recommended"],"augmentedScripts":["Cyrl"]}]},"meta":{"endpoint":"confusables","route":"/inspect","params":{"text":"ѕсоре"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Unicode confusables","url":"https://randomapi.dev/apis/confusables"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/confusables/character":{"get":{"operationId":"get_confusables_character","tags":["developer"],"summary":"Describe one character: script, identifier status, prototype and its skeleton siblings","description":"A compute route rather than a lookup, on purpose: every Unicode scalar value is a valid key, so there is no honest \"unknown key\" 404. A character simply absent from confusables.txt answers `prototype: null` with an empty `confusableWith`, which is the correct answer rather than a substitute record. Authoritative sources: Unicode Security Mechanisms data files (UTS #39, Unicode 17.0.0); Unicode Character Database 17.0.0 (Script, Script_Extensions, Default_Ignorable_Code_Point, Bidi_Class, names, decimal digits); UAX #31 Table 5 — Recommended Scripts (Unicode 17.0.0).","parameters":[{"name":"char","in":"query","description":"The single character to describe. Give the character itself or its code point in U+XXXX notation, so %20 and U+0020 both address the space. Not trimmed: a stray space makes the value two characters and a 400.","required":true,"schema":{"type":"string","minLength":1,"maxLength":8},"example":"а","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["character","codePoint"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"character,codePoint"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["inConfusablesData"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"inConfusablesData"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ConfusablesCharacterEnvelope"},{"$ref":"#/components/schemas/ConfusablesCharacterRecord"}]},"example":{"data":{"character":"а","codePoint":"U+0430","decimal":1072,"name":"CYRILLIC SMALL LETTER A","script":"Cyrl","scriptName":"Cyrillic","augmentedScripts":["Cyrl"],"identifierStatus":"Allowed","identifierTypes":["Recommended"],"prototype":"a","prototypeCodePoints":["U+0061"],"skeleton":"a","confusableWith":[{"character":"a","codePoint":"U+0061","name":"LATIN SMALL LETTER A","script":"Latn","scriptName":"Latin","identifierStatus":"Allowed","identifierTypes":["Recommended"],"prototype":null}],"confusableWithCount":23,"intentionalPartners":[],"nfkc":"а","inConfusablesData":true},"meta":{"endpoint":"confusables","route":"/character","params":{"char":"а"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Unicode confusables","url":"https://randomapi.dev/apis/confusables"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/confusables/intentional":{"get":{"operationId":"get_confusables_intentional","tags":["developer"],"summary":"Unicode's intentional-confusables list: pairs whose glyphs are designed to be identical","description":"UTS #39 skeletons, mixed-script and identifier-status checks: whether two usernames or domains are visual lookalikes, and which characters differ. Authoritative sources: Unicode Security Mechanisms data files (UTS #39, Unicode 17.0.0); Unicode Character Database 17.0.0 (Script, Script_Extensions, Default_Ignorable_Code_Point, Bidi_Class, names, decimal digits); UAX #31 Table 5 — Recommended Scripts (Unicode 17.0.0).","parameters":[{"name":"char","in":"query","description":"Keep only pairs containing this character on either side. Give the character itself or its code point in U+XXXX notation, so %20 and U+0020 both address the space. Not trimmed: a stray space makes the value two characters and a 400.","required":false,"schema":{"type":"string","minLength":1,"maxLength":8},"example":"а","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["a","b"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"a,b"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["sameSkeleton"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"sameSkeleton"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ConfusablesIntentionalEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/ConfusablesIntentionalRecord"}}]},"example":{"data":[{"a":"A","b":"Α","aCodePoint":"U+0041","bCodePoint":"U+0391","aName":"LATIN CAPITAL LETTER A","bName":"GREEK CAPITAL LETTER ALPHA","aScript":"Latn","bScript":"Grek","aIdentifierStatus":"Allowed","bIdentifierStatus":"Allowed","sameSkeleton":true}],"meta":{"endpoint":"confusables","route":"/intentional","count":1,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"a\":\"A\",\"b\":\"Α\",\"aCodePoint\":\"U+0041\",\"bCodePoint\":\"U+0391\",\"aName\":\"LATIN CAPITAL LETTER A\",\"bName\":\"GREEK CAPITAL LETTER ALPHA\",\"aScript\":\"Latn\",\"bScript\":\"Grek\",\"aIdentifierStatus\":\"Allowed\",\"bIdentifierStatus\":\"Allowed\",\"sameSkeleton\":true}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Unicode confusables","url":"https://randomapi.dev/apis/confusables"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/content-negotiation/parse":{"get":{"operationId":"get_content_negotiation_parse","tags":["developer"],"summary":"Parse and validate an HTTP Accept field value","description":"Parse RFC 9110 Accept media ranges and deterministically select the best available representation using specificity, parameters and q weights. Authoritative source: RFC 9110 HTTP Semantics — Accept.","parameters":[{"name":"accept","in":"query","description":"Accept field with 1–32 media ranges.","required":true,"schema":{"type":"string","minLength":3,"maxLength":2048},"example":"text/html, application/json;q=0.8","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["accept","count"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"accept,count"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["ranges"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"ranges"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ContentNegotiationParseEnvelope"},{"$ref":"#/components/schemas/ContentNegotiationParseRecord"}]},"example":{"data":{"accept":"text/html, application/json;q=0.8","count":2,"ranges":[{"mediaRange":"text/html","type":"text","subtype":"html","parameters":[],"q":1,"specificity":2,"order":0}]},"meta":{"endpoint":"content-negotiation","route":"/parse","params":{"accept":"text/html, application/json;q=0.8"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for HTTP content negotiation","url":"https://randomapi.dev/apis/content-negotiation"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/content-negotiation/select":{"get":{"operationId":"get_content_negotiation_select","tags":["developer"],"summary":"Select the best available representation for an Accept value","description":"Parse RFC 9110 Accept media ranges and deterministically select the best available representation using specificity, parameters and q weights. Authoritative source: RFC 9110 HTTP Semantics — Accept.","parameters":[{"name":"accept","in":"query","description":"Accept field with 1–32 weighted media ranges.","required":true,"schema":{"type":"string","minLength":3,"maxLength":2048},"example":"application/json, text/html;q=0.8","x-randomapi-param-group":"route"},{"name":"available","in":"query","description":"Comma-separated list of 1–32 concrete media types offered by the server.","required":true,"schema":{"type":"string","minLength":3,"maxLength":2048},"example":"text/html, application/json","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["accept","available"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"accept,available"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["matchedParameters"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"matchedParameters"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ContentNegotiationSelectEnvelope"},{"$ref":"#/components/schemas/ContentNegotiationSelectRecord"}]},"example":{"data":{"accept":"application/json, text/html;q=0.8","available":["text/html","application/json"],"matched":true,"selected":"application/json","selectedIndex":1,"matchedRange":"application/json","q":1,"specificity":2,"matchedParameters":0},"meta":{"endpoint":"content-negotiation","route":"/select","params":{"accept":"application/json, text/html;q=0.8","available":"text/html, application/json"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for HTTP content negotiation","url":"https://randomapi.dev/apis/content-negotiation"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/conversations":{"get":{"operationId":"get_conversations_root","tags":["text"],"summary":"Generate bounded fake conversations","description":"Bounded fake direct, group and support conversations with valid participant references, chronological messages and exact unread counts.","parameters":[{"name":"channel","in":"query","description":"Conversation shape: direct, group or clearly fictional customer support.","required":false,"schema":{"type":"string","enum":["direct","group","support"],"default":"group"},"example":"support","x-randomapi-param-group":"route"},{"name":"participantCount","in":"query","description":"Participant count. Defaults to 3, except direct resolves to exactly 2. Group requires at least 3; support requires at least 2.","required":false,"schema":{"type":"integer","minimum":2,"maximum":8},"example":4,"x-randomapi-param-group":"route"},{"name":"minMessages","in":"query","description":"Minimum messages per conversation (inclusive).","required":false,"schema":{"type":"integer","minimum":1,"maximum":20,"default":3},"example":4,"x-randomapi-param-group":"route"},{"name":"maxMessages","in":"query","description":"Maximum messages per conversation (inclusive). Must be ≥ minMessages.","required":false,"schema":{"type":"integer","minimum":1,"maximum":20,"default":8},"example":12,"x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Earliest message timestamp. Defaults to 30 days before resolved to. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Latest message timestamp. Defaults to today's UTC boundary. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-31","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","channel"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,channel"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["unreadCount"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"unreadCount"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ConversationsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/ConversationsRootRecord"}}]},"example":{"data":[{"id":"cnv_19a3ef920000","channel":"group","title":"Product launch","participants":[{"id":"usr_a1","name":"Avery Chen","avatarUrl":"https://randomapi.dev/api/avatars/image?seed=usr_a1","role":"member"}],"messages":[{"id":"msg_a1","senderId":"usr_a1","text":"Could you review this?","sentAt":"2026-01-10T12:00:00.000Z","read":false}],"lastMessageAt":"2026-01-10T12:00:00.000Z","unreadCount":1}],"meta":{"endpoint":"conversations","count":1,"seed":42,"params":{"channel":"group","minMessages":3,"maxMessages":8},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"cnv_19a3ef920000\",\"channel\":\"group\",\"title\":\"Product launch\",\"participants\":[{\"id\":\"usr_a1\",\"name\":\"Avery Chen\",\"avatarUrl\":\"https://randomapi.dev/api/avatars/image?seed=usr_a1\",\"role\":\"member\"}],\"messages\":[{\"id\":\"msg_a1\",\"senderId\":\"usr_a1\",\"text\":\"Could you review this?\",\"sentAt\":\"2026-01-10T12:00:00.000Z\",\"read\":false}],\"lastMessageAt\":\"2026-01-10T12:00:00.000Z\",\"unreadCount\":1}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Conversations","url":"https://randomapi.dev/apis/conversations"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/cookies/parse":{"get":{"operationId":"get_cookies_parse","tags":["developer"],"summary":"Parse a Set-Cookie value and check every storage rule","description":"Normalizes the header into the fields a user agent stores and returns a per-rule verdict trace. A string that is not a set-cookie-string at all (no '=', or an empty name) is a 400; a cookie that parses but would be refused returns 200 with accepted=false. Authoritative source: RFC 6265 (HTTP State Management Mechanism), with draft-only rules attributed inline.","parameters":[{"name":"setCookie","in":"query","description":"The Set-Cookie field value, without the field name (a leading 'Set-Cookie:' is stripped for you). Do not paste a real session cookie — use a placeholder value.","required":true,"schema":{"type":"string","maxLength":4096},"example":"__Host-sid=a1b2c3; Path=/; Secure; HttpOnly; SameSite=Lax","x-randomapi-param-group":"route"},{"name":"originUrl","in":"query","description":"The URL whose response sent the cookie. Its host drives host-only and domain-match, its path drives the §5.1.4 default-path, and its scheme decides whether Secure is allowed.","required":false,"schema":{"type":"string","maxLength":2048,"default":"https://example.com/"},"example":"https://app.example.com/dashboard/settings","x-randomapi-param-group":"route"},{"name":"at","in":"query","description":"Evaluation instant (UTC). Defaults to the current time. On /match this is both the moment the cookie was received and the moment of the request, so a positive Max-Age is never expired — model an aged-out cookie with Expires. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-15T09:30:00Z","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["name","value"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"name,value"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["warnings"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"warnings"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CookiesParseEnvelope"},{"$ref":"#/components/schemas/CookiesParseRecord"}]},"example":{"data":{"name":"__Host-sid","value":"a1b2c3","attributes":{"expires":null,"maxAge":3600,"domain":null,"path":"/","secure":true,"httpOnly":true,"sameSite":"Lax"},"effectiveExpiry":"2026-01-15T10:30:00.000Z","expirySource":"Max-Age","hostOnly":true,"cookieDomain":"app.example.com","defaultPath":"/dashboard","cookiePath":"/","prefix":"__Host-","prefixVerdict":"pass","prefixFailure":null,"accepted":true,"rules":[{"rule":"__Host- prefix requires Secure, no Domain attribute and an explicit Path=/","verdict":"fail","detail":"__Host- cookies must not carry a Domain attribute. The cookie is ignored entirely.","specSource":"rfc6265bis draft"}],"rejectedAttributes":[{"attribute":"Expires","value":"tomorrow","reason":"The value did not parse as a cookie-date under the RFC 6265 §5.1.1 algorithm, so the attribute is ignored and the cookie becomes a session cookie unless Max-Age is present.","specSource":"RFC 6265"}],"warnings":["'Domain=example.com' is not host-only: it also sends the cookie to every subdomain of example.com. Omit the Domain attribute if you want a host-only cookie."]},"meta":{"endpoint":"cookies","route":"/parse","params":{"setCookie":"__Host-sid=a1b2c3; Path=/; Secure; HttpOnly; SameSite=Lax","originUrl":"https://example.com/"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Set-Cookie Parser & Delivery API","url":"https://randomapi.dev/apis/cookies"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/cookies/match":{"get":{"operationId":"get_cookies_match","tags":["developer"],"summary":"Decide whether a cookie would be sent to a given request URL","description":"Applies the storage rules first (a cookie that was never stored can never be sent), then the retrieval rules: expiry, domain-match, path-match, Secure and SameSite. Only failing storage rules are listed; use /parse for the full storage trace. Authoritative source: RFC 6265 (HTTP State Management Mechanism), with draft-only rules attributed inline.","parameters":[{"name":"setCookie","in":"query","description":"The Set-Cookie field value, without the field name (a leading 'Set-Cookie:' is stripped for you). Do not paste a real session cookie — use a placeholder value.","required":true,"schema":{"type":"string","maxLength":4096},"example":"sid=a1b2c3; Path=/dashboard; Secure; HttpOnly; SameSite=Lax","x-randomapi-param-group":"route"},{"name":"originUrl","in":"query","description":"The URL that set the cookie. Drives host-only, domain-match and the §5.1.4 default-path.","required":true,"schema":{"type":"string","maxLength":2048},"example":"https://app.example.com/dashboard/settings","x-randomapi-param-group":"route"},{"name":"requestUrl","in":"query","description":"The URL being requested. Its host is tested against the cookie's domain and its path against the cookie's path.","required":true,"schema":{"type":"string","maxLength":2048},"example":"https://app.example.com/dashboard/settings/profile","x-randomapi-param-group":"route"},{"name":"at","in":"query","description":"Evaluation instant (UTC). Defaults to the current time. On /match this is both the moment the cookie was received and the moment of the request, so a positive Max-Age is never expired — model an aged-out cookie with Expires. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-15T09:30:00Z","x-randomapi-param-group":"route"},{"name":"sameSiteContext","in":"query","description":"Whether the request is same-site or cross-site relative to the cookie's site. Drives the SameSite decision.","required":false,"schema":{"type":"string","enum":["same-site","cross-site"],"default":"same-site"},"example":"cross-site","x-randomapi-param-group":"route"},{"name":"secureContext","in":"query","description":"Whether the request connection counts as secure for the Secure attribute. This parameter decides the check, not the requestUrl scheme, so you can model http://localhost; a mismatch with the scheme is warned about. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":false,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"isTopLevelNavigation","in":"query","description":"Whether the cross-site request is a top-level navigation (a link click) rather than a subresource. Only affects Lax and Default enforcement; a safe request method is assumed. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["wouldBeSent","stored"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"wouldBeSent,stored"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["warnings"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"warnings"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CookiesMatchEnvelope"},{"$ref":"#/components/schemas/CookiesMatchRecord"}]},"example":{"data":{"wouldBeSent":true,"stored":true,"decidingRule":null,"name":"sid","cookieDomain":"app.example.com","cookiePath":"/dashboard","hostOnly":true,"sameSite":"Lax","effectiveExpiry":null,"requestHost":"app.example.com","requestPath":"/dashboard/settings/profile","cookieHeader":"sid=a1b2c3","reasons":[{"rule":"SameSite enforcement for this request context","verdict":"fail","detail":"'Lax' enforcement withholds the cookie from cross-site subresource requests and non-top-level navigations. Set isTopLevelNavigation=true to model a link click.","specSource":"rfc6265bis draft"}],"warnings":[]},"meta":{"endpoint":"cookies","route":"/match","params":{"setCookie":"sid=a1b2c3; Path=/dashboard; Secure; HttpOnly; SameSite=Lax","originUrl":"https://app.example.com/dashboard/settings","requestUrl":"https://app.example.com/dashboard/settings/profile","sameSiteContext":"same-site","secureContext":true,"isTopLevelNavigation":false},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Set-Cookie Parser & Delivery API","url":"https://randomapi.dev/apis/cookies"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/coordinate-formats/parse":{"get":{"operationId":"get_coordinate_formats_parse","tags":["geo"],"summary":"Parse free-form coordinate text into WGS 84 decimal degrees","description":"Accepts DMS, degrees + decimal minutes, decimal degrees and ISO 6709 string expressions. Ambiguous text is rejected with a named reason instead of being guessed. Authoritative source: IARU Region 1 VHF Handbook locator definition and test cases, with ISO 6709 coordinate notation.","parameters":[{"name":"value","in":"query","description":"Coordinate text in any supported notation — DMS, degrees and decimal minutes, decimal degrees, or an ISO 6709 string expression. Spaces, colons and slashes separate the parts of one coordinate; a comma or semicolon separates the two, and that split is honoured exactly rather than re-guessed. Signs and N/S/E/W letters may not both appear. Unicode prime marks, smart quotes, '' and the Unicode minus sign are folded to their ASCII equivalents.","required":true,"schema":{"type":"string","minLength":3,"maxLength":128},"example":"57°42'12.3\"N, 011°58'01\"W","x-randomapi-param-group":"route"},{"name":"order","in":"query","description":"Which coordinate comes first when the text itself cannot say. Omit it for text with N/S/E/W letters, for ISO 6709, and where one value exceeds 90 degrees; a bare pair with both values inside ±90 is rejected until you supply it. When you do supply it for letterless text it is authoritative, so a value that cannot sit on the axis you assigned is a 400 rather than a silent swap. The resolved order is echoed in meta.params.","required":false,"schema":{"type":"string","enum":["latlng","lnglat"]},"example":"lnglat","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["input","detectedFormat"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"input,detectedFormat"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["warnings"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"warnings"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CoordinateFormatsParseEnvelope"},{"$ref":"#/components/schemas/CoordinateFormatsParseRecord"}]},"example":{"data":{"input":"57°42'12.3\"N, 011°58'01\"W","detectedFormat":"dms","detectedOrder":"latlng","latitude":57.703416667,"longitude":-11.966944444,"hemisphereSource":"letter","precisionDigits":1,"warnings":[]},"meta":{"endpoint":"coordinate-formats","route":"/parse","params":{"value":"57°42'12.3\"N, 011°58'01\"W"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Coordinate format conversion","url":"https://randomapi.dev/apis/coordinate-formats"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/coordinate-formats/convert":{"get":{"operationId":"get_coordinate_formats_convert","tags":["geo"],"summary":"Format a point as decimal degrees, DDM, DMS or ISO 6709","description":"Rounds half away from zero at the requested precision and carries seconds or minutes that reach 60 into the next larger unit. Authoritative source: IARU Region 1 VHF Handbook locator definition and test cases, with ISO 6709 coordinate notation.","parameters":[{"name":"lat","in":"query","description":"Latitude in WGS 84 decimal degrees, -90 to 90 inclusive. Required.","required":true,"schema":{"type":"number","minimum":-90,"maximum":90},"example":57.703417,"x-randomapi-param-group":"route"},{"name":"lng","in":"query","description":"Longitude in WGS 84 decimal degrees, -180 to 180 inclusive; +180 is the same meridian as -180. Required.","required":true,"schema":{"type":"number","minimum":-180,"maximum":180},"example":-11.966944,"x-randomapi-param-group":"route"},{"name":"format","in":"query","description":"Output notation: dd (signed decimal degrees), ddm (degrees + decimal minutes), dms (degrees, minutes, seconds) or iso6709 (an ISO 6709 Annex H string expression in the decimal-degrees form).","required":true,"schema":{"type":"string","enum":["dd","ddm","dms","iso6709"]},"example":"dms","x-randomapi-param-group":"route"},{"name":"precision","in":"query","description":"Fractional digits on the smallest unit of the chosen notation: degrees for dd and iso6709, minutes for ddm, seconds for dms.","required":false,"schema":{"type":"integer","minimum":0,"maximum":8,"default":3},"example":4,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["latitude","longitude"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"latitude,longitude"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["carried"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"carried"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CoordinateFormatsConvertEnvelope"},{"$ref":"#/components/schemas/CoordinateFormatsConvertRecord"}]},"example":{"data":{"latitude":57.703417,"longitude":-11.966944,"format":"dms","precision":3,"latitudeText":"57°42'12.301\"N","longitudeText":"011°58'00.998\"W","text":"57°42'12.301\"N 011°58'00.998\"W","roundedLatitude":57.703417,"roundedLongitude":-11.966944,"rounding":"half-away-from-zero","carried":false},"meta":{"endpoint":"coordinate-formats","route":"/convert","params":{"lat":57.703417,"lng":-11.966944,"format":"dms","precision":3},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Coordinate format conversion","url":"https://randomapi.dev/apis/coordinate-formats"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/coordinate-formats/maidenhead":{"get":{"operationId":"get_coordinate_formats_maidenhead","tags":["geo"],"summary":"Encode a point to a Maidenhead locator or decode one to its square","description":"Supply lat and lng to encode, or locator to decode. Either way the response describes the squaroid: its centre, its bounds and its size. Authoritative source: IARU Region 1 VHF Handbook locator definition and test cases, with ISO 6709 coordinate notation.","parameters":[{"name":"lat","in":"query","description":"Latitude in WGS 84 decimal degrees, -90 to 90 inclusive. Supply together with 'lng' to encode a point; omit both when decoding.","required":false,"schema":{"type":"number","minimum":-90,"maximum":90},"example":48.858222,"x-randomapi-param-group":"route"},{"name":"lng","in":"query","description":"Longitude in WGS 84 decimal degrees, -180 to 180 inclusive; +180 is the same meridian as -180. Supply together with 'lat' to encode a point; omit both when decoding.","required":false,"schema":{"type":"number","minimum":-180,"maximum":180},"example":2.2945,"x-randomapi-param-group":"route"},{"name":"locator","in":"query","description":"Maidenhead locator to decode, in any case. Character pairs run A–R, 0–9, A–X, 0–9, A–X. Mutually exclusive with 'lat'/'lng'.","required":false,"schema":{"type":"string","minLength":2,"maxLength":10},"example":"JN18DU","x-randomapi-param-group":"route"},{"name":"length","in":"query","description":"Locator length when encoding: an even number from 2 to 10, defaulting to 6. When decoding it must be omitted or match the locator's own length.","required":false,"schema":{"type":"integer","minimum":2,"maximum":10},"example":10,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["operation","locator"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"operation,locator"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["heightDegrees"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"heightDegrees"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CoordinateFormatsMaidenheadEnvelope"},{"$ref":"#/components/schemas/CoordinateFormatsMaidenheadRecord"}]},"example":{"data":{"operation":"encode","locator":"JN18du","locatorUpperCase":"JN18DU","length":6,"latitude":48.854166667,"longitude":2.291666667,"south":48.833333333,"west":2.25,"north":48.875,"east":2.333333333,"widthDegrees":0.083333333,"heightDegrees":0.041666667},"meta":{"endpoint":"coordinate-formats","route":"/maidenhead","params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Coordinate format conversion","url":"https://randomapi.dev/apis/coordinate-formats"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/coordinates":{"get":{"operationId":"get_coordinates_root","tags":["geo"],"summary":"Generate random coordinates (global, in a bbox, or near a point)","description":"Random geographic coordinates: uniform across the globe (no pole clustering), inside a bounding box, or within a radius of a point — with haversine distances.","parameters":[{"name":"near","in":"query","description":"Center point as 'lat,lng' (latitude -90..90, longitude -180..180). Points are sampled uniformly within 'radiusKm' of it and distanceKm is filled in. Mutually exclusive with 'bbox'.","required":false,"schema":{"type":"string"},"example":"40.7128,-74.006","x-randomapi-param-group":"route"},{"name":"radiusKm","in":"query","description":"Disk radius in km around 'near' (0.1–20000). Defaults to 50 when 'near' is set; using it without 'near' is a 400.","required":false,"schema":{"type":"number","minimum":0.1,"maximum":20000},"example":25,"x-randomapi-param-group":"route"},{"name":"bbox","in":"query","description":"Bounding box as 'minLat,minLng,maxLat,maxLng' (min ≤ max, latitudes -90..90, longitudes -180..180). Points are sampled area-uniformly inside it. Mutually exclusive with 'near'.","required":false,"schema":{"type":"string"},"example":"24.5,-125,49.5,-66.9","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["latitude","longitude"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"latitude,longitude"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["distanceKm"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"distanceKm"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CoordinatesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CoordinatesRootRecord"}}]},"example":{"data":[{"latitude":40.782912,"longitude":-73.965355,"distanceKm":7.42}],"meta":{"endpoint":"coordinates","count":1,"seed":42,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"latitude\":40.782912,\"longitude\":-73.965355,\"distanceKm\":7.42}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Coordinates","url":"https://randomapi.dev/apis/coordinates"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/cors-preflight/preflight":{"get":{"operationId":"get_cors_preflight_preflight","tags":["developer"],"summary":"Decide whether a cross-origin request triggers a CORS preflight","description":"Reports preflightRequired plus the exact condition that forces it, and reconstructs the OPTIONS request the browser would send. Nothing is fetched. Authoritative source: WHATWG Fetch Standard — CORS protocol.","parameters":[{"name":"method","in":"query","description":"HTTP method the page requests. Normalized like the Request constructor, which uppercases only DELETE, GET, HEAD, OPTIONS, POST and PUT. Forbidden methods (CONNECT, TRACE, TRACK) are rejected.","required":true,"schema":{"type":"string","minLength":1,"maxLength":64},"example":"PUT","x-randomapi-param-group":"route"},{"name":"requestHeaders","in":"query","description":"Comma-separated 'Name: value' pairs the page sets on the request (max 32 entries, max 2048 characters per value). An entry with no colon means that name with an empty value, and a repeated name models the repeated header-list entries a browser really sends. Because the list itself is comma-separated, a value containing a comma cannot be expressed. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["Content-Type:application/json"],"style":"form","explode":false,"x-randomapi-param-group":"route","x-randomapi-query-example":"Content-Type:application/json"},{"name":"mode","in":"query","description":"Request mode. Only 'cors' can produce a preflight; the other two are explained in meta.warnings.","required":false,"schema":{"type":"string","enum":["cors","no-cors","same-origin"],"default":"cors"},"example":"cors","x-randomapi-param-group":"route"},{"name":"credentials","in":"query","description":"Credentials mode of the request. 'include' is the mode that disables every Access-Control-* wildcard: allow-origin, allow-methods, allow-headers and expose-headers. It cannot change whether a preflight is required — nothing in the Fetch Standard makes it — so on /preflight it only echoes back and adds a note, and every wildcard rule it controls is evaluated on /check.","required":false,"schema":{"type":"string","enum":["omit","same-origin","include"],"default":"same-origin"},"example":"include","x-randomapi-param-group":"route"},{"name":"origin","in":"query","description":"Requesting origin as scheme://host[:port], with no path, query, fragment or trailing slash. It is serialized the way a browser serializes the Origin header before sending it — scheme and domain lowercased, an IPv6 literal compressed to its shortest form, a default port dropped — and the serialization is what appears in the reconstructed preflight.","required":false,"schema":{"type":"string","maxLength":256},"example":"https://app.example.com","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["method","mode"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"method,mode"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["preflightRequest"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"preflightRequest"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CorsPreflightPreflightEnvelope"},{"$ref":"#/components/schemas/CorsPreflightPreflightRecord"}]},"example":{"data":{"method":"PUT","mode":"cors","credentials":"same-origin","origin":"https://app.example.com","preflightRequired":true,"reasons":[{"code":"non-safelisted-method","header":null,"detail":"'PUT' is not a CORS-safelisted method; only GET, HEAD and POST avoid a preflight."}],"headers":[{"name":"content-type","valueLength":16,"forbidden":false,"safelisted":false,"unsafe":true,"note":"The Content-Type essence 'application/json' is not safelisted. Only application/x-www-form-urlencoded, multipart/form-data and text/plain avoid a preflight."}],"unsafeRequestHeaderNames":["content-type"],"safelistValueSize":16,"preflightRequest":{"method":"OPTIONS","headers":[{"name":"Accept","value":"*/*"},{"name":"Access-Control-Request-Method","value":"PUT"},{"name":"Access-Control-Request-Headers","value":"content-type"}]}},"meta":{"endpoint":"cors-preflight","route":"/preflight","params":{"method":"PUT","mode":"cors","credentials":"same-origin"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for CORS Preflight & Check API","url":"https://randomapi.dev/apis/cors-preflight"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/cors-preflight/check":{"get":{"operationId":"get_cors_preflight_check","tags":["developer"],"summary":"Check whether the browser would allow a cross-origin response","description":"Runs the CORS check and the preflight's method and header rules against the Access-Control-* values you declare, and names the first failing step. Assumes a cross-origin URL in mode 'cors'; the declared headers are applied to both the preflight response and the real response, and the preflight's status code is not modeled. Authoritative source: WHATWG Fetch Standard — CORS protocol.","parameters":[{"name":"method","in":"query","description":"HTTP method of the real request, normalized like the Request constructor. Forbidden methods (CONNECT, TRACE, TRACK) are rejected.","required":true,"schema":{"type":"string","minLength":1,"maxLength":64},"example":"PUT","x-randomapi-param-group":"route"},{"name":"origin","in":"query","description":"Requesting origin as scheme://host[:port], or the literal 'null'. It is serialized first, exactly as a browser serializes the Origin header — scheme and domain lowercased, an IPv6 literal compressed, a default port dropped — and that serialization is what allowOrigin is compared against byte-for-byte. So origin=https://app.example.com:443 matches allowOrigin=https://app.example.com, but not the other way round: allowOrigin is never rewritten. A path, query, fragment or trailing slash is a 400, not a mismatch.","required":true,"schema":{"type":"string","maxLength":256},"example":"https://app.example.com","x-randomapi-param-group":"route"},{"name":"requestHeaders","in":"query","description":"Comma-separated 'Name: value' pairs the page sets on the request (max 32 entries, max 2048 characters per value). An entry with no colon means that name with an empty value, and a repeated name models the repeated header-list entries a browser really sends. Because the list itself is comma-separated, a value containing a comma cannot be expressed. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["Content-Type:application/json"],"style":"form","explode":false,"x-randomapi-param-group":"route","x-randomapi-query-example":"Content-Type:application/json"},{"name":"credentials","in":"query","description":"Credentials mode of the request. 'include' is the mode that disables every Access-Control-* wildcard: allow-origin, allow-methods, allow-headers and expose-headers. It cannot change whether a preflight is required — nothing in the Fetch Standard makes it — so on /preflight it only echoes back and adds a note, and every wildcard rule it controls is evaluated on /check.","required":false,"schema":{"type":"string","enum":["omit","same-origin","include"],"default":"same-origin"},"example":"include","x-randomapi-param-group":"route"},{"name":"allowOrigin","in":"query","description":"Access-Control-Allow-Origin value your server returns, taken literally — it is the byte string on the wire, so it is never normalized the way 'origin' is. Omit it to model a server that sends no CORS headers at all.","required":false,"schema":{"type":"string","maxLength":256},"example":"https://app.example.com","x-randomapi-param-group":"route"},{"name":"allowMethods","in":"query","description":"Access-Control-Allow-Methods value: up to 32 entries, each an HTTP method token or the literal '*' (anything else is a 400). Only consulted when a preflight happens; '*' is ignored when the credentials mode is 'include'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["GET","PUT"],"style":"form","explode":false,"x-randomapi-param-group":"route","x-randomapi-query-example":"GET,PUT"},{"name":"allowHeaders","in":"query","description":"Access-Control-Allow-Headers value: up to 32 entries, each an HTTP field name or the literal '*' (anything else is a 400), matched case-insensitively. '*' never covers Authorization, and is ignored entirely when the credentials mode is 'include'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["Content-Type","Authorization"],"style":"form","explode":false,"x-randomapi-param-group":"route","x-randomapi-query-example":"Content-Type,Authorization"},{"name":"allowCredentials","in":"query","description":"Whether the response carries the exact header value Access-Control-Allow-Credentials: true. Only read when the credentials mode is 'include'. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"exposeHeaders","in":"query","description":"Access-Control-Expose-Headers value: up to 32 entries, each an HTTP field name or the literal '*' (anything else is a 400). The forbidden response-header names Set-Cookie and Set-Cookie2 are never exposed, and '*' is not a wildcard when the credentials mode is 'include'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["X-Request-Id"],"style":"form","explode":false,"x-randomapi-param-group":"route","x-randomapi-query-example":"X-Request-Id"},{"name":"maxAge","in":"query","description":"Access-Control-Max-Age in seconds. Omitted means 5 seconds, which is the Fetch Standard's default for a preflight response.","required":false,"schema":{"type":"integer","minimum":0,"maximum":31536000},"example":600,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["method","origin"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"method,origin"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["varyOriginAdvice"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"varyOriginAdvice"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CorsPreflightCheckEnvelope"},{"$ref":"#/components/schemas/CorsPreflightCheckRecord"}]},"example":{"data":{"method":"PUT","origin":"https://app.example.com","credentials":"include","preflightRequired":true,"allowed":false,"failedStep":"cors-check-allow-origin-mismatch","failureDetail":"Access-Control-Allow-Origin: * is compared byte-for-byte with 'https://app.example.com' once the credentials mode is 'include', and the wildcard never matches. Echo the exact origin instead and add Access-Control-Allow-Credentials: true.","originAllowed":false,"credentialsAllowed":false,"methodAllowed":true,"headersAllowed":[{"name":"authorization","allowed":false,"nonWildcard":true,"reason":"'authorization' is a CORS-non-wildcard request-header name, so Access-Control-Allow-Headers must name it explicitly; '*' never covers it."}],"readableResponseHeaders":["cache-control","content-language","content-length","content-type","expires","last-modified","pragma"],"allResponseHeadersReadable":false,"maxAge":{"seconds":5,"source":"default","note":"Browsers cap this at their own upper limit, which the Fetch Standard leaves unspecified, and may drop the entry sooner. Preflight cache entries are keyed by origin, URL, credentials mode and the individual method or header name."},"varyOriginAdvice":"Access-Control-Allow-Origin: * is a constant, so Vary: Origin is not required — just make sure the header is sent on every response for this resource, including non-CORS ones."},"meta":{"endpoint":"cors-preflight","route":"/check","params":{"method":"PUT","origin":"https://app.example.com","credentials":"same-origin","allowCredentials":false},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for CORS Preflight & Check API","url":"https://randomapi.dev/apis/cors-preflight"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/countries":{"get":{"operationId":"get_countries_root","tags":["geo"],"summary":"List all ISO 3166-1 entries (filter by region, continent, area or name)","description":"Returns the full 249-entry alphabetical table by default. Region, continent, area-bound and search filters all compose; sort reorders the result and count limits it. Authoritative sources: ISO 3166-1 + UN M49; Natural Earth public-domain map points; countries-list 3.4.0 (MIT); country-coder 5.6.1 (ISC, Mayotte only); GeoNames countryInfo.txt (CC BY 4.0) — area, continent, ccTLD and language tags.","parameters":[{"name":"region","in":"query","description":"Only return entries in this lowercase UN M49 geographic region; any keeps every region.","required":false,"schema":{"type":"string","enum":["any","africa","americas","asia","europe","oceania","antarctic"],"default":"any"},"example":"europe","x-randomapi-param-group":"route"},{"name":"continent","in":"query","description":"Only return entries on this GeoNames physical continent (AF, AN, AS, EU, NA, OC, SA); any keeps every continent. Distinct from region: Cyprus is region asia but continent EU.","required":false,"schema":{"type":"string","enum":["any","AF","AN","AS","EU","NA","OC","SA"],"default":"any"},"example":"SA","x-randomapi-param-group":"route"},{"name":"search","in":"query","description":"Case- and diacritic-insensitive substring match against the common English name (aland finds Åland Islands).","required":false,"schema":{"type":"string","minLength":1,"maxLength":100},"example":"united","x-randomapi-param-group":"route"},{"name":"minArea","in":"query","description":"Only return entries whose areaSqKm is at least this many square kilometres. The entry with no published area is excluded whenever this or maxArea is set.","required":false,"schema":{"type":"number","minimum":0},"example":1000000,"x-randomapi-param-group":"route"},{"name":"maxArea","in":"query","description":"Only return entries whose areaSqKm is at most this many square kilometres. Must be ≥ minArea when both are given; the entry with no published area is excluded whenever either bound is set.","required":false,"schema":{"type":"number","minimum":0},"example":500,"x-randomapi-param-group":"route"},{"name":"sort","in":"query","description":"Ordering of the filtered list: name is the default alphabetical order; area-desc and area-asc sort by areaSqKm, breaking ties alphabetically and placing unknown-area entries last in both directions.","required":false,"schema":{"type":"string","enum":["name","area-desc","area-asc"],"default":"name"},"example":"area-desc","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["name","code"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"name,code"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["languageTags"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"languageTags"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CountriesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CountriesRootRecord"}}]},"example":{"data":[{"name":"Denmark","code":"DK","alpha3":"DNK","numeric":"208","capital":"Copenhagen","region":"europe","subregion":"Northern Europe","currencyCode":"DKK","languages":["Danish"],"callingCode":"+45","flagEmoji":"🇩🇰","latitude":56,"longitude":10,"areaSqKm":43094,"continent":"EU","ccTLD":".dk","languageTags":["da-DK","en","fo","de-DK"]}],"meta":{"endpoint":"countries","count":1,"params":{"region":"any","continent":"any","sort":"name"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"name\":\"Denmark\",\"code\":\"DK\",\"alpha3\":\"DNK\",\"numeric\":\"208\",\"capital\":\"Copenhagen\",\"region\":\"europe\",\"subregion\":\"Northern Europe\",\"currencyCode\":\"DKK\",\"languages\":[\"Danish\"],\"callingCode\":\"+45\",\"flagEmoji\":\"🇩🇰\",\"latitude\":56,\"longitude\":10,\"areaSqKm\":43094,\"continent\":\"EU\",\"ccTLD\":\".dk\",\"languageTags\":[\"da-DK\",\"en\",\"fo\",\"de-DK\"]}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Countries","url":"https://randomapi.dev/apis/countries"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/countries/lookup":{"get":{"operationId":"get_countries_lookup","tags":["geo"],"summary":"Look up one country or territory by alpha-2 or alpha-3 code","description":"Accepts a 2- or 3-letter ISO 3166-1 code, case-insensitively. Unknown codes are explicit 404s with a nearby-code hint when available. Authoritative sources: ISO 3166-1 + UN M49; Natural Earth public-domain map points; countries-list 3.4.0 (MIT); country-coder 5.6.1 (ISC, Mayotte only); GeoNames countryInfo.txt (CC BY 4.0) — area, continent, ccTLD and language tags.","parameters":[{"name":"code","in":"query","description":"ISO 3166-1 alpha-2 or alpha-3 code, case-insensitive (DK or DNK).","required":true,"schema":{"type":"string","minLength":2,"maxLength":3},"example":"DK","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["name","code"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"name,code"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["languageTags"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"languageTags"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CountriesLookupEnvelope"},{"$ref":"#/components/schemas/CountriesLookupRecord"}]},"example":{"data":{"name":"Denmark","code":"DK","alpha3":"DNK","numeric":"208","capital":"Copenhagen","region":"europe","subregion":"Northern Europe","currencyCode":"DKK","languages":["Danish"],"callingCode":"+45","flagEmoji":"🇩🇰","latitude":56,"longitude":10,"areaSqKm":43094,"continent":"EU","ccTLD":".dk","languageTags":["da-DK","en","fo","de-DK"]},"meta":{"endpoint":"countries","route":"/lookup","params":{"code":"DK"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"No official ISO 3166-1 entry has the requested well-formed code.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?code=DNE"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Countries","url":"https://randomapi.dev/apis/countries"},"x-randomapi-kind":"real","x-randomapi-mode":"lookup"}},"/api/country-borders":{"get":{"operationId":"get_country_borders_root","tags":["geo"],"summary":"Every country and territory with its land neighbours, neighbour count, total published border length and landlocked status","description":"All 250 entries, English alphabetical order by name unless 'sort' says otherwise — the same alphabet as /api/countries, so accented names sort under their base letter ('Åland Islands' is second, not last). Land borders only — maritime neighbours are never listed. Filters compose; 'count' is capped at 100 by the platform, so use 'offset' to page through the whole table. Authoritative sources: GeoNames countryInfo.txt — neighbours column (CC BY 4.0); CIA World Factbook, Geography — Land boundaries & Coastline (US public domain; publication ended February 2026), via the factbook.json mirror (CC0 1.0); English names, regions and ISO 3166-1 identifiers joined from this project's country dataset.","parameters":[{"name":"region","in":"query","description":"Only return entries in this lowercase geographic region (africa 60, americas 57, asia 51, europe 52, oceania 29, antarctic 1).","required":false,"schema":{"type":"string","enum":["africa","americas","asia","europe","oceania","antarctic"]},"example":"europe","x-randomapi-param-group":"route"},{"name":"search","in":"query","description":"Case- and diacritic-insensitive substring match against the English name (aland finds Åland Islands).","required":false,"schema":{"type":"string","minLength":1,"maxLength":100},"example":"germany","x-randomapi-param-group":"route"},{"name":"landlocked","in":"query","description":"Restrict to the 45 landlocked entries (true) — 44 officially assigned ISO codes plus XK — or the 205 that are not (false). Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean"},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"doublyLandlocked","in":"query","description":"Restrict to entries whose every land neighbour is itself landlocked (true) — exactly LI and UZ — or exclude them (false). Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean"},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"neighbourOf","in":"query","description":"Return the land neighbours of this country as full records. Accepts alpha-2 or alpha-3 (XK/XKX included), case-insensitively.","required":false,"schema":{"type":"string"},"example":"DE","x-randomapi-param-group":"route"},{"name":"minNeighbours","in":"query","description":"Only return entries with at least this many land neighbours.","required":false,"schema":{"type":"integer","minimum":0,"maximum":14},"example":5,"x-randomapi-param-group":"route"},{"name":"maxNeighbours","in":"query","description":"Only return entries with at most this many land neighbours. 0 isolates the 87 entries that have none.","required":false,"schema":{"type":"integer","minimum":0,"maximum":14},"example":0,"x-randomapi-param-group":"route"},{"name":"sort","in":"query","description":"name is ascending in English alphabetical order (locale-aware, so 'Åland Islands' sorts under A and 'Türkiye' between 'Tunisia' and 'Turkmenistan'); neighbours and borderLength are descending. All three break ties on code ascending, and entries whose totalBorderLengthKm is null sort last under borderLength.","required":false,"schema":{"type":"string","enum":["name","neighbours","borderLength"],"default":"name"},"example":"neighbours","x-randomapi-param-group":"route"},{"name":"offset","in":"query","description":"Skip this many rows, applied after filtering and sorting. Use it with count to page.","required":false,"schema":{"type":"integer","minimum":0,"maximum":249,"default":0},"example":50,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to 50.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["code","name"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"code,name"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["notes"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"notes"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CountryBordersRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CountryBordersRootRecord"}}]},"example":{"data":[{"code":"DE","name":"Germany","region":"europe","neighbours":["AT","BE","CH","CZ","DK","FR","LU","NL","PL"],"neighbourCount":9,"totalBorderLengthKm":3694,"unknownLengthNeighbours":[],"coastlineKm":2389,"landlocked":false,"doublyLandlocked":false,"isoStatus":"officially-assigned","notes":[]}],"meta":{"endpoint":"country-borders","count":1,"params":{"sort":"name","offset":0},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"code\":\"DE\",\"name\":\"Germany\",\"region\":\"europe\",\"neighbours\":[\"AT\",\"BE\",\"CH\",\"CZ\",\"DK\",\"FR\",\"LU\",\"NL\",\"PL\"],\"neighbourCount\":9,\"totalBorderLengthKm\":3694,\"unknownLengthNeighbours\":[],\"coastlineKm\":2389,\"landlocked\":false,\"doublyLandlocked\":false,\"isoStatus\":\"officially-assigned\",\"notes\":[]}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Country land borders & neighbours","url":"https://randomapi.dev/apis/country-borders"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/country-borders/lookup":{"get":{"operationId":"get_country_borders_lookup","tags":["geo"],"summary":"One country's land neighbours with names and published border lengths in kilometres","description":"Accepts alpha-2 or alpha-3 (XK and XKX included), case-insensitively. Each neighbour carries its own published border length, plus the other side's figure when the two upstream entries disagree. A well-formed unknown code is a 404, never a substitute country. Authoritative sources: GeoNames countryInfo.txt — neighbours column (CC BY 4.0); CIA World Factbook, Geography — Land boundaries & Coastline (US public domain; publication ended February 2026), via the factbook.json mirror (CC0 1.0); English names, regions and ISO 3166-1 identifiers joined from this project's country dataset.","parameters":[{"name":"code","in":"query","description":"ISO 3166-1 alpha-2 or alpha-3 code, case-insensitive (DE or DEU). XK and XKX are accepted.","required":true,"schema":{"type":"string"},"example":"DE","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["code","name"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"code,name"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["notes"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"notes"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CountryBordersLookupEnvelope"},{"$ref":"#/components/schemas/CountryBordersLookupRecord"}]},"example":{"data":{"code":"DE","name":"Germany","region":"europe","isoStatus":"officially-assigned","neighbourCount":9,"neighbours":[{"code":"AT","name":"Austria","borderLengthKm":801,"borderLengthKmAlternate":null,"isoStatus":"officially-assigned"}],"totalBorderLengthKm":3694,"unknownLengthNeighbours":[],"coastlineKm":2389,"landlocked":false,"doublyLandlocked":false,"notes":[]},"meta":{"endpoint":"country-borders","route":"/lookup","params":{"code":"DE"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"No country or territory in the bundled border dataset has the requested well-formed code.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?code=XY"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Country land borders & neighbours","url":"https://randomapi.dev/apis/country-borders"},"x-randomapi-kind":"real","x-randomapi-mode":"lookup"}},"/api/country-borders/path":{"get":{"operationId":"get_country_borders_path","tags":["geo"],"summary":"The shortest chain of land-border crossings between two countries, or an explicit unreachable answer","description":"Graph distance over the land-adjacency graph — nothing about roads, ferries, crossing points, open borders or visas, and deliberately no distance or duration field (use /api/geodesy for that). Both codes must exist in this dataset; a bad or unknown code is a 400, because 404 is reserved for the lookup route's key. Authoritative sources: GeoNames countryInfo.txt — neighbours column (CC BY 4.0); CIA World Factbook, Geography — Land boundaries & Coastline (US public domain; publication ended February 2026), via the factbook.json mirror (CC0 1.0); English names, regions and ISO 3166-1 identifiers joined from this project's country dataset.","parameters":[{"name":"from","in":"query","description":"Origin country, alpha-2 or alpha-3, case-insensitive.","required":true,"schema":{"type":"string"},"example":"PT","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Destination country, alpha-2 or alpha-3, case-insensitive.","required":true,"schema":{"type":"string"},"example":"PL","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["from","to"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"from,to"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["unreachableReason"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"unreachableReason"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CountryBordersPathEnvelope"},{"$ref":"#/components/schemas/CountryBordersPathRecord"}]},"example":{"data":{"from":"PT","to":"PL","reachable":true,"hops":4,"path":["PT","ES","FR","DE","PL"],"crossings":[{"from":"PT","to":"ES","borderLengthKm":1224}],"unreachableReason":null},"meta":{"endpoint":"country-borders","route":"/path","params":{"from":"PT","to":"PL"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Country land borders & neighbours","url":"https://randomapi.dev/apis/country-borders"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/country-borders/landlocked":{"get":{"operationId":"get_country_borders_landlocked","tags":["geo"],"summary":"The landlocked and doubly-landlocked countries, with the evidence each classification rests on","description":"The 45 entries the upstream explicitly annotates as landlocked, with the neighbours the classification rests on. Not a duplicate of '?landlocked=true' on the root route: this one carries landlockedNeighbours and hopsToCoast. Authoritative sources: GeoNames countryInfo.txt — neighbours column (CC BY 4.0); CIA World Factbook, Geography — Land boundaries & Coastline (US public domain; publication ended February 2026), via the factbook.json mirror (CC0 1.0); English names, regions and ISO 3166-1 identifiers joined from this project's country dataset.","parameters":[{"name":"doubly","in":"query","description":"Restrict to the doubly landlocked entries — every land neighbour landlocked too (LI and UZ). Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"region","in":"query","description":"Only return landlocked entries in this region (africa 16, americas 2, asia 12, europe 15, oceania 0, antarctic 0).","required":false,"schema":{"type":"string","enum":["africa","americas","asia","europe","oceania","antarctic"]},"example":"africa","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["code","name"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"code,name"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["hopsToCoast"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"hopsToCoast"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CountryBordersLandlockedEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CountryBordersLandlockedRecord"}}]},"example":{"data":[{"code":"UZ","name":"Uzbekistan","region":"asia","isoStatus":"officially-assigned","coastlineKm":0,"doublyLandlocked":true,"neighbours":["AF","KG","KZ","TJ","TM"],"landlockedNeighbours":["AF","KG","KZ","TJ","TM"],"hopsToCoast":2}],"meta":{"endpoint":"country-borders","route":"/landlocked","count":1,"params":{"doubly":false},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"code\":\"UZ\",\"name\":\"Uzbekistan\",\"region\":\"asia\",\"isoStatus\":\"officially-assigned\",\"coastlineKm\":0,\"doublyLandlocked\":true,\"neighbours\":[\"AF\",\"KG\",\"KZ\",\"TJ\",\"TM\"],\"landlockedNeighbours\":[\"AF\",\"KG\",\"KZ\",\"TJ\",\"TM\"],\"hopsToCoast\":2}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Country land borders & neighbours","url":"https://randomapi.dev/apis/country-borders"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/country-stats":{"get":{"operationId":"get_country_stats_root","tags":["geo"],"summary":"Country statistics, latest or for one year","description":"One record per country, alphabetical. Filters compose; count limits the already-filtered list. Aggregates are never returned here. Authoritative sources: World Bank World Development Indicators (release 2026-07-13, CC BY 4.0, reshaped); UN Population Division, World Population Prospects (upstream of SP.POP.TOTL); ISO 3166-1 country codes (used to separate countries from World Bank aggregates).","parameters":[{"name":"country","in":"query","description":"ISO 3166-1 alpha-2 or alpha-3 codes, comma-separated. A code outside this snapshot is a 400, not a silent empty result. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["DE","FR","IT"],"style":"form","explode":false,"x-randomapi-param-group":"route","x-randomapi-query-example":"DE,FR,IT"},{"name":"indicators","in":"query","description":"Which indicators to include, comma-separated: population, surfaceArea, populationDensity, gdp, gdpPerCapita, lifeExpectancy, urbanPopulationPercent, internetUsersPercent. Omit for all eight. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["population","gdp","lifeExpectancy"],"style":"form","explode":false,"x-randomapi-param-group":"route","x-randomapi-query-example":"population,gdp,lifeExpectancy"},{"name":"year","in":"query","description":"`latest` gives each indicator's own most recent observation; a four-digit year between 1960 and 2025 gives exactly that year, or null when nothing was published for it.","required":false,"schema":{"type":"string","default":"latest"},"example":"2000","x-randomapi-param-group":"route"},{"name":"region","in":"query","description":"Restrict to one continental region — the same grouping /api/countries uses, minus `antarctic`: no Antarctic entry has a World Bank economy, so no row here could ever carry it.","required":false,"schema":{"type":"string","enum":["africa","americas","asia","europe","oceania","any"],"default":"any"},"example":"europe","x-randomapi-param-group":"route"},{"name":"incomeGroup","in":"query","description":"Restrict to one World Bank income classification: high, upper-middle, lower-middle or low.","required":false,"schema":{"type":"string","enum":["high","upper-middle","lower-middle","low","any"],"default":"any"},"example":"high","x-randomapi-param-group":"route"},{"name":"minPopulation","in":"query","description":"Only countries whose population in the resolved year is at least this. Countries with no population value for that year are excluded.","required":false,"schema":{"type":"integer","minimum":0},"example":100000000,"x-randomapi-param-group":"route"},{"name":"maxPopulation","in":"query","description":"Only countries whose population in the resolved year is at most this. Countries with no population value for that year are excluded.","required":false,"schema":{"type":"integer","minimum":0},"example":1000000,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["country","code"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"country,code"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["indicators"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"indicators"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CountryStatsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CountryStatsRootRecord"}}]},"example":{"data":[{"country":"Germany","code":"DE","alpha3":"DEU","region":"europe","worldBankRegion":"Europe & Central Asia","incomeGroup":"High income","indicators":{"population":{"value":83516593,"year":2024},"gdp":{"value":4685590000000,"year":2024}}}],"meta":{"endpoint":"country-stats","count":1,"params":{"year":"latest","region":"any","incomeGroup":"any"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"country\":\"Germany\",\"code\":\"DE\",\"alpha3\":\"DEU\",\"region\":\"europe\",\"worldBankRegion\":\"Europe & Central Asia\",\"incomeGroup\":\"High income\",\"indicators\":{\"population\":{\"value\":83516593,\"year\":2024},\"gdp\":{\"value\":4685590000000,\"year\":2024}}}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Country statistics","url":"https://randomapi.dev/apis/country-stats"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/country-stats/series":{"get":{"operationId":"get_country_stats_series","tags":["geo"],"summary":"Annual series for one country or World Bank aggregate","description":"One record per indicator and year, in documented indicator order then year ascending. Years the World Bank does not publish are present with a null value so a gap stays visible. Authoritative sources: World Bank World Development Indicators (release 2026-07-13, CC BY 4.0, reshaped); UN Population Division, World Population Prospects (upstream of SP.POP.TOTL); ISO 3166-1 country codes (used to separate countries from World Bank aggregates).","parameters":[{"name":"economy","in":"query","description":"ISO 3166-1 alpha-2 or alpha-3 country code, or a World Bank aggregate code such as `WLD` (World) or `EMU` (Euro area). Every record says which it is via `isAggregate`.","required":true,"schema":{"type":"string"},"example":"DEU","x-randomapi-param-group":"route"},{"name":"indicators","in":"query","description":"Which indicators to include, comma-separated: population, surfaceArea, populationDensity, gdp, gdpPerCapita, lifeExpectancy, urbanPopulationPercent, internetUsersPercent. Omit for all eight. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["population","gdp","lifeExpectancy"],"style":"form","explode":false,"x-randomapi-param-group":"route","x-randomapi-query-example":"population,gdp,lifeExpectancy"},{"name":"from","in":"query","description":"First year, inclusive. Defaults to 9 years before `to`.","required":false,"schema":{"type":"integer","minimum":1960,"maximum":2025},"example":2000,"x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Last year, inclusive. Defaults to 2025.","required":false,"schema":{"type":"integer","minimum":1960,"maximum":2025},"example":2024,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["economy","alpha3"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"economy,alpha3"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["value"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"value"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CountryStatsSeriesEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CountryStatsSeriesRecord"}}]},"example":{"data":[{"economy":"Germany","alpha3":"DEU","code":"DE","isAggregate":false,"indicator":"population","year":2024,"value":83516593}],"meta":{"endpoint":"country-stats","route":"/series","count":1,"params":{"economy":"DEU"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"economy\":\"Germany\",\"alpha3\":\"DEU\",\"code\":\"DE\",\"isAggregate\":false,\"indicator\":\"population\",\"year\":2024,\"value\":83516593}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"The requested code is not an economy in this pinned World Development Indicators snapshot — either it is not an ISO 3166-1 code or a World Bank aggregate code, or it is an ISO country the World Bank does not cover (Antarctica, Taiwan and most small dependencies).","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?economy=AQ"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Country statistics","url":"https://randomapi.dev/apis/country-stats"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/country-stats/ranking":{"get":{"operationId":"get_country_stats_ranking","tags":["geo"],"summary":"Rank countries by one indicator","description":"Countries only — World Bank aggregates are never ranked. Countries with no value for the resolved year are left out of the ranking and reported in meta.warnings; equal values share a rank. Authoritative sources: World Bank World Development Indicators (release 2026-07-13, CC BY 4.0, reshaped); UN Population Division, World Population Prospects (upstream of SP.POP.TOTL); ISO 3166-1 country codes (used to separate countries from World Bank aggregates).","parameters":[{"name":"indicator","in":"query","description":"Which indicator to rank by.","required":false,"schema":{"type":"string","enum":["population","surfaceArea","populationDensity","gdp","gdpPerCapita","lifeExpectancy","urbanPopulationPercent","internetUsersPercent"],"default":"population"},"example":"gdp","x-randomapi-param-group":"route"},{"name":"year","in":"query","description":"`latest` or a four-digit year between 1960 and 2025. Omitted or `latest` resolves to the indicator's most recent comparable year — the newest year still covering at least 80% of the countries it covers in its best year — and the resolved year is echoed in meta.params.","required":false,"schema":{"type":"string"},"example":"2000","x-randomapi-param-group":"route"},{"name":"order","in":"query","description":"Highest value first (desc) or lowest first (asc).","required":false,"schema":{"type":"string","enum":["desc","asc"],"default":"desc"},"example":"asc","x-randomapi-param-group":"route"},{"name":"region","in":"query","description":"Restrict to one continental region — the same grouping /api/countries uses, minus `antarctic`: no Antarctic entry has a World Bank economy, so no row here could ever carry it.","required":false,"schema":{"type":"string","enum":["africa","americas","asia","europe","oceania","any"],"default":"any"},"example":"europe","x-randomapi-param-group":"route"},{"name":"incomeGroup","in":"query","description":"Restrict to one World Bank income classification: high, upper-middle, lower-middle or low.","required":false,"schema":{"type":"string","enum":["high","upper-middle","lower-middle","low","any"],"default":"any"},"example":"high","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to 10.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["rank","country"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"rank,country"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["value"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"value"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CountryStatsRankingEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CountryStatsRankingRecord"}}]},"example":{"data":[{"rank":1,"country":"India","code":"IN","alpha3":"IND","region":"asia","worldBankRegion":"South Asia","incomeGroup":"Lower middle income","indicator":"population","year":2025,"value":1463865525}],"meta":{"endpoint":"country-stats","route":"/ranking","count":1,"params":{"indicator":"population","order":"desc","region":"any","incomeGroup":"any"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"rank\":1,\"country\":\"India\",\"code\":\"IN\",\"alpha3\":\"IND\",\"region\":\"asia\",\"worldBankRegion\":\"South Asia\",\"incomeGroup\":\"Lower middle income\",\"indicator\":\"population\",\"year\":2025,\"value\":1463865525}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Country statistics","url":"https://randomapi.dev/apis/country-stats"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/country-stats/aggregates":{"get":{"operationId":"get_country_stats_aggregates","tags":["geo"],"summary":"World Bank aggregates (World, Euro area, income and lending groups)","description":"The rows WDI ships alongside countries but leaves without a region. They are kept here, separate, so they can never be mistaken for a country in a list or a ranking. Authoritative sources: World Bank World Development Indicators (release 2026-07-13, CC BY 4.0, reshaped); UN Population Division, World Population Prospects (upstream of SP.POP.TOTL); ISO 3166-1 country codes (used to separate countries from World Bank aggregates).","parameters":[{"name":"aggregate","in":"query","description":"World Bank aggregate codes, comma-separated — for example WLD, EMU, EUU, HIC. Omit for all of them. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["WLD","EMU"],"style":"form","explode":false,"x-randomapi-param-group":"route","x-randomapi-query-example":"WLD,EMU"},{"name":"indicators","in":"query","description":"Which indicators to include, comma-separated: population, surfaceArea, populationDensity, gdp, gdpPerCapita, lifeExpectancy, urbanPopulationPercent, internetUsersPercent. Omit for all eight. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["population","gdp","lifeExpectancy"],"style":"form","explode":false,"x-randomapi-param-group":"route","x-randomapi-query-example":"population,gdp,lifeExpectancy"},{"name":"year","in":"query","description":"`latest` gives each indicator's own most recent observation; a four-digit year between 1960 and 2025 gives exactly that year.","required":false,"schema":{"type":"string","default":"latest"},"example":"2000","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["aggregate","code"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"aggregate,code"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["indicators"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"indicators"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CountryStatsAggregatesEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CountryStatsAggregatesRecord"}}]},"example":{"data":[{"aggregate":"Euro area","code":"EMU","note":"Euro area aggregate.","indicators":{"population":{"value":8215424893,"year":2025}}}],"meta":{"endpoint":"country-stats","route":"/aggregates","count":1,"params":{"year":"latest"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"aggregate\":\"Euro area\",\"code\":\"EMU\",\"note\":\"Euro area aggregate.\",\"indicators\":{\"population\":{\"value\":8215424893,\"year\":2025}}}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Country statistics","url":"https://randomapi.dev/apis/country-stats"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/country-stats/indicators":{"get":{"operationId":"get_country_stats_indicators","tags":["geo"],"summary":"The eight bundled indicators, with definitions and coverage","description":"What each indicator key means, what the World Bank calls it, which organisations produce it and how completely it is populated in this snapshot. Authoritative sources: World Bank World Development Indicators (release 2026-07-13, CC BY 4.0, reshaped); UN Population Division, World Population Prospects (upstream of SP.POP.TOTL); ISO 3166-1 country codes (used to separate countries from World Bank aggregates).","parameters":[{"name":"indicators","in":"query","description":"Which indicators to include, comma-separated: population, surfaceArea, populationDensity, gdp, gdpPerCapita, lifeExpectancy, urbanPopulationPercent, internetUsersPercent. Omit for all eight. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["population","gdp","lifeExpectancy"],"style":"form","explode":false,"x-randomapi-param-group":"route","x-randomapi-query-example":"population,gdp,lifeExpectancy"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["key","code"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"key,code"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["observations"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"observations"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CountryStatsIndicatorsEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CountryStatsIndicatorsRecord"}}]},"example":{"data":[{"key":"population","code":"SP.POP.TOTL","name":"Population, total","unit":"people","definition":"Total population is based on the de facto definition of population…","sourceOrganization":"World Population Prospects, United Nations (UN), uri: https://population.un.org/wpp/, publisher: UN Population Division","firstYear":1960,"lastYear":2025,"latestComparableYear":2025,"significantDigits":6,"countriesWithData":215,"observations":17262}],"meta":{"endpoint":"country-stats","route":"/indicators","count":1,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"key\":\"population\",\"code\":\"SP.POP.TOTL\",\"name\":\"Population, total\",\"unit\":\"people\",\"definition\":\"Total population is based on the de facto definition of population…\",\"sourceOrganization\":\"World Population Prospects, United Nations (UN), uri: https://population.un.org/wpp/, publisher: UN Population Division\",\"firstYear\":1960,\"lastYear\":2025,\"latestComparableYear\":2025,\"significantDigits\":6,\"countriesWithData\":215,\"observations\":17262}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Country statistics","url":"https://randomapi.dev/apis/country-stats"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/country-subdivisions":{"get":{"operationId":"get_country_subdivisions_root","tags":["geo"],"summary":"List ISO 3166-2 subdivisions, filtered by country, parent or nesting level","description":"Returns matching subdivisions ordered by ISO 3166-2 code, which is also country-major. Filters compose; a zero-match filter returns an empty list plus a warning naming what was filtered. At most 100 records come back per request — use 'offset' to page. Authoritative sources: Unicode CLDR release-48-2 — subdivision names, containment and alias tables (5 files, SHA-256 pinned); ISO 3166-2 — the code system CLDR's subdivision data tracks; ISO 3166-1 country names and codes — this project's countries dataset.","parameters":[{"name":"country","in":"query","description":"Only subdivisions of this country. Takes an ISO 3166-1 alpha-2 or alpha-3 code, case-insensitively (us, US, usa and USA all resolve to US); the canonical alpha-2 is echoed in meta.params.","required":false,"schema":{"type":"string"},"example":"US","x-randomapi-param-group":"route"},{"name":"search","in":"query","description":"Case- and diacritic-insensitive contains match on the subdivision name (zurich finds Zürich). It does not match codes — use /lookup for a code.","required":false,"schema":{"type":"string","minLength":2,"maxLength":60},"example":"cal","x-randomapi-param-group":"route"},{"name":"parent","in":"query","description":"Only the direct children of this subdivision. Takes a CURRENT ISO 3166-2 code, accepting the same spellings as /lookup (GB-ENG, gb-eng, gb_eng, gbeng); the canonical form is echoed in meta.params. A withdrawn or unknown code is a 400, never a silent empty list.","required":false,"schema":{"type":"string","minLength":3,"maxLength":12},"example":"GB-ENG","x-randomapi-param-group":"route"},{"name":"level","in":"query","description":"Only subdivisions at this nesting level: 1 = contained directly by the country, 2 = nested inside another subdivision. Omitted returns both.","required":false,"schema":{"type":"integer","minimum":1,"maximum":2},"example":1,"x-randomapi-param-group":"route"},{"name":"offset","in":"query","description":"Skip this many matches before returning records. A response returns at most 100 subdivisions, so this is how you page through a larger match set.","required":false,"schema":{"type":"integer","minimum":0,"maximum":5045,"default":0},"example":100,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to 100.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["code","name"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"code,name"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["aliasOf"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"aliasOf"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CountrySubdivisionsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CountrySubdivisionsRootRecord"}}]},"example":{"data":[{"code":"US-CA","name":"California","cldrName":"California","countryCode":"US","country":"United States","parentCode":"GB-ENG","level":1,"aliasOf":null}],"meta":{"endpoint":"country-subdivisions","count":1,"params":{"offset":0},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"code\":\"US-CA\",\"name\":\"California\",\"cldrName\":\"California\",\"countryCode\":\"US\",\"country\":\"United States\",\"parentCode\":\"GB-ENG\",\"level\":1,\"aliasOf\":null}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Country subdivisions (ISO 3166-2)","url":"https://randomapi.dev/apis/country-subdivisions"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/country-subdivisions/lookup":{"get":{"operationId":"get_country_subdivisions_lookup","tags":["geo"],"summary":"Look up one ISO 3166-2 subdivision by code","description":"Resolves a single current ISO 3166-2 code and adds its direct children. A syntactically valid code that is not current is an explicit 404 that says WHY — the country has no subdivisions, the code is deprecated (with CLDR's replacement where one is recorded), or CLDR records it as an overlong alias of an ISO 3166-1 code. Never a substitute record. Authoritative sources: Unicode CLDR release-48-2 — subdivision names, containment and alias tables (5 files, SHA-256 pinned); ISO 3166-2 — the code system CLDR's subdivision data tracks; ISO 3166-1 country names and codes — this project's countries dataset.","parameters":[{"name":"code","in":"query","description":"An ISO 3166-2 code. Case-insensitive, and the separator may be a single `-`, `_` or plain space, or omitted entirely — US-CA, us-ca, us_ca, 'US CA' and usca all resolve to US-CA. Anything looser is rejected rather than quietly resolved: US--CA, U-S-A, US.CA and any other whitespace in the middle (a tab, a newline, a non-breaking space) all get a 400 that names the value. Surrounding whitespace is trimmed. The generous length bound is deliberate: it lets a wrong-shaped value get an error that names the value and the rule, instead of a bare length complaint.","required":true,"schema":{"type":"string","minLength":3,"maxLength":12},"example":"US-CA","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["code","name"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"code,name"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["children"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"children"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CountrySubdivisionsLookupEnvelope"},{"$ref":"#/components/schemas/CountrySubdivisionsLookupRecord"}]},"example":{"data":{"code":"US-CA","name":"California","cldrName":"California","countryCode":"US","country":"United States","parentCode":"GB-ENG","level":1,"aliasOf":null,"childCount":152,"children":["GB-BAS","GB-BBD","GB-BCP"]},"meta":{"endpoint":"country-subdivisions","route":"/lookup","params":{"code":"US-CA"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"The requested well-formed subdivision code is not a current CLDR ISO 3166-2 entry.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?code=ZZ-01"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Country subdivisions (ISO 3166-2)","url":"https://randomapi.dev/apis/country-subdivisions"},"x-randomapi-kind":"real","x-randomapi-mode":"lookup"}},"/api/country-subdivisions/countries":{"get":{"operationId":"get_country_subdivisions_countries","tags":["geo"],"summary":"Per-country subdivision counts — the auditable index","description":"One row for every one of the 249 officially assigned ISO 3166-1 countries, ordered by alpha-2 code, so a zero on the main route is provable rather than suspicious. 249 rows means three pages at 100 per response — use 'offset'. Authoritative sources: Unicode CLDR release-48-2 — subdivision names, containment and alias tables (5 files, SHA-256 pinned); ISO 3166-2 — the code system CLDR's subdivision data tracks; ISO 3166-1 country names and codes — this project's countries dataset.","parameters":[{"name":"sourceStatement","in":"query","description":"Filter by what CLDR says about the country: subdivisions (CLDR lists at least one), none (CLDR states it has none), unstated (CLDR says neither). any keeps every row.","required":false,"schema":{"type":"string","enum":["any","subdivisions","none","unstated"],"default":"any"},"example":"none","x-randomapi-param-group":"route"},{"name":"hasSubdivisions","in":"query","description":"true keeps only countries with at least one shipped subdivision, false keeps only those with exactly zero. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean"},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"search","in":"query","description":"Case- and diacritic-insensitive contains match on the English country name.","required":false,"schema":{"type":"string","minLength":2,"maxLength":60},"example":"united","x-randomapi-param-group":"route"},{"name":"offset","in":"query","description":"Skip this many matches before returning records. A response returns at most 100 countries, so this is how you page through a larger match set.","required":false,"schema":{"type":"integer","minimum":0,"maximum":248,"default":0},"example":100,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to 100.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["countryCode","country"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"countryCode,country"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["aliasedCodeCount"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"aliasedCodeCount"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CountrySubdivisionsCountriesEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CountrySubdivisionsCountriesRecord"}}]},"example":{"data":[{"countryCode":"US","country":"United States","subdivisionCount":57,"level1Count":57,"level2Count":0,"sourceStatement":"subdivisions","deprecatedCodeCount":0,"aliasedCodeCount":6}],"meta":{"endpoint":"country-subdivisions","route":"/countries","count":1,"params":{"sourceStatement":"any","offset":0},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"countryCode\":\"US\",\"country\":\"United States\",\"subdivisionCount\":57,\"level1Count\":57,\"level2Count\":0,\"sourceStatement\":\"subdivisions\",\"deprecatedCodeCount\":0,\"aliasedCodeCount\":6}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Country subdivisions (ISO 3166-2)","url":"https://randomapi.dev/apis/country-subdivisions"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/country-subdivisions/deprecated":{"get":{"operationId":"get_country_subdivisions_deprecated","tags":["geo"],"summary":"Subdivision codes CLDR marks deprecated, and their recorded replacements","description":"The migration route: the 599 codes CLDR's own subdivisionAlias table marks reason=\"deprecated\", ordered by code. 120 of them carry a replacement CLDR actually records; the rest use its \"unknown\" form and come back with an empty replacedBy rather than a guess. Authoritative sources: Unicode CLDR release-48-2 — subdivision names, containment and alias tables (5 files, SHA-256 pinned); ISO 3166-2 — the code system CLDR's subdivision data tracks; ISO 3166-1 country names and codes — this project's countries dataset.","parameters":[{"name":"country","in":"query","description":"Only deprecated codes of this country. Takes an ISO 3166-1 alpha-2 or alpha-3 code, case-insensitively (us, US, usa and USA all resolve to US); the canonical alpha-2 is echoed in meta.params.","required":false,"schema":{"type":"string"},"example":"LV","x-randomapi-param-group":"route"},{"name":"search","in":"query","description":"Case- and diacritic-insensitive contains match on the deprecated code's name. The 227 rows CLDR deprecates without ever publishing a name can never match it.","required":false,"schema":{"type":"string","minLength":2,"maxLength":60},"example":"carbonia","x-randomapi-param-group":"route"},{"name":"hasReplacement","in":"query","description":"true keeps only the rows where CLDR records a replacement code, false keeps only the rows where it does not. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean"},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"offset","in":"query","description":"Skip this many matches before returning records. A response returns at most 100 codes, so this is how you page through a larger match set.","required":false,"schema":{"type":"integer","minimum":0,"maximum":598,"default":0},"example":100,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to 100.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["code","name"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"code,name"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["replacementKnown"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"replacementKnown"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CountrySubdivisionsDeprecatedEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CountrySubdivisionsDeprecatedRecord"}}]},"example":{"data":[{"code":"IT-CI","name":"Carbonia-Iglesias","cldrName":"Carbonia-Iglesias","countryCode":"IT","country":"Italy","replacedBy":[],"replacementKnown":false}],"meta":{"endpoint":"country-subdivisions","route":"/deprecated","count":1,"params":{"offset":0},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"code\":\"IT-CI\",\"name\":\"Carbonia-Iglesias\",\"cldrName\":\"Carbonia-Iglesias\",\"countryCode\":\"IT\",\"country\":\"Italy\",\"replacedBy\":[],\"replacementKnown\":false}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Country subdivisions (ISO 3166-2)","url":"https://randomapi.dev/apis/country-subdivisions"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/crawlers":{"get":{"operationId":"get_crawlers_root","tags":["internet"],"summary":"List known crawler and AI-bot user-agent patterns","description":"All 1502 bundled patterns, ordered by 'pattern' ascending on UTF-16 code units so paging with 'offset' is stable. Filters compose with AND; a combination that matches nothing returns an empty list plus a warning, never a substitute row. Authoritative sources: crawler-user-agents (monperrus), MIT — snapshot 2026-07-30; OpenAI Crawlers documentation; Anthropic crawler documentation; Perplexity Crawlers documentation; Google crawlers and fetchers documentation; About Applebot — Apple Support; CCBot — Common Crawl; Meta web crawlers documentation; About Amazonbot — Amazon Developer; Mistral crawlers documentation; OpenAI advertiser crawler guidance; Perplexity robots.txt policy.","parameters":[{"name":"tag","in":"query","description":"Keep only rows the upstream project gives this tag. A row can carry several. The 4 operator-documentation rows carry no tags and are never returned by this filter.","required":false,"schema":{"type":"string","enum":["search-engine","advertising","feed-reader","http-library","social-preview","archiver","seo","monitoring","scanner","ai-crawler","academic","browser-automation","any"],"default":"any"},"example":"ai-crawler","x-randomapi-param-group":"route"},{"name":"operator","in":"query","description":"Keep only rows curated to this operator — the ones whose own documentation states the token.","required":false,"schema":{"type":"string","enum":["openai","anthropic","perplexity","google","apple","common-crawl","meta","amazon","mistral","any"],"default":"any"},"example":"anthropic","x-randomapi-param-group":"route"},{"name":"documented","in":"query","description":"true keeps only rows whose operator documents the bot itself (operator is not null); false keeps only the uncurated community rows. Combining false with an operator is a 400, because nothing can satisfy both. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean"},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"search","in":"query","description":"Case-insensitive substring match against 'pattern', 'robotsToken' and 'operator'. At least 2 characters — a single character matches almost the whole list and is rejected with a 400.","required":false,"schema":{"type":"string","maxLength":64},"example":"perplexity","x-randomapi-param-group":"route"},{"name":"offset","in":"query","description":"Skip this many matches before 'count' is applied — the list is far longer than count's ceiling of 100, so ?count=100&offset=100 returns the second hundred.","required":false,"schema":{"type":"integer","minimum":0,"maximum":5000,"default":0},"example":100,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to 50.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["pattern","patternSource"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"pattern,patternSource"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["addedOn"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"addedOn"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CrawlersRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CrawlersRootRecord"}}]},"example":{"data":[{"pattern":"[cC]laude[bB]ot","patternSource":"crawler-user-agents","tags":["ai-crawler"],"operator":"Anthropic","operatorId":"anthropic","robotsToken":"ClaudeBot","purpose":"ai-training","exampleUserAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","referenceUrl":"http://www.google.com/bot.html","operatorDocsUrl":"https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler","verification":{"method":"published-ip-ranges","url":"https://claude.com/crawling/bots.json"},"note":"Control token only: Google states it has no separate HTTP request user-agent string, that crawling is done with existing Google user-agent strings and the token is used in a control capacity.","addedOn":"2015-04-14"}],"meta":{"endpoint":"crawlers","count":1,"params":{"tag":"any","operator":"any","offset":0},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"pattern\":\"[cC]laude[bB]ot\",\"patternSource\":\"crawler-user-agents\",\"tags\":[\"ai-crawler\"],\"operator\":\"Anthropic\",\"operatorId\":\"anthropic\",\"robotsToken\":\"ClaudeBot\",\"purpose\":\"ai-training\",\"exampleUserAgent\":\"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)\",\"referenceUrl\":\"http://www.google.com/bot.html\",\"operatorDocsUrl\":\"https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler\",\"verification\":{\"method\":\"published-ip-ranges\",\"url\":\"https://claude.com/crawling/bots.json\"},\"note\":\"Control token only: Google states it has no separate HTTP request user-agent string, that crawling is done with existing Google user-agent strings and the token is used in a control capacity.\",\"addedOn\":\"2015-04-14\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Crawler and AI-bot user agents","url":"https://randomapi.dev/apis/crawlers"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/crawlers/detect":{"get":{"operationId":"get_crawlers_detect","tags":["internet"],"summary":"Check a user-agent string against every known crawler pattern","description":"Scans the string you send against all 1502 bundled patterns and returns every match. Pure function of 'userAgent': no clock, no network, no state. The string is taken byte for byte — nothing is trimmed, because 13 patterns are anchored and a stray leading space genuinely changes the verdict. Authoritative sources: crawler-user-agents (monperrus), MIT — snapshot 2026-07-30; OpenAI Crawlers documentation; Anthropic crawler documentation; Perplexity Crawlers documentation; Google crawlers and fetchers documentation; About Applebot — Apple Support; CCBot — Common Crawl; Meta web crawlers documentation; About Amazonbot — Amazon Developer; Mistral crawlers documentation; OpenAI advertiser crawler guidance; Perplexity robots.txt policy.","parameters":[{"name":"userAgent","in":"query","description":"The User-Agent header value to test, exactly as received. Taken byte for byte: leading and trailing whitespace is kept (and warned about) rather than stripped, matching is case-sensitive, and a CR or LF is a 400 because an HTTP field value is a single line. Capped at 1024 characters, which every string bundled here fits inside.","required":true,"schema":{"type":"string"},"example":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["userAgent","isKnownCrawler"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"userAgent,isKnownCrawler"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["robotsTokens"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"robotsTokens"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CrawlersDetectEnvelope"},{"$ref":"#/components/schemas/CrawlersDetectRecord"}]},"example":{"data":{"userAgent":"CCBot/2.0 (https://commoncrawl.org/faq/)","isKnownCrawler":true,"matchCount":1,"matches":[{"pattern":"CCBot","robotsToken":"CCBot","operator":"Common Crawl"}],"operators":["Common Crawl"],"robotsTokens":["CCBot"]},"meta":{"endpoint":"crawlers","route":"/detect","params":{"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Crawler and AI-bot user agents","url":"https://randomapi.dev/apis/crawlers"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/crawlers/robots-tokens":{"get":{"operationId":"get_crawlers_robots_tokens","tags":["internet"],"summary":"The robots.txt tokens each operator publishes for its own crawlers","description":"The curated half of this endpoint: 27 tokens from 9 operators, each read off that operator's own documentation page and last checked on 2026-08-27. A curated subset per operator, not a complete catalogue — follow each row's 'docsUrl' for the operator's full list. Ordered by operatorId then token. Authoritative sources: crawler-user-agents (monperrus), MIT — snapshot 2026-07-30; OpenAI Crawlers documentation; Anthropic crawler documentation; Perplexity Crawlers documentation; Google crawlers and fetchers documentation; About Applebot — Apple Support; CCBot — Common Crawl; Meta web crawlers documentation; About Amazonbot — Amazon Developer; Mistral crawlers documentation; OpenAI advertiser crawler guidance; Perplexity robots.txt policy.","parameters":[{"name":"operator","in":"query","description":"Only this operator's tokens.","required":false,"schema":{"type":"string","enum":["openai","anthropic","perplexity","google","apple","common-crawl","meta","amazon","mistral","any"],"default":"any"},"example":"openai","x-randomapi-param-group":"route"},{"name":"purpose","in":"query","description":"Only tokens recorded with this purpose. The value restates the operator's own published wording on every row except Amazonbot, CCBot and meta-webindexer, where the row's note says the label is ours.","required":false,"schema":{"type":"string","enum":["search","ai-training","user-triggered","advertising","site-owner-requested","link-preview","general","any"],"default":"any"},"example":"ai-training","x-randomapi-param-group":"route"},{"name":"robotsTxtBehavior","in":"query","description":"Only tokens whose operator publishes this robots.txt behaviour about itself. This is policy metadata, not independent verification of crawler compliance.","required":false,"schema":{"type":"string","enum":["obeys","obeys-except-integrity-checks","user-triggered-may-ignore","any"],"default":"any"},"example":"user-triggered-may-ignore","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["operatorId","operator"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"operatorId,operator"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["verifiedOn"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"verifiedOn"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CrawlersRobotsTokensEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CrawlersRobotsTokensRecord"}}]},"example":{"data":[{"operatorId":"openai","operator":"OpenAI","token":"GPTBot","robotsTxtLine":"User-agent: GPTBot","purpose":"ai-training","sendsRequests":true,"robotsTxtBehavior":"obeys","fullUserAgentExample":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot","pattern":"GPTBot","patternSource":"crawler-user-agents","docsUrl":"https://developers.openai.com/api/docs/bots","verificationMethod":"published-ip-ranges","verificationUrl":"https://openai.com/gptbot.json","note":"Apple states that if robots.txt does not mention Applebot but does mention Googlebot, Applebot follows the Googlebot group.","verifiedOn":"2026-08-27"}],"meta":{"endpoint":"crawlers","route":"/robots-tokens","count":1,"params":{"operator":"any","purpose":"any","robotsTxtBehavior":"any"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"operatorId\":\"openai\",\"operator\":\"OpenAI\",\"token\":\"GPTBot\",\"robotsTxtLine\":\"User-agent: GPTBot\",\"purpose\":\"ai-training\",\"sendsRequests\":true,\"robotsTxtBehavior\":\"obeys\",\"fullUserAgentExample\":\"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot\",\"pattern\":\"GPTBot\",\"patternSource\":\"crawler-user-agents\",\"docsUrl\":\"https://developers.openai.com/api/docs/bots\",\"verificationMethod\":\"published-ip-ranges\",\"verificationUrl\":\"https://openai.com/gptbot.json\",\"note\":\"Apple states that if robots.txt does not mention Applebot but does mention Googlebot, Applebot follows the Googlebot group.\",\"verifiedOn\":\"2026-08-27\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Crawler and AI-bot user agents","url":"https://randomapi.dev/apis/crawlers"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/credit-cards":{"get":{"operationId":"get_credit_cards_root","tags":["commerce"],"summary":"Generate Luhn-valid fake test cards","description":"Clearly-fake test credit cards — Luhn-valid numbers with correct Visa, Mastercard, Amex and Discover prefixes, future expiry and matching CVV.","parameters":[{"name":"brand","in":"query","description":"Only generate cards of this brand. Omit for a mix of all four.","required":false,"schema":{"type":"string","enum":["visa","mastercard","amex","discover"]},"example":"visa","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["number","brand"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"number,brand"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["holderName"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"holderName"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CreditCardsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CreditCardsRootRecord"}}]},"example":{"data":[{"number":"4539148803436467","brand":"visa","expMonth":9,"expYear":2029,"cvv":"417","holderName":"EMILY CARTER"}],"meta":{"endpoint":"credit-cards","count":1,"seed":42,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"number\":\"4539148803436467\",\"brand\":\"visa\",\"expMonth\":9,\"expYear\":2029,\"cvv\":\"417\",\"holderName\":\"EMILY CARTER\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Credit cards (test)","url":"https://randomapi.dev/apis/credit-cards"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/cron/describe":{"get":{"operationId":"get_cron_describe","tags":["developer"],"summary":"Explain a cron expression and compute its next runs","description":"Parse any 5-field cron expression into plain English and its next run times (UTC) — full syntax support, month/weekday names, and honest errors. Authoritative source: POSIX crontab five-field syntax.","parameters":[{"name":"expression","in":"query","description":"The 5-field cron expression (minute hour day-of-month month day-of-week). Separate fields with spaces — in a URL use '+' or '%20'. Supports *, */n, a-b, a-b/n, lists, JAN-DEC and SUN-SAT names; 0 and 7 both mean Sunday.","required":true,"schema":{"type":"string"},"example":"*/5 * * * *","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many upcoming run times to return (1–20).","required":false,"schema":{"type":"integer","minimum":1,"maximum":20,"default":5},"example":3,"x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Compute runs strictly after this instant (YYYY-MM-DD or ISO 8601). Defaults to the request time. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-01","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["expression","description"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"expression,description"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["fields"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"fields"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CronDescribeEnvelope"},{"$ref":"#/components/schemas/CronDescribeRecord"}]},"example":{"data":{"expression":"*/5 * * * *","description":"Every 5 minutes","nextRuns":["2026-01-01T00:05:00Z","2026-01-01T00:10:00Z","2026-01-01T00:15:00Z"],"fields":{"minute":"*/5","hour":"*","dayOfMonth":"*","month":"*","dayOfWeek":"*"}},"meta":{"endpoint":"cron","route":"/describe","params":{"expression":"*/5 * * * *","count":5},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Cron parser","url":"https://randomapi.dev/apis/cron"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/csp/check":{"get":{"operationId":"get_csp_check","tags":["developer"],"summary":"Decide whether a policy allows one concrete URL, and name the directive that decided","description":"Walks the CSP3 fallback chain for the request's destination, runs the pre-request check of the directive that executes, and reports allowed, blocked or ambiguous plus the expression that matched. Evaluates the policy you paste — it never fetches your origin and never fetches the resource. Authoritative sources: W3C Content Security Policy Level 3 (Working Draft, 29 July 2026); IANA Content Security Policy Directives registry; W3C CSP Level 2 (Recommendation, 15 December 2016); W3C Trusted Types (Working Draft, 23 June 2026); W3C Mixed Content (Candidate Recommendation Draft, 23 February 2023); W3C Upgrade Insecure Requests (Candidate Recommendation, 8 October 2015).","parameters":[{"name":"policy","in":"query","description":"The Content-Security-Policy header value, verbatim. Directives are separated by ';' and a comma starts a second policy — a comma-separated list is parsed as a list and every policy in it is evaluated, because enforcing several policies can only further restrict a page (CSP3 §8.1). At most 4096 characters, 8 policies, 32 directives per policy, 64 source expressions per directive and 256 source expressions in total; anything larger is rejected, never truncated.","required":true,"schema":{"type":"string","minLength":1,"maxLength":4096},"example":"default-src 'self'; script-src 'nonce-r4nd0mB4se64Value1234567' 'strict-dynamic'","x-randomapi-param-group":"route"},{"name":"resource","in":"query","description":"The absolute URL being loaded, parsed with the WHATWG URL parser (up to 2048 characters). A relative reference is a 400: CSP matches the request's already-resolved URL. Credentials in the URL are rejected and never echoed. To model a redirect chain, pass the final URL and set 'redirectCount'.","required":true,"schema":{"type":"string","minLength":1,"maxLength":2048},"example":"https://cdn.example.com/app.js","x-randomapi-param-group":"route"},{"name":"self","in":"query","description":"The protected document's origin as scheme://host[:port], with no path, query, fragment or trailing slash. It is serialized the way a browser serializes an origin — scheme and domain lowercased, IPv6 literal compressed, default port dropped — and the serialization is written back into meta.params. Required, not optional: the origin decides 'self' and also whether a schemeless host-source may match the resource's scheme (§6.7.2.8), so guessing it from 'resource' would silently manufacture matches. The literal 'null' opaque origin is rejected.","required":true,"schema":{"type":"string","minLength":1,"maxLength":256},"example":"https://example.com","x-randomapi-param-group":"route"},{"name":"context","in":"query","description":"What is being loaded. The 22 Fetch request destinations are mapped to an effective directive by §6.8.1 — 'empty' models Fetch's empty destination (fetch(), XMLHttpRequest, WebSocket, EventSource, sendBeacon) — and the three remaining values run a different check: 'base-uri' (§6.3.1.1, redirect count forced to 0), 'form-action' (§6.4.1.1) and 'frame-ancestors' (§6.4.2.1, where 'resource' is read as one ancestor document's URL). It is a destination, not a directive name: pass 'script', and §6.8.1 resolves it to script-src-elem.","required":false,"schema":{"type":"string","enum":["script","xslt","audioworklet","paintworklet","style","image","font","audio","video","track","frame","iframe","object","embed","manifest","worker","serviceworker","sharedworker","empty","json","text","webidentity","base-uri","form-action","frame-ancestors"],"default":"script"},"example":"iframe","x-randomapi-param-group":"route"},{"name":"parserInserted","in":"query","description":"The request's parser metadata. true models a &lt;script src> written in the HTML or produced by document.write(); false models a script element created by document.createElement. It flips the answer whenever a script directive contains 'strict-dynamic' (§6.7.1.1) and is ignored otherwise — and it defaults to true, so leaving it out models the parser-inserted case. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":false,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"nonce","in":"query","description":"The element's nonce attribute, i.e. the request's cryptographic nonce metadata. Compared byte-for-byte with each nonce-source's base64-value (§6.7.2.3) — case-sensitive, no decoding. Consulted only by the script and style directives' pre-request checks (§6.7.1.1, §6.1.13.1, §6.1.14.1); ignored with a warning for any other effective directive. The base64-value grammar admits '+', which a query string reads as a space, so percent-encode it as %2B here and in 'policy'.","required":false,"schema":{"type":"string","maxLength":256},"example":"r4nd0mB4se64Value1234567","x-randomapi-param-group":"route"},{"name":"integrity","in":"query","description":"The element's integrity attribute. Per §6.7.2.4 every hash in the metadata must be listed as a hash-source in the directive for the request to be allowed; the comparison is algorithm plus base64 string equality, with base64url and base64 treated as equivalent, so no hashing happens. Consulted only by the script element directives; ignored with a warning otherwise.","required":false,"schema":{"type":"string","maxLength":512},"example":"sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC","x-randomapi-param-group":"route"},{"name":"redirectCount","in":"query","description":"The request's redirect count. When it is not 0, §6.7.2.8 skips path matching entirely — a deliberate compromise against cross-origin path leaks (§7.6).","required":false,"schema":{"type":"integer","minimum":0,"maximum":20,"default":0},"example":1,"x-randomapi-param-group":"route"},{"name":"disposition","in":"query","description":"'enforce' models Content-Security-Policy; 'report' models Content-Security-Policy-Report-Only, which never blocks anything — it only reports. The sandbox directive is additionally ignored in a report-only policy (CSP3 §6.3.2).","required":false,"schema":{"type":"string","enum":["enforce","report"],"default":"enforce"},"example":"report","x-randomapi-param-group":"route"},{"name":"source","in":"query","description":"How the policy is delivered. 'meta' models an HTML <meta http-equiv> policy, in which the report-uri, frame-ancestors and sandbox directives are not supported and are therefore ignored (CSP3 §3.3).","required":false,"schema":{"type":"string","enum":["header","meta"],"default":"header"},"example":"meta","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["decision","explanation"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"decision,explanation"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["ambiguities"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"ambiguities"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CspCheckEnvelope"},{"$ref":"#/components/schemas/CspCheckRecord"}]},"example":{"data":{"decision":"blocked","explanation":"'strict-dynamic' is present in 'script-src', so the parser-inserted script request is blocked before the host allowlist is ever consulted.","effectiveDirective":"script-src-elem","fallbackChain":["script-src-elem","script-src","default-src"],"governed":true,"decidedBy":{"policyIndex":0,"directive":"script-src","sourceList":["'nonce-r4nd0mB4se64Value1234567'","'strict-dynamic'"],"step":"strict-dynamic-parser-inserted","specSection":"6.7.1.1","specUrl":"https://www.w3.org/TR/CSP3/#script-pre-request"},"matchedExpression":null,"wouldReport":true,"policies":[{"index":0,"disposition":"enforce","decision":"blocked","chainWalk":[{"name":"script-src-elem","present":false,"executed":false,"note":"Not declared, so it defers to the next name in the chain."},{"name":"script-src","present":true,"executed":true,"note":null},{"name":"default-src","present":true,"executed":false,"note":"Declared, but 'script-src' is more relevant and executes instead."}],"expressionResults":[],"reason":"strict-dynamic-parser-inserted"}],"ambiguities":[]},"meta":{"endpoint":"csp","route":"/check","params":{"policy":"default-src 'self'; script-src 'nonce-r4nd0mB4se64Value1234567' 'strict-dynamic'","resource":"https://cdn.example.com/app.js","self":"https://example.com","context":"script","parserInserted":true,"redirectCount":0,"disposition":"enforce","source":"header"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Content-Security-Policy parser & evaluator","url":"https://randomapi.dev/apis/csp"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/csp/parse":{"get":{"operationId":"get_csp_parse","tags":["developer"],"summary":"Parse a Content-Security-Policy into directives and normalized source expressions","description":"Runs the CSP3 §2.2.1 parse algorithm over the policy you paste: directive names lowercased, duplicate directives dropped the way a user agent drops them, every source expression classified against the §2.3.1 grammar. Nothing is fetched and no verdict about a URL is reached — use /check for that. Authoritative sources: W3C Content Security Policy Level 3 (Working Draft, 29 July 2026); IANA Content Security Policy Directives registry; W3C CSP Level 2 (Recommendation, 15 December 2016); W3C Trusted Types (Working Draft, 23 June 2026); W3C Mixed Content (Candidate Recommendation Draft, 23 February 2023); W3C Upgrade Insecure Requests (Candidate Recommendation, 8 October 2015).","parameters":[{"name":"policy","in":"query","description":"The Content-Security-Policy header value, verbatim. Directives are separated by ';' and a comma starts a second policy — a comma-separated list is parsed as a list and every policy in it is evaluated, because enforcing several policies can only further restrict a page (CSP3 §8.1). At most 4096 characters, 8 policies, 32 directives per policy, 64 source expressions per directive and 256 source expressions in total; anything larger is rejected, never truncated.","required":true,"schema":{"type":"string","minLength":1,"maxLength":4096},"example":"default-src 'self'; script-src 'nonce-r4nd0mB4se64Value1234567' 'strict-dynamic'","x-randomapi-param-group":"route"},{"name":"source","in":"query","description":"How the policy is delivered. 'meta' models an HTML <meta http-equiv> policy, in which the report-uri, frame-ancestors and sandbox directives are not supported and are therefore ignored (CSP3 §3.3).","required":false,"schema":{"type":"string","enum":["header","meta"],"default":"header"},"example":"meta","x-randomapi-param-group":"route"},{"name":"disposition","in":"query","description":"'enforce' models Content-Security-Policy; 'report' models Content-Security-Policy-Report-Only, which never blocks anything — it only reports. The sandbox directive is additionally ignored in a report-only policy (CSP3 §6.3.2).","required":false,"schema":{"type":"string","enum":["enforce","report"],"default":"enforce"},"example":"report","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["policyCount","normalized"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"policyCount,normalized"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["policies"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"policies"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CspParseEnvelope"},{"$ref":"#/components/schemas/CspParseRecord"}]},"example":{"data":{"policyCount":1,"normalized":"default-src 'self'; script-src 'nonce-r4nd0mB4se64Value1234567' 'strict-dynamic'","unknownDirectives":["script-scr"],"duplicateDirectives":["script-src"],"policies":[{"index":0,"disposition":"enforce","source":"header","directives":[{"name":"script-src","rawName":"script-src","value":["'nonce-abc'","'strict-dynamic'"],"type":"fetch","status":"csp3","fallbackChain":["script-src"],"ignored":false,"ignoredReason":null,"specSection":"6.1.10","specUrl":"https://www.w3.org/TR/CSP3/#directive-script-src","sources":[{"raw":"'nonce-abc'","kind":"nonce-source","valid":true,"keyword":null,"scheme":null,"host":null,"port":null,"path":null,"hashAlgorithm":null,"base64Value":"abc","note":"A nonce shorter than 22 base64 characters carries fewer than the 128 bits CSP3 §7.1 recommends."}]}],"ignoredTokens":[]}]},"meta":{"endpoint":"csp","route":"/parse","params":{"policy":"default-src 'self'; script-src 'nonce-r4nd0mB4se64Value1234567' 'strict-dynamic'","source":"header","disposition":"enforce"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Content-Security-Policy parser & evaluator","url":"https://randomapi.dev/apis/csp"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/csp/evaluate":{"get":{"operationId":"get_csp_evaluate","tags":["developer"],"summary":"Report what a Content-Security-Policy actually restricts, with a spec clause per finding","description":"Returns ranked findings and a coverage table: for each protection surface, which directive governs it after the fallback chain, and whether inline content is allowed. Every finding cites the CSP3 clause it rests on. There is deliberately no grade and no score. Authoritative sources: W3C Content Security Policy Level 3 (Working Draft, 29 July 2026); IANA Content Security Policy Directives registry; W3C CSP Level 2 (Recommendation, 15 December 2016); W3C Trusted Types (Working Draft, 23 June 2026); W3C Mixed Content (Candidate Recommendation Draft, 23 February 2023); W3C Upgrade Insecure Requests (Candidate Recommendation, 8 October 2015).","parameters":[{"name":"policy","in":"query","description":"The Content-Security-Policy header value, verbatim. Directives are separated by ';' and a comma starts a second policy — a comma-separated list is parsed as a list and every policy in it is evaluated, because enforcing several policies can only further restrict a page (CSP3 §8.1). At most 4096 characters, 8 policies, 32 directives per policy, 64 source expressions per directive and 256 source expressions in total; anything larger is rejected, never truncated.","required":true,"schema":{"type":"string","minLength":1,"maxLength":4096},"example":"default-src 'self'; script-src 'nonce-r4nd0mB4se64Value1234567' 'strict-dynamic'","x-randomapi-param-group":"route"},{"name":"source","in":"query","description":"How the policy is delivered. 'meta' models an HTML <meta http-equiv> policy, in which the report-uri, frame-ancestors and sandbox directives are not supported and are therefore ignored (CSP3 §3.3).","required":false,"schema":{"type":"string","enum":["header","meta"],"default":"header"},"example":"meta","x-randomapi-param-group":"route"},{"name":"disposition","in":"query","description":"'enforce' models Content-Security-Policy; 'report' models Content-Security-Policy-Report-Only, which never blocks anything — it only reports. The sandbox directive is additionally ignored in a report-only policy (CSP3 §6.3.2).","required":false,"schema":{"type":"string","enum":["enforce","report"],"default":"enforce"},"example":"report","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["policyCount","findings"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"policyCount,findings"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["ambiguities"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"ambiguities"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CspEvaluateEnvelope"},{"$ref":"#/components/schemas/CspEvaluateRecord"}]},"example":{"data":{"policyCount":1,"findings":[{"id":"object-src-not-restricted","severity":"high","policyIndex":0,"directive":null,"expression":null,"occurrences":1,"title":"object and embed loads are unrestricted","detail":"Neither 'object-src' nor 'default-src' is present, so nothing in the « object-src, default-src » fallback chain governs object and embed requests. 'object-src' is the one fetch directive worth setting to 'none' on almost every page.","specSection":"6.1.9","specUrl":"https://www.w3.org/TR/CSP3/#directive-object-src"}],"findingCounts":{"high":1,"medium":2,"low":0,"info":1},"coverage":[{"effectiveDirective":"script-src-elem","fallbackChain":["script-src-elem","script-src","default-src"],"restricted":true,"perPolicy":[{"policyIndex":0,"governedBy":"script-src","sourceList":["'nonce-r4nd0mB4se64Value1234567'","'strict-dynamic'"],"allowsAllInline":false}]}],"ambiguities":[]},"meta":{"endpoint":"csp","route":"/evaluate","params":{"policy":"default-src 'self'; script-src 'nonce-r4nd0mB4se64Value1234567' 'strict-dynamic'","source":"header","disposition":"enforce"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Content-Security-Policy parser & evaluator","url":"https://randomapi.dev/apis/csp"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/csp/directives":{"get":{"operationId":"get_csp_directives","tags":["developer"],"summary":"Every CSP directive with its fallback parent, value grammar and spec anchor","description":"All 30 directive names an author might write, each classified by a citable status: the 23 defined by the pinned CSP Level 3 draft, the four defined by other W3C specifications, the CSP2-only row and the two names removed from an earlier draft. Authoritative sources: W3C Content Security Policy Level 3 (Working Draft, 29 July 2026); IANA Content Security Policy Directives registry; W3C CSP Level 2 (Recommendation, 15 December 2016); W3C Trusted Types (Working Draft, 23 June 2026); W3C Mixed Content (Candidate Recommendation Draft, 23 February 2023); W3C Upgrade Insecure Requests (Candidate Recommendation, 8 October 2015).","parameters":[{"name":"search","in":"query","description":"Case-insensitive substring match against the directive name and the 'governs' sentence.","required":false,"schema":{"type":"string","minLength":1,"maxLength":64},"example":"worker","x-randomapi-param-group":"route"},{"name":"type","in":"query","description":"The CSP3 §6.1–§6.5 grouping. 'unclassified' is every row the pinned draft does not group: the four directives defined by other W3C specifications, the CSP2-only row and the two removed-draft rows.","required":false,"schema":{"type":"string","enum":["fetch","other","document","navigation","reporting","unclassified"]},"example":"fetch","x-randomapi-param-group":"route"},{"name":"status","in":"query","description":"Where the directive is defined and whether it still is: csp3, csp3-deprecated, other-spec, other-spec-obsolete, csp2-only or removed-draft.","required":false,"schema":{"type":"string","enum":["csp3","csp3-deprecated","other-spec","other-spec-obsolete","csp2-only","removed-draft"]},"example":"removed-draft","x-randomapi-param-group":"route"},{"name":"hasFallback","in":"query","description":"true selects rows whose fallbackChain has more than one entry; false selects the rows §6.8.3 gives no fallback list. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean"},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"ignoredInMeta","in":"query","description":"true selects the three directives a <meta>-delivered policy does not support (§3.3): report-uri, frame-ancestors and sandbox. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean"},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["name","type"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"name,type"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["specUrl"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"specUrl"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CspDirectivesEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CspDirectivesRecord"}}]},"example":{"data":[{"name":"frame-src","type":"fetch","status":"csp3","statusNote":null,"governs":"Requests that populate a child navigable, such as an iframe or frame navigation.","valueGrammar":"serialized-source-list","fallbackChain":["frame-src","child-src","default-src"],"fallbackParent":"child-src","destinations":["frame","iframe"],"ignoredInMeta":false,"ignoredInReportOnly":false,"consultsNonce":false,"consultsIntegrity":false,"honorsStrictDynamic":false,"ianaRegistered":true,"specSection":"6.1.5","specUrl":"https://www.w3.org/TR/CSP3/#directive-frame-src"}],"meta":{"endpoint":"csp","route":"/directives","count":1,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"name\":\"frame-src\",\"type\":\"fetch\",\"status\":\"csp3\",\"statusNote\":null,\"governs\":\"Requests that populate a child navigable, such as an iframe or frame navigation.\",\"valueGrammar\":\"serialized-source-list\",\"fallbackChain\":[\"frame-src\",\"child-src\",\"default-src\"],\"fallbackParent\":\"child-src\",\"destinations\":[\"frame\",\"iframe\"],\"ignoredInMeta\":false,\"ignoredInReportOnly\":false,\"consultsNonce\":false,\"consultsIntegrity\":false,\"honorsStrictDynamic\":false,\"ianaRegistered\":true,\"specSection\":\"6.1.5\",\"specUrl\":\"https://www.w3.org/TR/CSP3/#directive-frame-src\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Content-Security-Policy parser & evaluator","url":"https://randomapi.dev/apis/csp"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/csp/lookup":{"get":{"operationId":"get_csp_lookup","tags":["developer"],"summary":"Look up one CSP directive by name","description":"Returns one directive row. The name is matched case-insensitively after ASCII-lowercasing, exactly as §2.2.1 lowercases directive names; an unknown name is an explicit 404 with a suggestion, never a substitute row. Authoritative sources: W3C Content Security Policy Level 3 (Working Draft, 29 July 2026); IANA Content Security Policy Directives registry; W3C CSP Level 2 (Recommendation, 15 December 2016); W3C Trusted Types (Working Draft, 23 June 2026); W3C Mixed Content (Candidate Recommendation Draft, 23 February 2023); W3C Upgrade Insecure Requests (Candidate Recommendation, 8 October 2015).","parameters":[{"name":"name","in":"query","description":"Directive name, matched case-insensitively after ASCII-lowercasing. Must be an HTTP token.","required":true,"schema":{"type":"string","minLength":1,"maxLength":64},"example":"frame-src","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["name","type"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"name,type"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["specUrl"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"specUrl"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CspLookupEnvelope"},{"$ref":"#/components/schemas/CspLookupRecord"}]},"example":{"data":{"name":"frame-src","type":"fetch","status":"csp3","statusNote":null,"governs":"Requests that populate a child navigable, such as an iframe or frame navigation.","valueGrammar":"serialized-source-list","fallbackChain":["frame-src","child-src","default-src"],"fallbackParent":"child-src","destinations":["frame","iframe"],"ignoredInMeta":false,"ignoredInReportOnly":false,"consultsNonce":false,"consultsIntegrity":false,"honorsStrictDynamic":false,"ianaRegistered":true,"specSection":"6.1.5","specUrl":"https://www.w3.org/TR/CSP3/#directive-frame-src"},"meta":{"endpoint":"csp","route":"/lookup","params":{"name":"frame-src"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"No directive in the bundled CSP table has the requested token name.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?name=script-scr"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Content-Security-Policy parser & evaluator","url":"https://randomapi.dev/apis/csp"},"x-randomapi-kind":"real","x-randomapi-mode":"lookup"}},"/api/currencies":{"get":{"operationId":"get_currencies_root","tags":["geo"],"summary":"List all active ISO 4217 currencies (searchable)","description":"Returns the complete active ISO 4217 set by default (`count` defaults to all matches). `search` genuinely filters: a currency is returned only when its code or name contains the term. Zero matches ⇒ empty list plus a warning, never an error. Authoritative source: ISO 4217 currency registry.","parameters":[{"name":"search","in":"query","description":"Case-insensitive substring match against the ISO code or the English name — `krone` keeps DKK and NOK, `franc` keeps every franc, `dkk` matches one code. No match ⇒ empty list + warning.","required":false,"schema":{"type":"string"},"example":"krone","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["code","name"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"code,name"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["countries"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"countries"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CurrenciesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/CurrenciesRootRecord"}}]},"example":{"data":[{"code":"DKK","name":"Danish Krone","symbol":"kr","decimalDigits":2,"countries":["DK","FO","GL"]}],"meta":{"endpoint":"currencies","count":1,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"code\":\"DKK\",\"name\":\"Danish Krone\",\"symbol\":\"kr\",\"decimalDigits\":2,\"countries\":[\"DK\",\"FO\",\"GL\"]}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Currencies","url":"https://randomapi.dev/apis/currencies"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/currencies/lookup":{"get":{"operationId":"get_currencies_lookup","tags":["geo"],"summary":"Look up one currency by ISO 4217 code","description":"Case-insensitive (`dkk` = `DKK`; the canonical code is echoed in `meta.params`). Unknown, retired and out-of-scope codes are explicit 404s with an explanation — never a substitute record. Authoritative source: ISO 4217 currency registry.","parameters":[{"name":"code","in":"query","description":"ISO 4217 alphabetic code — exactly 3 letters, case-insensitive (dkk = DKK).","required":true,"schema":{"type":"string","minLength":3,"maxLength":3},"example":"DKK","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["code","name"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"code,name"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["countries"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"countries"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CurrenciesLookupEnvelope"},{"$ref":"#/components/schemas/CurrenciesLookupRecord"}]},"example":{"data":{"code":"DKK","name":"Danish Krone","symbol":"kr","decimalDigits":2,"countries":["DK","FO","GL"]},"meta":{"endpoint":"currencies","route":"/lookup","params":{"code":"DKK"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"The requested well-formed code is unknown, retired or outside the active-currency scope.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?code=QQQ"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Currencies","url":"https://randomapi.dev/apis/currencies"},"x-randomapi-kind":"real","x-randomapi-mode":"lookup"}},"/api/date-info":{"get":{"operationId":"get_date_info_root","tags":["datetime"],"summary":"Calendar facts for a date (default: today, UTC)","description":"Pure calendar arithmetic — only a bare call (no `date`) reads the clock, so responses for an explicit date are fully deterministic. The resolved date is echoed in `meta.params.date`. Authoritative source: ISO 8601 calendar arithmetic (proleptic Gregorian).","parameters":[{"name":"date","in":"query","description":"Date to analyze: YYYY-MM-DD, or an ISO 8601 timestamp (truncated to its UTC calendar date). Years 1583–9999. Defaults to today (UTC). Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-06-11","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["date","weekday"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"date,weekday"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["unix"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"unix"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DateInfoRootEnvelope"},{"$ref":"#/components/schemas/DateInfoRootRecord"}]},"example":{"data":{"date":"2026-06-11","weekday":"Thursday","isoWeek":24,"isoWeekYear":2026,"dayOfYear":162,"quarter":2,"isLeapYear":false,"daysInMonth":30,"isWeekend":false,"unix":1781136000},"meta":{"endpoint":"date-info","params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Date info","url":"https://randomapi.dev/apis/date-info"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/dates":{"get":{"operationId":"get_dates_root","tags":["datetime"],"summary":"Uniformly random instants within a date range","description":"Every record is an independent uniform draw from [`from`, `to`] (millisecond precision, both bounds inclusive). The resolved range — defaults included — is echoed in `meta.params`.","parameters":[{"name":"from","in":"query","description":"Earliest possible instant, inclusive. YYYY-MM-DD (= midnight UTC) or a full ISO 8601 timestamp. Years 1583–9999. Defaults to 365 days before today (UTC). Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Latest possible instant, inclusive. YYYY-MM-DD means midnight UTC — that day is included only at exactly 00:00:00; pass a timestamp to cover it fully. Must be ≥ from. Defaults to today at UTC midnight. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-12-31","x-randomapi-param-group":"route"},{"name":"weekdaysOnly","in":"query","description":"Only return instants that fall on Monday–Friday (UTC weekday), uniformly across the weekday portion of the range. Include the parameter bare to enable. A range with no weekday instant is a 400. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["iso","unix"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"iso,unix"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["weekday"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"weekday"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DatesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/DatesRootRecord"}}]},"example":{"data":[{"iso":"2026-03-14T09:26:53.123Z","unix":1773480413,"date":"2026-03-14","time":"09:26:53","weekday":"Saturday"}],"meta":{"endpoint":"dates","count":1,"seed":42,"params":{"weekdaysOnly":false},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"iso\":\"2026-03-14T09:26:53.123Z\",\"unix\":1773480413,\"date\":\"2026-03-14\",\"time\":\"09:26:53\",\"weekday\":\"Saturday\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Random dates","url":"https://randomapi.dev/apis/dates"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/deployments":{"get":{"operationId":"get_deployments_root","tags":["developer"],"summary":"Generate coherent deployment lifecycle snapshots","description":"Generate coherent deployment snapshots and lifecycle timelines with exact status, rollback, commit, artifact, environment and time relationships.","parameters":[{"name":"environment","in":"query","description":"Mix environments or constrain every deployment to preview, staging or production.","required":false,"schema":{"type":"string","enum":["any","preview","staging","production"],"default":"any"},"example":"production","x-randomapi-param-group":"route"},{"name":"service","in":"query","description":"Mix fictional services or constrain every fixture to one service.","required":false,"schema":{"type":"string","enum":["any","checkout-api","customer-web","event-worker","report-scheduler"],"default":"any"},"example":"checkout-api","x-randomapi-param-group":"route"},{"name":"status","in":"query","description":"Mix lifecycle outcomes or force one exact coherent snapshot state.","required":false,"schema":{"type":"string","enum":["any","queued","running","succeeded","failed","cancelled","rolled_back"],"default":"any"},"example":"rolled_back","x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Inclusive lower bound for synthetic deployment initiation, not completion. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}],"default":"2026-01-01"},"example":"2026-05-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Inclusive upper bound for initiation; the from/to span may not exceed 366 days. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}],"default":"2026-12-31"},"example":"2026-05-31","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","service"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,service"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["rollback"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"rollback"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DeploymentsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/DeploymentsRootRecord"}}]},"example":{"data":[{"id":"dep_staging_01_a1b2c3d4e5","service":"checkout-api","environment":"staging","status":"succeeded","trigger":"push","commitSha":"0123456789abcdef0123456789abcdef01234567","artifact":{"name":"checkout-api","tag":"build-0123456789ab","digest":"sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef","reference":"registry.example.test/checkout-api@sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"},"initiatedAt":"2026-05-12T09:00:00.000Z","startedAt":"2026-05-12T09:00:17.000Z","finishedAt":"2026-05-12T09:04:17.000Z","durationSeconds":240,"rollback":null}],"meta":{"endpoint":"deployments","count":1,"seed":42,"params":{"environment":"any","service":"any","status":"any","from":"2026-01-01","to":"2026-12-31"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"dep_staging_01_a1b2c3d4e5\",\"service\":\"checkout-api\",\"environment\":\"staging\",\"status\":\"succeeded\",\"trigger\":\"push\",\"commitSha\":\"0123456789abcdef0123456789abcdef01234567\",\"artifact\":{\"name\":\"checkout-api\",\"tag\":\"build-0123456789ab\",\"digest\":\"sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\",\"reference\":\"registry.example.test/checkout-api@sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\"},\"initiatedAt\":\"2026-05-12T09:00:00.000Z\",\"startedAt\":\"2026-05-12T09:00:17.000Z\",\"finishedAt\":\"2026-05-12T09:04:17.000Z\",\"durationSeconds\":240,\"rollback\":null}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Deployment fixtures","url":"https://randomapi.dev/apis/deployments"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/deployments/timelines":{"get":{"operationId":"get_deployments_timelines","tags":["developer"],"summary":"Generate ordered event timelines for the same seeded deployments","description":"Generate coherent deployment snapshots and lifecycle timelines with exact status, rollback, commit, artifact, environment and time relationships.","parameters":[{"name":"environment","in":"query","description":"Mix environments or constrain every deployment to preview, staging or production.","required":false,"schema":{"type":"string","enum":["any","preview","staging","production"],"default":"any"},"example":"production","x-randomapi-param-group":"route"},{"name":"service","in":"query","description":"Mix fictional services or constrain every fixture to one service.","required":false,"schema":{"type":"string","enum":["any","checkout-api","customer-web","event-worker","report-scheduler"],"default":"any"},"example":"checkout-api","x-randomapi-param-group":"route"},{"name":"status","in":"query","description":"Mix lifecycle outcomes or force one exact coherent snapshot state.","required":false,"schema":{"type":"string","enum":["any","queued","running","succeeded","failed","cancelled","rolled_back"],"default":"any"},"example":"rolled_back","x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Inclusive lower bound for synthetic deployment initiation, not completion. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}],"default":"2026-01-01"},"example":"2026-05-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Inclusive upper bound for initiation; the from/to span may not exceed 366 days. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}],"default":"2026-12-31"},"example":"2026-05-31","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["deploymentId","service"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"deploymentId,service"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["events"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"events"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DeploymentsTimelinesEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/DeploymentsTimelinesRecord"}}]},"example":{"data":[{"deploymentId":"dep_staging_01_a1b2c3d4e5","service":"checkout-api","environment":"staging","finalStatus":"rolled_back","events":[{"sequence":0,"type":"deployment_queued","at":"2026-05-12T09:00:00.000Z","artifactDigest":"sha256:0123"}]}],"meta":{"endpoint":"deployments","route":"/timelines","count":1,"seed":42,"params":{"environment":"any","service":"any","status":"any","from":"2026-01-01","to":"2026-12-31"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"deploymentId\":\"dep_staging_01_a1b2c3d4e5\",\"service\":\"checkout-api\",\"environment\":\"staging\",\"finalStatus\":\"rolled_back\",\"events\":[{\"sequence\":0,\"type\":\"deployment_queued\",\"at\":\"2026-05-12T09:00:00.000Z\",\"artifactDigest\":\"sha256:0123\"}]}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Deployment fixtures","url":"https://randomapi.dev/apis/deployments"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/dice/roll":{"get":{"operationId":"get_dice_roll","tags":["chance"],"summary":"Roll dice in NdS+M notation","description":"Each record is one independent roll of the whole notation; `count` rolls it several times. `2d6+3`, `2d6%2B3` and `2d6 3` are all the same roll (a raw `+` decodes to a space).","parameters":[{"name":"notation","in":"query","description":"Dice notation NdS+M (case-insensitive): N dice (1-100, default 1) with S sides (2-1000) and an optional modifier M (-1000..+1000), e.g. 2d6+3, d20, 4d8-2. A raw '+' decodes to a space in query strings, so '2d6+3', '2d6%2B3' and '2d6 3' are all read as 2d6+3.","required":false,"schema":{"type":"string","default":"1d6"},"example":"2d6+3","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":1},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["index","notation"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"index,notation"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["total"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"total"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DiceRollEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/DiceRollRecord"}}]},"example":{"data":[{"index":0,"notation":"2d6+3","dice":[4,2],"modifier":3,"total":9}],"meta":{"endpoint":"dice","route":"/roll","count":1,"seed":42,"params":{"notation":"1d6"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"index\":0,\"notation\":\"2d6+3\",\"dice\":[4,2],\"modifier\":3,\"total\":9}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Dice rolls","url":"https://randomapi.dev/apis/dice"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/diffs":{"get":{"operationId":"get_diffs_root","tags":["developer"],"summary":"Generate single-file unified diffs with structured hunks","description":"Each record is one changed file: its paths and modes, the summed `insertions`/`deletions`, the structured `hunks`, and the rendered `patch` derived from them.","parameters":[{"name":"hunksPerFile","in":"query","description":"Exact number of hunks per modified or renamed file. Added and deleted files always have exactly one whole-file hunk; mode-only and binary changes have none.","required":false,"schema":{"type":"integer","minimum":1,"maximum":6,"default":2},"example":3,"x-randomapi-param-group":"route"},{"name":"contextLines","in":"query","description":"Unchanged context lines on each side of every change group, like `git diff -U<n>`. 0 reproduces `-U0` output, where hunks contain only changed lines and empty ranges appear as `-12,0`.","required":false,"schema":{"type":"integer","minimum":0,"maximum":5,"default":3},"example":0,"x-randomapi-param-group":"route"},{"name":"changeType","in":"query","description":"Change type to emit. Any value other than 'mixed' is a hard guarantee — every file in the response has that exact type. 'mixed' weights modifications highest.","required":false,"schema":{"type":"string","enum":["mixed","modify","add","delete","rename","mode","binary"],"default":"mixed"},"example":"rename","x-randomapi-param-group":"route"},{"name":"language","in":"query","description":"Drives plausible file paths, extensions and line content. Omit to vary the language per file. Binary files keep asset paths (.png, .zip…) and carry no line content, so `changeType=binary` ignores this parameter entirely and warns when it is set.","required":false,"schema":{"type":"string","enum":["javascript","typescript","python","go","ruby","java","json","markdown"]},"example":"typescript","x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Earliest change date, inclusive. YYYY-MM-DD (= midnight UTC) or a full ISO 8601 timestamp. Defaults to 90 days before today (UTC). Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Latest change date, inclusive. Must be ≥ `from`. Defaults to today at UTC midnight; the resolved window is echoed in `meta.params`. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-03-31","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["path","oldPath"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"path,oldPath"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["patch"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"patch"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DiffsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/DiffsRootRecord"}}]},"example":{"data":[{"path":"src/lib/cache.js","oldPath":"src/lib/cache.js","changeType":"modify","oldMode":"100644","newMode":"100644","insertions":2,"deletions":1,"date":"2026-03-14T09:26:53Z","hunks":[{"header":"@@ -12,2 +12,3 @@","oldStart":12,"oldLines":2,"newStart":12,"newLines":3,"lines":[{"type":"context","text":"  const cache = new Map();"},{"type":"remove","text":"  return cache.get(key);"},{"type":"add","text":"  const hit = cache.get(key);"},{"type":"add","text":"  return hit ?? null;"}]}],"patch":"diff --git a/src/lib/cache.js b/src/lib/cache.js\nindex 4b1e2c7..9af0d31 100644\n--- a/src/lib/cache.js\n+++ b/src/lib/cache.js\n@@ -12,2 +12,3 @@\n   const cache = new Map();\n-  return cache.get(key);\n+  const hit = cache.get(key);\n+  return hit ?? null;\n"}],"meta":{"endpoint":"diffs","count":1,"seed":42,"params":{"hunksPerFile":2,"contextLines":3,"changeType":"mixed"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"path\":\"src/lib/cache.js\",\"oldPath\":\"src/lib/cache.js\",\"changeType\":\"modify\",\"oldMode\":\"100644\",\"newMode\":\"100644\",\"insertions\":2,\"deletions\":1,\"date\":\"2026-03-14T09:26:53Z\",\"hunks\":[{\"header\":\"@@ -12,2 +12,3 @@\",\"oldStart\":12,\"oldLines\":2,\"newStart\":12,\"newLines\":3,\"lines\":[{\"type\":\"context\",\"text\":\"  const cache = new Map();\"},{\"type\":\"remove\",\"text\":\"  return cache.get(key);\"},{\"type\":\"add\",\"text\":\"  const hit = cache.get(key);\"},{\"type\":\"add\",\"text\":\"  return hit ?? null;\"}]}],\"patch\":\"diff --git a/src/lib/cache.js b/src/lib/cache.js\\nindex 4b1e2c7..9af0d31 100644\\n--- a/src/lib/cache.js\\n+++ b/src/lib/cache.js\\n@@ -12,2 +12,3 @@\\n   const cache = new Map();\\n-  return cache.get(key);\\n+  const hit = cache.get(key);\\n+  return hit ?? null;\\n\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Unified Diff & Patch Fixture API","url":"https://randomapi.dev/apis/diffs"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/diffs/patch":{"get":{"operationId":"get_diffs_patch","tags":["developer"],"summary":"Render one multi-file unified patch with reconciling totals","description":"Returns a single patch string covering `files` files in ascending path order, plus a per-file summary whose insertions, deletions and hunk counts sum exactly to the totals.","parameters":[{"name":"files","in":"query","description":"Number of files in the patch. Paths are unique within one patch and sorted ascending, like `git diff`.","required":false,"schema":{"type":"integer","minimum":1,"maximum":10,"default":3},"example":5,"x-randomapi-param-group":"route"},{"name":"hunksPerFile","in":"query","description":"Exact number of hunks per modified or renamed file. Added and deleted files always have exactly one whole-file hunk; mode-only and binary changes have none.","required":false,"schema":{"type":"integer","minimum":1,"maximum":6,"default":2},"example":3,"x-randomapi-param-group":"route"},{"name":"contextLines","in":"query","description":"Unchanged context lines on each side of every change group, like `git diff -U<n>`. 0 reproduces `-U0` output, where hunks contain only changed lines and empty ranges appear as `-12,0`.","required":false,"schema":{"type":"integer","minimum":0,"maximum":5,"default":3},"example":0,"x-randomapi-param-group":"route"},{"name":"changeType","in":"query","description":"Change type to emit. Any value other than 'mixed' is a hard guarantee — every file in the response has that exact type. 'mixed' weights modifications highest.","required":false,"schema":{"type":"string","enum":["mixed","modify","add","delete","rename","mode","binary"],"default":"mixed"},"example":"rename","x-randomapi-param-group":"route"},{"name":"language","in":"query","description":"Drives plausible file paths, extensions and line content. Omit to vary the language per file. Binary files keep asset paths (.png, .zip…) and carry no line content, so `changeType=binary` ignores this parameter entirely and warns when it is set.","required":false,"schema":{"type":"string","enum":["javascript","typescript","python","go","ruby","java","json","markdown"]},"example":"typescript","x-randomapi-param-group":"route"},{"name":"seed","in":"query","description":"Determinism: the same seed and parameters always render the byte-identical patch. Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer","minimum":0,"maximum":4294967295,"default":1},"example":99,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["patch","files"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"patch,files"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["summary"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"summary"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DiffsPatchEnvelope"},{"$ref":"#/components/schemas/DiffsPatchRecord"}]},"example":{"data":{"patch":"diff --git a/src/lib/cache.js b/src/lib/cache.js\nindex 4b1e2c7..9af0d31 100644\n--- a/src/lib/cache.js\n+++ b/src/lib/cache.js\n@@ -12,2 +12,3 @@\n   const cache = new Map();\n-  return cache.get(key);\n+  const hit = cache.get(key);\n+  return hit ?? null;\n","files":3,"hunks":4,"insertions":9,"deletions":5,"summary":[{"path":"src/lib/cache.js","oldPath":"src/lib/cache.js","changeType":"modify","insertions":5,"deletions":3,"hunks":2},{"path":"src/lib/queue.js","oldPath":null,"changeType":"add","insertions":4,"deletions":0,"hunks":1}]},"meta":{"endpoint":"diffs","route":"/patch","params":{"files":3,"hunksPerFile":2,"contextLines":3,"changeType":"mixed","seed":1},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Unified Diff & Patch Fixture API","url":"https://randomapi.dev/apis/diffs"},"x-randomapi-kind":"mock","x-randomapi-mode":"compute"}},"/api/distributions":{"get":{"operationId":"get_distributions_root","tags":["chance"],"summary":"Draw seeded values from one distribution","description":"Each record is one independent draw: `value`, the theoretical CDF at that value in `percentile` (null for the discrete distributions), the sampler branch in `method`, and `index` so that repeated discrete draws stay distinct records.","parameters":[{"name":"dist","in":"query","description":"Which distribution to draw from. Each one reads its own parameters; anything belonging to another distribution is echoed back with a warning and ignored.","required":true,"schema":{"type":"string","enum":["uniform","normal","lognormal","exponential","poisson","binomial","pareto","zipf"]},"example":"normal","x-randomapi-param-group":"route"},{"name":"min","in":"query","description":"dist=uniform: lower bound, inclusive. Defaults to 0. Must be ≤ max, and min=max is allowed (with a warning) — every draw is then that exact value. Rounded draws are clamped up to the smallest value with `precision` decimals that is still ≥ min.","required":false,"schema":{"type":"number","minimum":-1000000000,"maximum":1000000000},"example":0,"x-randomapi-param-group":"route"},{"name":"max","in":"query","description":"dist=uniform: upper bound. Defaults to 1. Draws are rounded to `precision` and clamped down to the largest value with that many decimals that is still ≤ max, so a value can land exactly on the bound but never past it.","required":false,"schema":{"type":"number","minimum":-1000000000,"maximum":1000000000},"example":10,"x-randomapi-param-group":"route"},{"name":"mean","in":"query","description":"Location. dist=normal: the mean itself. dist=lognormal: the mean of the underlying normal, so exp(mean) is the MEDIAN of the draw, not its mean. Defaults to 0.","required":false,"schema":{"type":"number","minimum":-1000000000,"maximum":1000000000},"example":100,"x-randomapi-param-group":"route"},{"name":"stddev","in":"query","description":"Scale for dist=normal and dist=lognormal; must be > 0 (zero or negative is a 400). For lognormal it is the standard deviation of the underlying normal. Defaults to 1.","required":false,"schema":{"type":"number","maximum":1000000000},"example":15,"x-randomapi-param-group":"route"},{"name":"rate","in":"query","description":"dist=exponential: the rate λ; must be > 0. The theoretical mean is 1/rate. Defaults to 1.","required":false,"schema":{"type":"number","maximum":1000000000},"example":0.5,"x-randomapi-param-group":"route"},{"name":"lambda","in":"query","description":"dist=poisson: the mean number of events per interval; must be > 0. Required — Poisson has no canonical default. At or below 30 the sampler is Knuth's exact method, above it a normal approximation.","required":false,"schema":{"type":"number","maximum":1000000000},"example":4,"x-randomapi-param-group":"route"},{"name":"trials","in":"query","description":"dist=binomial: the number of Bernoulli trials n (1–10000). Required. At or below 30 the sampler sums real trials, above it uses a normal approximation.","required":false,"schema":{"type":"integer","minimum":1,"maximum":10000},"example":20,"x-randomapi-param-group":"route"},{"name":"probability","in":"query","description":"dist=binomial: the success probability p of one trial, between 0 and 1 inclusive (anything outside is a 400). Required.","required":false,"schema":{"type":"number"},"example":0.3,"x-randomapi-param-group":"route"},{"name":"alpha","in":"query","description":"Shape; must be > 0. dist=pareto: the tail index — required, and log5/log4 ≈ 1.161 is the classic 80/20 shape. dist=zipf: the rank exponent, defaulting to 1 (Zipf's law).","required":false,"schema":{"type":"number","maximum":1000},"example":1.5,"x-randomapi-param-group":"route"},{"name":"xmin","in":"query","description":"dist=pareto: the scale — the smallest value the distribution can take; must be > 0. Defaults to 1. No draw is ever returned below it: after rounding, a value is clamped up to the smallest number with `precision` decimals that is still ≥ xmin.","required":false,"schema":{"type":"number","maximum":1000000000},"example":1,"x-randomapi-param-group":"route"},{"name":"support","in":"query","description":"dist=zipf: the number of ranks N (1–100000). Required. Draws are whole ranks 1..N with P(k) ∝ k^−alpha.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100000},"example":1000,"x-randomapi-param-group":"route"},{"name":"precision","in":"query","description":"Decimal places for the continuous distributions (uniform, normal, lognormal, exponential, pareto). Defaults to 4. Rounding happens last and is clamped back inside the support; a grid too coarse for the distribution's interquartile range is warned about, and one that leaves no valid uniform value is a 400. Ignored — with a warning — by Poisson, binomial and Zipf, whose draws are whole numbers.","required":false,"schema":{"type":"integer","minimum":0,"maximum":10},"example":2,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["index","value"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"index,value"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["method"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"method"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DistributionsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/DistributionsRootRecord"}}]},"example":{"data":[{"index":0,"value":106.9337,"percentile":0.678048,"method":"box-muller"}],"meta":{"endpoint":"distributions","count":1,"seed":42,"params":{"dist":"normal"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"index\":0,\"value\":106.9337,\"percentile\":0.678048,\"method\":\"box-muller\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Random numbers by distribution","url":"https://randomapi.dev/apis/distributions"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/distributions/summary":{"get":{"operationId":"get_distributions_summary","tags":["chance"],"summary":"Empirical statistics of a drawn sample next to the theoretical ones","description":"Draws `size` values from the chosen distribution and reports the sample's mean, variance, standard deviation, extremes and quantiles alongside the closed-form moments. Moments that do not exist are null with an explanation in `theoretical.note`.","parameters":[{"name":"dist","in":"query","description":"Which distribution to draw from. Each one reads its own parameters; anything belonging to another distribution is echoed back with a warning and ignored.","required":true,"schema":{"type":"string","enum":["uniform","normal","lognormal","exponential","poisson","binomial","pareto","zipf"]},"example":"normal","x-randomapi-param-group":"route"},{"name":"size","in":"query","description":"How many values to draw before computing the statistics (1–10000). Larger samples sit closer to the theoretical moments on average — the remaining gap is sampling error.","required":false,"schema":{"type":"integer","minimum":1,"maximum":10000,"default":1000},"example":5000,"x-randomapi-param-group":"route"},{"name":"seed","in":"query","description":"Determinism anchor for the sample. Any integer is accepted and reduced modulo 2³² exactly as the root route's `seed` is, so the sample is exactly the records the root route returns for that seed — `seed=-1` and `seed=4294967295` are the same sample on both routes. Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer","default":0},"example":42,"x-randomapi-param-group":"route"},{"name":"min","in":"query","description":"dist=uniform: lower bound, inclusive. Defaults to 0. Must be ≤ max, and min=max is allowed (with a warning) — every draw is then that exact value. Rounded draws are clamped up to the smallest value with `precision` decimals that is still ≥ min.","required":false,"schema":{"type":"number","minimum":-1000000000,"maximum":1000000000},"example":0,"x-randomapi-param-group":"route"},{"name":"max","in":"query","description":"dist=uniform: upper bound. Defaults to 1. Draws are rounded to `precision` and clamped down to the largest value with that many decimals that is still ≤ max, so a value can land exactly on the bound but never past it.","required":false,"schema":{"type":"number","minimum":-1000000000,"maximum":1000000000},"example":10,"x-randomapi-param-group":"route"},{"name":"mean","in":"query","description":"Location. dist=normal: the mean itself. dist=lognormal: the mean of the underlying normal, so exp(mean) is the MEDIAN of the draw, not its mean. Defaults to 0.","required":false,"schema":{"type":"number","minimum":-1000000000,"maximum":1000000000},"example":100,"x-randomapi-param-group":"route"},{"name":"stddev","in":"query","description":"Scale for dist=normal and dist=lognormal; must be > 0 (zero or negative is a 400). For lognormal it is the standard deviation of the underlying normal. Defaults to 1.","required":false,"schema":{"type":"number","maximum":1000000000},"example":15,"x-randomapi-param-group":"route"},{"name":"rate","in":"query","description":"dist=exponential: the rate λ; must be > 0. The theoretical mean is 1/rate. Defaults to 1.","required":false,"schema":{"type":"number","maximum":1000000000},"example":0.5,"x-randomapi-param-group":"route"},{"name":"lambda","in":"query","description":"dist=poisson: the mean number of events per interval; must be > 0. Required — Poisson has no canonical default. At or below 30 the sampler is Knuth's exact method, above it a normal approximation.","required":false,"schema":{"type":"number","maximum":1000000000},"example":4,"x-randomapi-param-group":"route"},{"name":"trials","in":"query","description":"dist=binomial: the number of Bernoulli trials n (1–10000). Required. At or below 30 the sampler sums real trials, above it uses a normal approximation.","required":false,"schema":{"type":"integer","minimum":1,"maximum":10000},"example":20,"x-randomapi-param-group":"route"},{"name":"probability","in":"query","description":"dist=binomial: the success probability p of one trial, between 0 and 1 inclusive (anything outside is a 400). Required.","required":false,"schema":{"type":"number"},"example":0.3,"x-randomapi-param-group":"route"},{"name":"alpha","in":"query","description":"Shape; must be > 0. dist=pareto: the tail index — required, and log5/log4 ≈ 1.161 is the classic 80/20 shape. dist=zipf: the rank exponent, defaulting to 1 (Zipf's law).","required":false,"schema":{"type":"number","maximum":1000},"example":1.5,"x-randomapi-param-group":"route"},{"name":"xmin","in":"query","description":"dist=pareto: the scale — the smallest value the distribution can take; must be > 0. Defaults to 1. No draw is ever returned below it: after rounding, a value is clamped up to the smallest number with `precision` decimals that is still ≥ xmin.","required":false,"schema":{"type":"number","maximum":1000000000},"example":1,"x-randomapi-param-group":"route"},{"name":"support","in":"query","description":"dist=zipf: the number of ranks N (1–100000). Required. Draws are whole ranks 1..N with P(k) ∝ k^−alpha.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100000},"example":1000,"x-randomapi-param-group":"route"},{"name":"precision","in":"query","description":"Decimal places for the continuous distributions (uniform, normal, lognormal, exponential, pareto). Defaults to 4. Rounding happens last and is clamped back inside the support; a grid too coarse for the distribution's interquartile range is warned about, and one that leaves no valid uniform value is a 400. Ignored — with a warning — by Poisson, binomial and Zipf, whose draws are whole numbers.","required":false,"schema":{"type":"integer","minimum":0,"maximum":10},"example":2,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["dist","size"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"dist,size"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["seed"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"seed"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DistributionsSummaryEnvelope"},{"$ref":"#/components/schemas/DistributionsSummaryRecord"}]},"example":{"data":{"dist":"normal","size":1000,"parameters":{"mean":100,"stddev":15,"precision":4},"empirical":{"mean":99.9571,"variance":220.5983,"stddev":14.8525,"min":52.7431,"max":148.9902,"median":99.9128,"p25":89.7712,"p75":110.0264,"p95":124.3187},"theoretical":{"mean":100,"variance":225,"note":null},"method":"box-muller","seed":42},"meta":{"endpoint":"distributions","route":"/summary","params":{"dist":"normal","size":1000,"seed":0},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Random numbers by distribution","url":"https://randomapi.dev/apis/distributions"},"x-randomapi-kind":"mock","x-randomapi-mode":"compute"}},"/api/dns-record-types":{"get":{"operationId":"get_dns_record_types_root","tags":["internet"],"summary":"Search the scoped IANA DNS RR TYPE list","description":"With no search, returns every in-scope registry row. Search checks mnemonic, numeric value, meaning and reference; zero matches return an empty list plus a warning. Authoritative source: IANA DNS Parameters — Resource Record (RR) TYPEs (2026-07-06 snapshot).","parameters":[{"name":"search","in":"query","description":"Case-insensitive substring search across type, numeric value, meaning and registry reference.","required":false,"schema":{"type":"string","maxLength":100},"example":"mail","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["type","value"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"type,value"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["reference"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"reference"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DnsRecordTypesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/DnsRecordTypesRootRecord"}}]},"example":{"data":[{"type":"AAAA","value":28,"meaning":"IP6 Address","reference":"[RFC3596]"}],"meta":{"endpoint":"dns-record-types","count":1,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"type\":\"AAAA\",\"value\":28,\"meaning\":\"IP6 Address\",\"reference\":\"[RFC3596]\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for DNS record types","url":"https://randomapi.dev/apis/dns-record-types"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/dns-record-types/lookup":{"get":{"operationId":"get_dns_record_types_lookup","tags":["internet"],"summary":"Look up one DNS RR TYPE by mnemonic or number","description":"Mnemonic lookup is case-insensitive; decimal numeric strings are accepted. Both forms echo the canonical mnemonic in meta.params. Missing and out-of-scope rows are explicit 404s. Authoritative source: IANA DNS Parameters — Resource Record (RR) TYPEs (2026-07-06 snapshot).","parameters":[{"name":"type","in":"query","description":"IANA RR TYPE mnemonic or decimal numeric value, for example AAAA, https or 28.","required":true,"schema":{"type":"string","minLength":1,"maxLength":64},"example":"AAAA","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["type","value"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"type,value"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["reference"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"reference"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DnsRecordTypesLookupEnvelope"},{"$ref":"#/components/schemas/DnsRecordTypesLookupRecord"}]},"example":{"data":{"type":"AAAA","value":28,"meaning":"IP6 Address","reference":"[RFC3596]"},"meta":{"endpoint":"dns-record-types","route":"/lookup","params":{"type":"AAAA"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"The requested mnemonic or numeric value has no in-scope DNS RR TYPE row.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?type=65000"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for DNS record types","url":"https://randomapi.dev/apis/dns-record-types"},"x-randomapi-kind":"real","x-randomapi-mode":"lookup"}},"/api/dns-records":{"get":{"operationId":"get_dns_records_root","tags":["internet"],"summary":"Generate individual type-correct DNS records","description":"Generate safe DNS record fixtures with type-correct RDATA and coherent SRV RRsets, using reserved domains and documentation addresses only.","parameters":[{"name":"type","in":"query","description":"Generate a mixed list or constrain every record to one exact DNS type.","required":false,"schema":{"type":"string","enum":["any","A","AAAA","CNAME","MX","TXT","CAA","SRV"],"default":"any"},"example":"MX","x-randomapi-param-group":"route"},{"name":"zone","in":"query","description":"ASCII fixture zone below .test or the reserved example.com/.net/.org domains. A final dot is accepted and canonicalized away.","required":false,"schema":{"type":"string","minLength":3,"maxLength":191,"default":"example.test"},"example":"app.example.test","x-randomapi-param-group":"route"},{"name":"ttl","in":"query","description":"TTL in seconds applied exactly to every generated record.","required":false,"schema":{"type":"integer","minimum":30,"maximum":86400,"default":300},"example":3600,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","zone"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,zone"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["port"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"port"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DnsRecordsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/DnsRecordsRootRecord"}}]},"example":{"data":[{"id":"rr_a_00_4e19c0a27b","zone":"example.test","owner":"host-1-a1b2c3.example.test.","ttl":300,"type":"A","value":"192.0.2.1","priority":10,"weight":null,"port":null}],"meta":{"endpoint":"dns-records","count":1,"seed":42,"params":{"type":"any","zone":"example.test","ttl":300},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"rr_a_00_4e19c0a27b\",\"zone\":\"example.test\",\"owner\":\"host-1-a1b2c3.example.test.\",\"ttl\":300,\"type\":\"A\",\"value\":\"192.0.2.1\",\"priority\":10,\"weight\":null,\"port\":null}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for DNS record fixtures","url":"https://randomapi.dev/apis/dns-records"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/dns-records/srv":{"get":{"operationId":"get_dns_records_srv","tags":["internet"],"summary":"Generate a coherent SRV resource-record set","description":"Generate safe DNS record fixtures with type-correct RDATA and coherent SRV RRsets, using reserved domains and documentation addresses only.","parameters":[{"name":"service","in":"query","description":"Derives the SRV service label, protocol and standard fixture port.","required":false,"schema":{"type":"string","enum":["https","sip","xmpp-client"],"default":"https"},"example":"sip","x-randomapi-param-group":"route"},{"name":"zone","in":"query","description":"ASCII fixture zone below .test or the reserved example.com/.net/.org domains. A final dot is accepted and canonicalized away.","required":false,"schema":{"type":"string","minLength":3,"maxLength":191,"default":"example.test"},"example":"app.example.test","x-randomapi-param-group":"route"},{"name":"ttl","in":"query","description":"TTL in seconds applied exactly to every generated record.","required":false,"schema":{"type":"integer","minimum":30,"maximum":86400,"default":300},"example":3600,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","zone"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,zone"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["port"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"port"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DnsRecordsSrvEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/DnsRecordsSrvRecord"}}]},"example":{"data":[{"id":"rr_a_00_4e19c0a27b","zone":"example.test","owner":"host-1-a1b2c3.example.test.","ttl":300,"type":"A","value":"192.0.2.1","priority":10,"weight":null,"port":null}],"meta":{"endpoint":"dns-records","route":"/srv","count":1,"seed":42,"params":{"service":"https","zone":"example.test","ttl":300},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"rr_a_00_4e19c0a27b\",\"zone\":\"example.test\",\"owner\":\"host-1-a1b2c3.example.test.\",\"ttl\":300,\"type\":\"A\",\"value\":\"192.0.2.1\",\"priority\":10,\"weight\":null,\"port\":null}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for DNS record fixtures","url":"https://randomapi.dev/apis/dns-records"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/durations/parse":{"get":{"operationId":"get_durations_parse","tags":["datetime"],"summary":"Parse an ISO 8601 duration into components with nominal/exact classification","description":"Validates the P-form grammar and returns every component plus which units are nominal, calendar or exact. Whole-duration second totals are reported only as a labelled approximation. Authoritative source: ISO 8601-1:2019 duration form, publicly restated in RFC 5545 §3.3.6 and RFC 3339 Appendix A.","parameters":[{"name":"value","in":"query","description":"ISO 8601 duration, at most 64 characters: P[nY][nM][nW][nD][T[nH][nM][nS]], optionally signed. Uppercase designators; a decimal fraction only in the smallest component present.","required":true,"schema":{"type":"string","maxLength":64},"example":"P1Y2M3DT4H5M6S","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["value","normalized"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"value,normalized"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["approximate"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"approximate"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DurationsParseEnvelope"},{"$ref":"#/components/schemas/DurationsParseRecord"}]},"example":{"data":{"value":"P1Y2M3DT4H5M6S","normalized":"P1Y2M3DT4H5M6S","negative":false,"years":1,"months":2,"weeks":0,"days":3,"hours":4,"minutes":5,"seconds":6,"classification":{"nominal":["years","months"],"calendar":["days"],"exact":["hours","minutes","seconds"]},"nominalMonths":14,"calendarDays":3,"exactSeconds":14706,"approximate":{"seconds":37090350,"days":429.2864583333333,"assumption":"Mean Gregorian conversion: 1 year = 31556952 s (365.2425 days), 1 month = 2629746 s, 1 week = 604800 s, 1 day = 86400 s."}},"meta":{"endpoint":"durations","route":"/parse","params":{"value":"P1Y2M3DT4H5M6S"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for ISO 8601 Duration API","url":"https://randomapi.dev/apis/durations"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/durations/between":{"get":{"operationId":"get_durations_between","tags":["datetime"],"summary":"Calendar breakdown and exact totals between two instants","description":"Returns the years/months/days/hours/minutes/seconds breakdown in the same order /add applies, plus exact elapsed totals. Omitting 'to' uses the request time and echoes the resolved instant. Authoritative source: ISO 8601-1:2019 duration form, publicly restated in RFC 5545 §3.3.6 and RFC 3339 Appendix A.","parameters":[{"name":"from","in":"query","description":"Start instant: YYYY-MM-DD (UTC midnight) or a timestamp with Z / an explicit offset. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":true,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-31T00:00:00Z","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"End instant, same formats. Defaults to the request time, in which case the resolved instant is echoed in meta.params. May be earlier than 'from'. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-03-01T00:00:00Z","x-randomapi-param-group":"route"},{"name":"tz","in":"query","description":"IANA timezone used for the calendar (nominal) part of the arithmetic, case-insensitive. UTC means days are exactly 86400 seconds; a real zone makes days wall-clock days that can be 23 or 25 hours long.","required":false,"schema":{"type":"string","minLength":1,"maxLength":64,"default":"UTC"},"example":"Europe/Copenhagen","x-randomapi-param-group":"route"},{"name":"maxUnits","in":"query","description":"Report at most this many non-zero units, counting from the largest one present; a zero component between two reported units costs nothing. Truncation is toward zero and never rounds — whatever is dropped is reported separately.","required":false,"schema":{"type":"integer","minimum":1,"maximum":6,"default":6},"example":3,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["from","to"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"from,to"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["totalDays"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"totalDays"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DurationsBetweenEnvelope"},{"$ref":"#/components/schemas/DurationsBetweenRecord"}]},"example":{"data":{"from":"2026-01-31T00:00:00.000Z","to":"2026-03-01T00:00:00.000Z","timeZone":"Europe/Copenhagen","negative":false,"years":0,"months":1,"days":1,"hours":0,"minutes":0,"seconds":0,"iso":"P1M1D","truncated":false,"remainderSeconds":0,"totalSeconds":2505600,"totalDays":29},"meta":{"endpoint":"durations","route":"/between","params":{"from":"2026-01-31T00:00:00Z","tz":"UTC","maxUnits":6},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for ISO 8601 Duration API","url":"https://randomapi.dev/apis/durations"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/durations/add":{"get":{"operationId":"get_durations_add","tags":["datetime"],"summary":"Add or subtract a duration with documented clamping and DST behaviour","description":"Applies years, then months, then weeks and days on the wall clock, resolves that value in the zone once, then adds the exact time components. Clamping and any DST adjustment are reported explicitly. Authoritative source: ISO 8601-1:2019 duration form, publicly restated in RFC 5545 §3.3.6 and RFC 3339 Appendix A.","parameters":[{"name":"start","in":"query","description":"Starting instant: YYYY-MM-DD (UTC midnight) or a timestamp with Z / an explicit offset. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":true,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-31","x-randomapi-param-group":"route"},{"name":"duration","in":"query","description":"ISO 8601 duration to add; a leading '-' subtracts. Years, months, weeks and days must be whole numbers — only H, M and S may carry a fraction.","required":true,"schema":{"type":"string","maxLength":64},"example":"P1M","x-randomapi-param-group":"route"},{"name":"tz","in":"query","description":"IANA timezone used for the calendar (nominal) part of the arithmetic, case-insensitive. UTC means days are exactly 86400 seconds; a real zone makes days wall-clock days that can be 23 or 25 hours long.","required":false,"schema":{"type":"string","minLength":1,"maxLength":64,"default":"UTC"},"example":"Europe/Copenhagen","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["start","startLocal"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"start,startLocal"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["calendarDaysApplied"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"calendarDaysApplied"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DurationsAddEnvelope"},{"$ref":"#/components/schemas/DurationsAddRecord"}]},"example":{"data":{"start":"2026-01-31T00:00:00.000Z","startLocal":"2026-01-31T00:00:00.000","startOffset":"+00:00","timeZone":"UTC","duration":"P1M","steps":[{"unit":"years","amount":0,"local":"2026-01-31T00:00:00.000","clamped":false},{"unit":"months","amount":1,"local":"2026-02-28T00:00:00.000","clamped":true},{"unit":"days","amount":0,"local":"2026-02-28T00:00:00.000","clamped":false},{"unit":"time","amount":0,"local":"2026-02-28T00:00:00.000","clamped":false}],"clamped":true,"dstAdjustment":null,"result":"2026-02-28T00:00:00.000Z","resultLocal":"2026-02-28T00:00:00.000","resultOffset":"+00:00","exactSecondsApplied":0,"calendarDaysApplied":0},"meta":{"endpoint":"durations","route":"/add","params":{"start":"2026-01-31","duration":"P1M","tz":"UTC"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for ISO 8601 Duration API","url":"https://randomapi.dev/apis/durations"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/durations/humanize":{"get":{"operationId":"get_durations_humanize","tags":["datetime"],"summary":"Render a duration in human-readable form","description":"Formats the duration with Intl.DurationFormat and echoes the resolved locale. Units are never re-balanced; maxUnits truncates without rounding and returns the dropped part. Authoritative source: ISO 8601-1:2019 duration form, publicly restated in RFC 5545 §3.3.6 and RFC 3339 Appendix A.","parameters":[{"name":"value","in":"query","description":"ISO 8601 duration to render. A fraction in the smallest exact component is carried into the next smaller unit; a fractional year, month, week or day is rejected.","required":true,"schema":{"type":"string","maxLength":64},"example":"PT1H30M","x-randomapi-param-group":"route"},{"name":"style","in":"query","description":"CLDR duration style: long ('1 hour, 30 minutes'), short ('1 hr, 30 min') or digital ('1:30:00', which always shows the full H:MM:SS clock).","required":false,"schema":{"type":"string","enum":["long","short","digital"],"default":"long"},"example":"short","x-randomapi-param-group":"route"},{"name":"maxUnits","in":"query","description":"Report at most this many non-zero units, counting from the largest one present; a zero component between two reported units costs nothing. Truncation is toward zero and never rounds — whatever is dropped is reported separately.","required":false,"schema":{"type":"integer","minimum":1,"maximum":6,"default":6},"example":3,"x-randomapi-param-group":"route"},{"name":"locale","in":"query","description":"BCP 47 language tag for the wording and digits, e.g. de, ja or ar-EG-u-nu-arab. Malformed tags are a 400; an unmatched but well-formed tag falls back, which resolvedLocale makes visible.","required":false,"schema":{"type":"string","minLength":2,"maxLength":35,"default":"en"},"example":"de","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["value","normalized"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"value,normalized"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["negative"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"negative"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DurationsHumanizeEnvelope"},{"$ref":"#/components/schemas/DurationsHumanizeRecord"}]},"example":{"data":{"value":"PT1H30M","normalized":"PT1H30M","text":"1 hour, 30 minutes","style":"long","locale":"en","resolvedLocale":"en","numberingSystem":"latn","units":["hours","minutes"],"truncated":false,"remainder":null,"negative":false},"meta":{"endpoint":"durations","route":"/humanize","params":{"value":"PT1H30M","style":"long","maxUnits":6,"locale":"en"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for ISO 8601 Duration API","url":"https://randomapi.dev/apis/durations"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/elements":{"get":{"operationId":"get_elements_root","tags":["developer"],"summary":"Filter the 118 elements by block, state, group, period, mass or electronegativity","description":"Order defaults to `random` (seeded, so a fixed seed is a reproducible draw); `order=atomicNumber` gives the canonical order. Authoritative source: PubChem Periodic Table of Elements (NCBI, U.S. National Library of Medicine).","parameters":[{"name":"order","in":"query","description":"random is a seeded shuffle of the matches; atomicNumber is ascending Z.","required":false,"schema":{"type":"string","enum":["random","atomicNumber"],"default":"random"},"example":"atomicNumber","x-randomapi-param-group":"route"},{"name":"groupBlock","in":"query","description":"Only elements in this PubChem category, as a URL-safe slug (actinide, alkali-metal, alkaline-earth-metal, halogen, lanthanide, metalloid, noble-gas, nonmetal, post-transition-metal, transition-metal).","required":false,"schema":{"type":"string","enum":["actinide","alkali-metal","alkaline-earth-metal","halogen","lanthanide","metalloid","noble-gas","nonmetal","post-transition-metal","transition-metal","any"],"default":"any"},"example":"noble-gas","x-randomapi-param-group":"route"},{"name":"block","in":"query","description":"Only elements in this block. Derived from the IUPAC layout, not a PubChem column.","required":false,"schema":{"type":"string","enum":["s","p","d","f","any"],"default":"any"},"example":"f","x-randomapi-param-group":"route"},{"name":"state","in":"query","description":"Only elements in this state at standard conditions. Includes the 9 superheavies whose state PubChem only predicts — check standardStatePredicted on each record.","required":false,"schema":{"type":"string","enum":["solid","liquid","gas","any"],"default":"any"},"example":"gas","x-randomapi-param-group":"route"},{"name":"group","in":"query","description":"Only elements in this IUPAC group. The 30 f-block elements have no group number and never match.","required":false,"schema":{"type":"integer","minimum":1,"maximum":18},"example":17,"x-randomapi-param-group":"route"},{"name":"period","in":"query","description":"Only elements in this period.","required":false,"schema":{"type":"integer","minimum":1,"maximum":7},"example":2,"x-randomapi-param-group":"route"},{"name":"minMass","in":"query","description":"Only elements with an atomic mass ≥ this value.","required":false,"schema":{"type":"number","minimum":0,"maximum":400},"example":200,"x-randomapi-param-group":"route"},{"name":"maxMass","in":"query","description":"Only elements with an atomic mass ≤ this value.","required":false,"schema":{"type":"number","minimum":0,"maximum":400},"example":20,"x-randomapi-param-group":"route"},{"name":"minElectronegativity","in":"query","description":"Only elements with a Pauling electronegativity ≥ this value. The 23 elements without a published value never match.","required":false,"schema":{"type":"number","minimum":0,"maximum":4},"example":3,"x-randomapi-param-group":"route"},{"name":"maxElectronegativity","in":"query","description":"Only elements with a Pauling electronegativity ≤ this value; elements without a published value never match.","required":false,"schema":{"type":"number","minimum":0,"maximum":4},"example":1,"x-randomapi-param-group":"route"},{"name":"era","in":"query","description":"ancient selects exactly the 13 elements PubChem records as \"Ancient\"; dated selects the 105 with a numeric year.","required":false,"schema":{"type":"string","enum":["ancient","dated","any"],"default":"any"},"example":"ancient","x-randomapi-param-group":"route"},{"name":"discoveredFrom","in":"query","description":"Only elements with a discovery year ≥ this. The 13 \"Ancient\" elements carry no year and are never matched — use era=ancient for those.","required":false,"schema":{"type":"integer","minimum":1000,"maximum":2100},"example":1900,"x-randomapi-param-group":"route"},{"name":"discoveredTo","in":"query","description":"Only elements with a discovery year ≤ this; the \"Ancient\" elements carry no year and are never matched.","required":false,"schema":{"type":"integer","minimum":1000,"maximum":2100},"example":1800,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to 10.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["atomicNumber","symbol"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"atomicNumber,symbol"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["discoveryRecord"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"discoveryRecord"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ElementsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/ElementsRootRecord"}}]},"example":{"data":[{"atomicNumber":26,"symbol":"Fe","name":"Iron","atomicMass":55.84,"massIsMostStableIsotope":false,"group":8,"period":4,"block":"d","groupBlock":"Transition metal","standardState":"solid","standardStatePredicted":false,"electronConfiguration":"[Ar]4s2 3d6","electronegativity":1.83,"atomicRadius":194,"ionizationEnergy":7.902,"electronAffinity":0.163,"oxidationStates":["+3","+2"],"meltingPoint":1811,"boilingPoint":3134,"density":7.874,"cpkHexColor":"#E06633","yearDiscovered":1766,"discoveryRecord":"1766"}],"meta":{"endpoint":"elements","count":1,"seed":42,"params":{"order":"random","groupBlock":"any","block":"any","state":"any","era":"any"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"atomicNumber\":26,\"symbol\":\"Fe\",\"name\":\"Iron\",\"atomicMass\":55.84,\"massIsMostStableIsotope\":false,\"group\":8,\"period\":4,\"block\":\"d\",\"groupBlock\":\"Transition metal\",\"standardState\":\"solid\",\"standardStatePredicted\":false,\"electronConfiguration\":\"[Ar]4s2 3d6\",\"electronegativity\":1.83,\"atomicRadius\":194,\"ionizationEnergy\":7.902,\"electronAffinity\":0.163,\"oxidationStates\":[\"+3\",\"+2\"],\"meltingPoint\":1811,\"boilingPoint\":3134,\"density\":7.874,\"cpkHexColor\":\"#E06633\",\"yearDiscovered\":1766,\"discoveryRecord\":\"1766\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Chemical elements","url":"https://randomapi.dev/apis/elements"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/elements/lookup":{"get":{"operationId":"get_elements_lookup","tags":["developer"],"summary":"Look up one element by symbol, name or atomic number","description":"All 118 chemical elements from PubChem — masses, states, configurations, CPK colours and oxidation states, plus a ready-to-render periodic-table grid. Authoritative source: PubChem Periodic Table of Elements (NCBI, U.S. National Library of Medicine).","parameters":[{"name":"element","in":"query","description":"Chemical symbol (Fe), English name (iron) or atomic number (26). Case-insensitive.","required":true,"schema":{"type":"string","minLength":1,"maxLength":20},"example":"Fe","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["atomicNumber","symbol"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"atomicNumber,symbol"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["discoveryRecord"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"discoveryRecord"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ElementsLookupEnvelope"},{"$ref":"#/components/schemas/ElementsLookupRecord"}]},"example":{"data":{"atomicNumber":26,"symbol":"Fe","name":"Iron","atomicMass":55.84,"massIsMostStableIsotope":false,"group":8,"period":4,"block":"d","groupBlock":"Transition metal","standardState":"solid","standardStatePredicted":false,"electronConfiguration":"[Ar]4s2 3d6","electronegativity":1.83,"atomicRadius":194,"ionizationEnergy":7.902,"electronAffinity":0.163,"oxidationStates":["+3","+2"],"meltingPoint":1811,"boilingPoint":3134,"density":7.874,"cpkHexColor":"#E06633","yearDiscovered":1766,"discoveryRecord":"1766"},"meta":{"endpoint":"elements","route":"/lookup","params":{"element":"Fe"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"No element in the 118-row periodic table has the requested symbol, name or atomic number.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?element=Xx"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Chemical elements","url":"https://randomapi.dev/apis/elements"},"x-randomapi-kind":"real","x-randomapi-mode":"lookup"}},"/api/elements/table":{"get":{"operationId":"get_elements_table","tags":["developer"],"summary":"The printed periodic-table layout as a grid, ready to render","description":"The conventional layout: periods 1-7 as rows 1-7, with the f-block lifted out and printed below as rows 8 and 9, columns 3-17. Authoritative source: PubChem Periodic Table of Elements (NCBI, U.S. National Library of Medicine).","parameters":[{"name":"gridValues","in":"query","description":"What each occupied grid cell contains. Empty cells are null either way.","required":false,"schema":{"type":"string","enum":["atomicNumber","symbol"],"default":"atomicNumber"},"example":"symbol","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["layout","grid"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"layout,grid"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["placeholders"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"placeholders"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ElementsTableEnvelope"},{"$ref":"#/components/schemas/ElementsTableRecord"}]},"example":{"data":{"layout":{"rows":9,"columns":18,"mainRows":7,"fBlockRows":[8,9],"fBlockColumns":[3,17]},"grid":[{"row":1,"cells":[1,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,2]}],"cells":[{"atomicNumber":26,"symbol":"Fe","name":"Iron","row":4,"column":8,"group":8,"period":4,"block":"d","groupBlock":"Transition metal","cpkHexColor":"#E06633"}],"placeholders":[{"row":6,"column":3,"label":"57–71","block":"f","firstAtomicNumber":57,"lastAtomicNumber":71}]},"meta":{"endpoint":"elements","route":"/table","params":{"gridValues":"atomicNumber"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Chemical elements","url":"https://randomapi.dev/apis/elements"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/email-messages":{"get":{"operationId":"get_email_messages_root","tags":["internet"],"summary":"Generate structured MIME message fixtures","description":"Each record describes one root message: identification headers, mailboxes, the unfolded header block, the part tree and attachment metadata. Bodies are summarised as `bodyPreview` — fetch `/raw` for the complete message text.","parameters":[{"name":"structure","in":"query","description":"Part tree: 'plain' = one text/plain entity; 'alternative' = multipart/alternative with text/plain then text/html; 'mixed' = multipart/mixed with a text/plain part plus attachment parts; 'nested' = multipart/mixed wrapping a multipart/alternative plus attachment parts.","required":false,"schema":{"type":"string","enum":["plain","alternative","mixed","nested"],"default":"alternative"},"example":"nested","x-randomapi-param-group":"route"},{"name":"attachments","in":"query","description":"Exact number of attachment parts. Requires structure=mixed or structure=nested; anything above 0 with 'plain' or 'alternative' is a 400.","required":false,"schema":{"type":"integer","minimum":0,"maximum":3,"default":0},"example":2,"x-randomapi-param-group":"route"},{"name":"encoding","in":"query","description":"Content-Transfer-Encoding for the text parts; 'quotedPrintable' emits the literal token 'quoted-printable'. Binary attachment parts stay base64 regardless.","required":false,"schema":{"type":"string","enum":["7bit","quotedPrintable","base64"],"default":"quotedPrintable"},"example":"base64","x-randomapi-param-group":"route"},{"name":"unicode","in":"query","description":"Use display names and a subject that contain non-ASCII characters, forcing RFC 2047 'B' encoded-words in From/To/Cc/Subject. Body text and local parts stay US-ASCII either way. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Earliest message date, inclusive. YYYY-MM-DD (= midnight UTC) or a full ISO 8601 timestamp. With only from, to resolves exactly 30 days later; with neither bound, the window is the 30 days up to today at UTC midnight. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Latest message date, inclusive. YYYY-MM-DD means midnight UTC — pass a timestamp to cover that whole day. Must be ≥ from, and the window must contain at least one whole second, because an RFC 5322 Date has second precision. With only to, from resolves exactly 30 days earlier. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-03-31","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["messageId","inReplyTo"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"messageId,inReplyTo"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["bodyPreview"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"bodyPreview"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/EmailMessagesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/EmailMessagesRootRecord"}}]},"example":{"data":[{"messageId":"<20260721T120311.9c1d4a7f0b23@northwind.test>","inReplyTo":null,"references":[],"from":{"name":"Ada Lovelace","address":"ada.lovelace@northwind.test"},"to":[{"name":"Ada Lovelace","address":"ada.lovelace@northwind.test"}],"cc":[],"subject":"Q3 roadmap review: agenda and open questions","date":"2026-07-21T12:03:11Z","headers":{"Date":"Tue, 21 Jul 2026 14:03:11 +0200","From":"\"Ada Lovelace\" <ada.lovelace@northwind.test>","To":"\"Grace Hopper\" <grace.hopper@example.net>","Subject":"Q3 roadmap review: agenda and open questions","Message-ID":"<20260721T120311.9c1d4a7f0b23@northwind.test>","MIME-Version":"1.0","Content-Type":"multipart/alternative; boundary=\"----=_Part_4f2a91c0_8b3d17e6\""},"structure":{"contentType":"multipart/alternative","boundary":"----=_Part_4f2a91c0_8b3d17e6","parts":[{"contentType":"text/plain","charset":"utf-8","contentTransferEncoding":"quoted-printable","sizeBytes":412},{"contentType":"text/html","charset":"utf-8","contentTransferEncoding":"quoted-printable","sizeBytes":733}]},"attachments":[{"filename":"q3-report.pdf","contentType":"application/pdf","sizeBytes":1843,"contentTransferEncoding":"base64","contentId":"<9f0c2a71b4d8@northwind.test>"}],"bodyPreview":"Hi Grace, Thanks for the quick turnaround on the last batch - the totals line…"}],"meta":{"endpoint":"email-messages","count":1,"seed":42,"params":{"structure":"alternative","attachments":0,"encoding":"quotedPrintable","unicode":false},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"messageId\":\"<20260721T120311.9c1d4a7f0b23@northwind.test>\",\"inReplyTo\":null,\"references\":[],\"from\":{\"name\":\"Ada Lovelace\",\"address\":\"ada.lovelace@northwind.test\"},\"to\":[{\"name\":\"Ada Lovelace\",\"address\":\"ada.lovelace@northwind.test\"}],\"cc\":[],\"subject\":\"Q3 roadmap review: agenda and open questions\",\"date\":\"2026-07-21T12:03:11Z\",\"headers\":{\"Date\":\"Tue, 21 Jul 2026 14:03:11 +0200\",\"From\":\"\\\"Ada Lovelace\\\" <ada.lovelace@northwind.test>\",\"To\":\"\\\"Grace Hopper\\\" <grace.hopper@example.net>\",\"Subject\":\"Q3 roadmap review: agenda and open questions\",\"Message-ID\":\"<20260721T120311.9c1d4a7f0b23@northwind.test>\",\"MIME-Version\":\"1.0\",\"Content-Type\":\"multipart/alternative; boundary=\\\"----=_Part_4f2a91c0_8b3d17e6\\\"\"},\"structure\":{\"contentType\":\"multipart/alternative\",\"boundary\":\"----=_Part_4f2a91c0_8b3d17e6\",\"parts\":[{\"contentType\":\"text/plain\",\"charset\":\"utf-8\",\"contentTransferEncoding\":\"quoted-printable\",\"sizeBytes\":412},{\"contentType\":\"text/html\",\"charset\":\"utf-8\",\"contentTransferEncoding\":\"quoted-printable\",\"sizeBytes\":733}]},\"attachments\":[{\"filename\":\"q3-report.pdf\",\"contentType\":\"application/pdf\",\"sizeBytes\":1843,\"contentTransferEncoding\":\"base64\",\"contentId\":\"<9f0c2a71b4d8@northwind.test>\"}],\"bodyPreview\":\"Hi Grace, Thanks for the quick turnaround on the last batch - the totals line…\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Email message fixtures","url":"https://randomapi.dev/apis/email-messages"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/email-messages/raw":{"get":{"operationId":"get_email_messages_raw","tags":["internet"],"summary":"One complete raw RFC 5322 message","description":"Returns the whole message as a string with CRLF line endings — headers, boundaries, encoded bodies and attachment parts. Save `raw` verbatim as a `.eml` file.","parameters":[{"name":"structure","in":"query","description":"Part tree: 'plain' = one text/plain entity; 'alternative' = multipart/alternative with text/plain then text/html; 'mixed' = multipart/mixed with a text/plain part plus attachment parts; 'nested' = multipart/mixed wrapping a multipart/alternative plus attachment parts.","required":false,"schema":{"type":"string","enum":["plain","alternative","mixed","nested"],"default":"alternative"},"example":"mixed","x-randomapi-param-group":"route"},{"name":"attachments","in":"query","description":"Exact number of attachment parts. Requires structure=mixed or structure=nested; anything above 0 with 'plain' or 'alternative' is a 400.","required":false,"schema":{"type":"integer","minimum":0,"maximum":3,"default":0},"example":2,"x-randomapi-param-group":"route"},{"name":"encoding","in":"query","description":"Content-Transfer-Encoding for the text parts; 'quotedPrintable' emits the literal token 'quoted-printable'. Binary attachment parts stay base64 regardless.","required":false,"schema":{"type":"string","enum":["7bit","quotedPrintable","base64"],"default":"quotedPrintable"},"example":"base64","x-randomapi-param-group":"route"},{"name":"unicode","in":"query","description":"Use display names and a subject that contain non-ASCII characters, forcing RFC 2047 'B' encoded-words in From/To/Cc/Subject. Body text and local parts stay US-ASCII either way. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"seed","in":"query","description":"Seeds every choice in the message. Pin it — together with the route's other parameters — for byte-identical output on every call. Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer","minimum":0,"maximum":2147483647,"default":1},"example":42,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["raw","messageId"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"raw,messageId"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["lineCount"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"lineCount"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/EmailMessagesRawEnvelope"},{"$ref":"#/components/schemas/EmailMessagesRawRecord"}]},"example":{"data":{"raw":"Date: Tue, 21 Jul 2026 14:03:11 +0200\r\nFrom: \"Ada Lovelace\" <ada.lovelace@northwind.test>\r\n…","messageId":"<20260721T120311.9c1d4a7f0b23@northwind.test>","subject":"Q3 roadmap review: agenda and open questions","date":"2026-07-21T12:03:11Z","structure":{"contentType":"multipart/alternative","boundary":"----=_Part_4f2a91c0_8b3d17e6","parts":[{"contentType":"text/plain","charset":"utf-8","contentTransferEncoding":"quoted-printable","sizeBytes":412},{"contentType":"text/html","charset":"utf-8","contentTransferEncoding":"quoted-printable","sizeBytes":733}]},"attachments":[{"filename":"q3-report.pdf","contentType":"application/pdf","sizeBytes":1843,"contentTransferEncoding":"base64","contentId":"<9f0c2a71b4d8@northwind.test>"}],"boundaries":["----=_Part_4f2a91c0_8b3d17e6"],"sizeBytes":1893,"lineCount":42},"meta":{"endpoint":"email-messages","route":"/raw","params":{"structure":"alternative","attachments":0,"encoding":"quotedPrintable","unicode":false,"seed":1},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Email message fixtures","url":"https://randomapi.dev/apis/email-messages"},"x-randomapi-kind":"mock","x-randomapi-mode":"compute"}},"/api/email-messages/thread":{"get":{"operationId":"get_email_messages_thread","tags":["internet"],"summary":"A reply chain with a valid References ancestor chain","description":"Returns the root message followed by `depth` replies. Each reply's In-Reply-To is exactly its parent's Message-ID, and its References is the parent's References plus the parent's Message-ID (RFC 5322 §3.6.4).","parameters":[{"name":"depth","in":"query","description":"Number of replies after the root message; the chain therefore holds depth + 1 messages.","required":false,"schema":{"type":"integer","minimum":1,"maximum":8,"default":3},"example":5,"x-randomapi-param-group":"route"},{"name":"structure","in":"query","description":"Part tree: 'plain' = one text/plain entity; 'alternative' = multipart/alternative with text/plain then text/html; 'mixed' = multipart/mixed with a text/plain part plus attachment parts; 'nested' = multipart/mixed wrapping a multipart/alternative plus attachment parts.","required":false,"schema":{"type":"string","enum":["plain","alternative","mixed","nested"],"default":"alternative"},"example":"plain","x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Earliest possible date for the root message, which lands within 12 hours of it; replies then follow at 7 minutes to 20 hours apart. Every instant in the chain is a whole second (a sub-second 'from' rounds up), because an RFC 5322 Date has second precision. Defaults to 7 days before today (UTC). Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-05-04","x-randomapi-param-group":"route"},{"name":"seed","in":"query","description":"Seeds every choice in the message. Pin it — together with the route's other parameters — for byte-identical output on every call. Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer","minimum":0,"maximum":2147483647,"default":1},"example":42,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["subject","depth"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"subject,depth"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["messages"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"messages"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/EmailMessagesThreadEnvelope"},{"$ref":"#/components/schemas/EmailMessagesThreadRecord"}]},"example":{"data":{"subject":"Q3 roadmap review: agenda and open questions","depth":3,"messageCount":4,"participants":[{"name":"Ada Lovelace","address":"ada.lovelace@northwind.test"},{"name":"Grace Hopper","address":"grace.hopper@example.net"},{"name":"Marcus Bennett","address":"marcus.bennett@meridian.test"}],"messages":[{"index":0,"messageId":"<20260721T120311.9c1d4a7f0b23@northwind.test>","inReplyTo":null,"references":[],"from":{"name":"Ada Lovelace","address":"ada.lovelace@northwind.test"},"to":[{"name":"Grace Hopper","address":"grace.hopper@example.net"}],"cc":[{"name":"Marcus Bennett","address":"marcus.bennett@meridian.test"}],"subject":"Q3 roadmap review: agenda and open questions","date":"2026-07-21T12:03:11Z","headers":{"Date":"Tue, 21 Jul 2026 14:03:11 +0200","From":"\"Ada Lovelace\" <ada.lovelace@northwind.test>","To":"\"Grace Hopper\" <grace.hopper@example.net>","Cc":"\"Marcus Bennett\" <marcus.bennett@meridian.test>","Subject":"Q3 roadmap review: agenda and open questions","Message-ID":"<20260721T120311.9c1d4a7f0b23@northwind.test>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Transfer-Encoding":"quoted-printable"},"structure":{"contentType":"text/plain","charset":"utf-8","contentTransferEncoding":"quoted-printable","sizeBytes":412},"bodyPreview":"Hi Grace, Thanks for the quick turnaround on the last batch - the totals line…"},{"index":1,"messageId":"<20260721T224408.3e81b6cf90a4@example.net>","inReplyTo":"<20260721T120311.9c1d4a7f0b23@northwind.test>","references":["<20260721T120311.9c1d4a7f0b23@northwind.test>"],"from":{"name":"Grace Hopper","address":"grace.hopper@example.net"},"to":[{"name":"Ada Lovelace","address":"ada.lovelace@northwind.test"}],"cc":[{"name":"Marcus Bennett","address":"marcus.bennett@meridian.test"}],"subject":"Re: Q3 roadmap review: agenda and open questions","date":"2026-07-21T22:44:08Z","headers":{"Date":"Wed, 22 Jul 2026 07:44:08 +0900","From":"\"Grace Hopper\" <grace.hopper@example.net>","To":"\"Ada Lovelace\" <ada.lovelace@northwind.test>","Cc":"\"Marcus Bennett\" <marcus.bennett@meridian.test>","Subject":"Re: Q3 roadmap review: agenda and open questions","Message-ID":"<20260721T224408.3e81b6cf90a4@example.net>","In-Reply-To":"<20260721T120311.9c1d4a7f0b23@northwind.test>","References":"<20260721T120311.9c1d4a7f0b23@northwind.test>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Transfer-Encoding":"quoted-printable"},"structure":{"contentType":"text/plain","charset":"utf-8","contentTransferEncoding":"quoted-printable","sizeBytes":338},"bodyPreview":"Hi Ada, Looks right. The only thing I would add is a note about the retry budge…"}]},"meta":{"endpoint":"email-messages","route":"/thread","params":{"depth":3,"structure":"alternative","seed":1},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Email message fixtures","url":"https://randomapi.dev/apis/email-messages"},"x-randomapi-kind":"mock","x-randomapi-mode":"compute"}},"/api/email-syntax/validate":{"get":{"operationId":"get_email_syntax_validate","tags":["internet"],"summary":"Check one address against the RFC 5322, RFC 5321 and HTML profiles","description":"Splits the address, classifies both halves and reports per-profile conformance with the exact failing production. Nothing here touches DNS or SMTP. Authoritative source: RFC 5322 / RFC 5321 / WHATWG HTML address grammars, plus the bundled IANA root zone TLD snapshot (version 2026062302).","parameters":[{"name":"email","in":"query","description":"The address to check, up to 320 characters (the theoretical 64 + 1 + 255 maximum). Whitespace is never trimmed, because leading and trailing whitespace is itself a syntax question — which also means a literal \"+\" must be percent-encoded as %2B (user%2Btag@example.com), since a query string decodes \"+\" as a space and the space is what would be checked.","required":true,"schema":{"type":"string","minLength":1,"maxLength":320},"example":"user+tag@example.com","x-randomapi-param-group":"route"},{"name":"profile","in":"query","description":"Evaluate only this profile. Omit to evaluate all three and compare them.","required":false,"schema":{"type":"string","enum":["rfc5322","rfc5321","html"]},"example":"html","x-randomapi-param-group":"route"},{"name":"allowQuoted","in":"query","description":"Permit quoted-string local parts such as \"john..doe\"@example.org in the two RFC profiles. The HTML profile never allows them. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":false,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"allowDomainLiteral","in":"query","description":"Permit bracketed address literals such as [192.0.2.1] and [IPv6:2001:db8::1] in the two RFC profiles. The HTML profile never allows them. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":false,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"allowUnicode","in":"query","description":"Apply the RFC 6531/RFC 6532 UTF8-non-ascii extensions to the two RFC profiles. The HTML profile is ASCII-only regardless. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"allowObsolete","in":"query","description":"Permit obs-local-part and obs-domain in the RFC 5322 profile. RFC 5321 and the HTML profile have no obsolete forms. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"requireDelegatedTld","in":"query","description":"Cross-check the rightmost DNS label against the bundled IANA root zone snapshot and report it in tldDelegated. It never changes a profile verdict. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["input","normalized"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"input,normalized"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["warnings"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"warnings"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/EmailSyntaxValidateEnvelope"},{"$ref":"#/components/schemas/EmailSyntaxValidateRecord"}]},"example":{"data":{"input":"user+tag@example.com","normalized":"user+tag@example.com","localPart":"user+tag","localPartForm":"dot-atom","domain":"example.com","domainForm":"dns","isIdn":false,"punycodeDomain":"xn--e1afmkfd.xn--p1ai","lengths":{"localOctets":8,"domainOctets":11,"totalOctets":20},"profiles":{"rfc5322":{"conforms":true,"failingRule":null,"reference":null,"detail":null},"rfc5321":{"conforms":true,"failingRule":null,"reference":null,"detail":null},"html":{"conforms":true,"failingRule":null,"reference":null,"detail":null}},"tldDelegated":true,"warnings":[]},"meta":{"endpoint":"email-syntax","route":"/validate","params":{"email":"user+tag@example.com","allowQuoted":true,"allowDomainLiteral":true,"allowUnicode":false,"allowObsolete":false,"requireDelegatedTld":false},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Email address syntax validator","url":"https://randomapi.dev/apis/email-syntax"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/emails":{"get":{"operationId":"get_emails_root","tags":["people"],"summary":"Generate fake email addresses","description":"Fake email addresses with name-derived usernames on guaranteed non-deliverable domains (example.com/net/org and .test) — or stamp your own with ?domain=.","parameters":[{"name":"domain","in":"query","description":"Domain stamped onto every address (e.g. acme.test); lowercased, 1–63 chars. Omit for rotating non-deliverable defaults (example.com/net/org and generated .test names).","required":false,"schema":{"type":"string","minLength":1,"maxLength":63},"example":"acme.test","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["email","username"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"email,username"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["domain"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"domain"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/EmailsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/EmailsRootRecord"}}]},"example":{"data":[{"email":"maria.ortiz@example.net","username":"maria.ortiz","domain":"example.net"}],"meta":{"endpoint":"emails","count":1,"seed":42,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"email\":\"maria.ortiz@example.net\",\"username\":\"maria.ortiz\",\"domain\":\"example.net\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Email addresses","url":"https://randomapi.dev/apis/emails"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/emoji":{"get":{"operationId":"get_emoji_root","tags":["text"],"summary":"Random emoji, filtered by group, subgroup and emoji release","description":"Seeded sample of the fully-qualified set. Filters narrow the pool; `seed` fixes the order forever. Authoritative sources: Unicode emoji-test.txt (Emoji 17.0, 2025-08-04, 20:55:31 GMT); Unicode CLDR English emoji annotations (release-48-2).","parameters":[{"name":"group","in":"query","description":"Only emoji in this top-level Unicode group, as a URL-safe slug (smileys-emotion, people-body, animals-nature, food-drink, travel-places, activities, objects, symbols, flags). Records return Unicode's official group name.","required":false,"schema":{"type":"string","enum":["smileys-emotion","people-body","animals-nature","food-drink","travel-places","activities","objects","symbols","flags","any"],"default":"any"},"example":"food-drink","x-randomapi-param-group":"route"},{"name":"subgroup","in":"query","description":"Only emoji in this Unicode subgroup, e.g. face-smiling. 98 values; GET /api/emoji/groups lists them all. An unknown subgroup is a 400, never a silent empty list.","required":false,"schema":{"type":"string","maxLength":40},"example":"animal-mammal","x-randomapi-param-group":"route"},{"name":"version","in":"query","description":"Only emoji introduced in exactly this emoji release.","required":false,"schema":{"type":"string","enum":["0.6","0.7","1.0","2.0","3.0","4.0","5.0","11.0","12.0","12.1","13.0","13.1","14.0","15.0","15.1","16.0","17.0","any"],"default":"any"},"example":"17.0","x-randomapi-param-group":"route"},{"name":"maxVersion","in":"query","description":"Only emoji introduced at or before this emoji release — the practical filter for older client fonts.","required":false,"schema":{"type":"string","enum":["0.6","0.7","1.0","2.0","3.0","4.0","5.0","11.0","12.0","12.1","13.0","13.1","14.0","15.0","15.1","16.0","17.0"]},"example":"12.0","x-randomapi-param-group":"route"},{"name":"skinTones","in":"query","description":"Include the 2030 skin-tone variants. Off by default, which leaves the 1914 distinct emoji; on gives all 3944. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"zwj","in":"query","description":"Include zero-width-joiner sequences (families, professions, flags such as 🏳️‍🌈). Set false for single-emoji sequences only. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":false,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to 20.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":20},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["emoji","name"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"emoji,name"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["keywords"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"keywords"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/EmojiRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/EmojiRootRecord"}}]},"example":{"data":[{"emoji":"👩‍💻","name":"woman technologist","slug":"woman-technologist","codePoints":["U+1F469","U+200D","U+1F4BB"],"group":"People & Body","subgroup":"person-role","unicodeVersion":"4.0","hasSkinTone":false,"isZwjSequence":true,"keywords":["computer","developer","software","technologist","woman"]}],"meta":{"endpoint":"emoji","count":1,"seed":42,"params":{"group":"any","version":"any","skinTones":false,"zwj":true},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"emoji\":\"👩‍💻\",\"name\":\"woman technologist\",\"slug\":\"woman-technologist\",\"codePoints\":[\"U+1F469\",\"U+200D\",\"U+1F4BB\"],\"group\":\"People & Body\",\"subgroup\":\"person-role\",\"unicodeVersion\":\"4.0\",\"hasSkinTone\":false,\"isZwjSequence\":true,\"keywords\":[\"computer\",\"developer\",\"software\",\"technologist\",\"woman\"]}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Emoji","url":"https://randomapi.dev/apis/emoji"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/emoji/lookup":{"get":{"operationId":"get_emoji_lookup","tags":["text"],"summary":"Look up one emoji by sequence, slug or code points","description":"All 3944 fully-qualified Unicode 17.0 emoji with groups, CLDR keywords and code points — plus grapheme-correct emoji counting for any text. Authoritative sources: Unicode emoji-test.txt (Emoji 17.0, 2025-08-04, 20:55:31 GMT); Unicode CLDR English emoji annotations (release-48-2).","parameters":[{"name":"emoji","in":"query","description":"The emoji sequence itself. U+FE0F is ignored when matching, so an unqualified spelling still resolves.","required":false,"schema":{"type":"string","maxLength":64},"example":"👩‍💻","x-randomapi-param-group":"route"},{"name":"slug","in":"query","description":"The URL-safe name, e.g. woman-technologist.","required":false,"schema":{"type":"string","maxLength":80},"example":"woman-technologist","x-randomapi-param-group":"route"},{"name":"codepoints","in":"query","description":"1–16 hexadecimal code points separated by spaces, commas, plus signs or hyphens, with or without U+ prefixes.","required":false,"schema":{"type":"string","maxLength":120},"example":"1F469+200D+1F4BB","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["emoji","name"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"emoji,name"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["keywords"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"keywords"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/EmojiLookupEnvelope"},{"$ref":"#/components/schemas/EmojiLookupRecord"}]},"example":{"data":{"emoji":"👩‍💻","name":"woman technologist","slug":"woman-technologist","codePoints":["U+1F469","U+200D","U+1F4BB"],"group":"People & Body","subgroup":"person-role","unicodeVersion":"4.0","hasSkinTone":false,"isZwjSequence":true,"keywords":["computer","developer","software","technologist","woman"]},"meta":{"endpoint":"emoji","route":"/lookup","params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"No fully-qualified sequence in the pinned Emoji 17.0 snapshot matches the requested emoji, slug or code points.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?slug=not-an-emoji"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Emoji","url":"https://randomapi.dev/apis/emoji"},"x-randomapi-kind":"real","x-randomapi-mode":"lookup"}},"/api/emoji/search":{"get":{"operationId":"get_emoji_search","tags":["text"],"summary":"Search emoji by name and CLDR keyword","description":"All 3944 fully-qualified Unicode 17.0 emoji with groups, CLDR keywords and code points — plus grapheme-correct emoji counting for any text. Authoritative sources: Unicode emoji-test.txt (Emoji 17.0, 2025-08-04, 20:55:31 GMT); Unicode CLDR English emoji annotations (release-48-2).","parameters":[{"name":"q","in":"query","description":"Search text, matched case-insensitively. Substring matching applies to the Unicode name and to the CLDR English keywords; the slug matches only in full (`grinning-face`), because a slug's hyphens are not word boundaries in the name.","required":true,"schema":{"type":"string","minLength":1,"maxLength":64},"example":"happy","x-randomapi-param-group":"route"},{"name":"limit","in":"query","description":"Maximum number of ranked matches to return.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":20},"example":5,"x-randomapi-param-group":"route"},{"name":"skinTones","in":"query","description":"Include the 2030 skin-tone variants. Off by default, which leaves the 1914 distinct emoji; on gives all 3944. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["query","matchCount"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"query,matchCount"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["matches"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"matches"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/EmojiSearchEnvelope"},{"$ref":"#/components/schemas/EmojiSearchRecord"}]},"example":{"data":{"query":"happy","matchCount":27,"returned":5,"matches":[{"emoji":"😀","name":"grinning face","slug":"grinning-face","codePoints":["U+1F600"],"group":"Smileys & Emotion","subgroup":"face-smiling","unicodeVersion":"1.0","hasSkinTone":false,"isZwjSequence":false,"keywords":["face","grin","grinning face"],"matchedOn":"keyword"}]},"meta":{"endpoint":"emoji","route":"/search","params":{"q":"happy","limit":20,"skinTones":false},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Emoji","url":"https://randomapi.dev/apis/emoji"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/emoji/groups":{"get":{"operationId":"get_emoji_groups","tags":["text"],"summary":"Unicode's official emoji group and subgroup tree with counts","description":"All 3944 fully-qualified Unicode 17.0 emoji with groups, CLDR keywords and code points — plus grapheme-correct emoji counting for any text. Authoritative sources: Unicode emoji-test.txt (Emoji 17.0, 2025-08-04, 20:55:31 GMT); Unicode CLDR English emoji annotations (release-48-2).","parameters":[{"name":"skinTones","in":"query","description":"Include the 2030 skin-tone variants. Off by default, which leaves the 1914 distinct emoji; on gives all 3944. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["emojiVersion","emojiCount"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"emojiVersion,emojiCount"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["groups"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"groups"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/EmojiGroupsEnvelope"},{"$ref":"#/components/schemas/EmojiGroupsRecord"}]},"example":{"data":{"emojiVersion":"17.0","emojiCount":1914,"groupCount":9,"subgroupCount":98,"groups":[{"group":"Flags","slug":"flags","count":270,"subgroups":[{"subgroup":"flag","count":8,"sample":"🏁"}]}]},"meta":{"endpoint":"emoji","route":"/groups","params":{"skinTones":false},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Emoji","url":"https://randomapi.dev/apis/emoji"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/emoji/parse":{"get":{"operationId":"get_emoji_parse","tags":["text"],"summary":"Extract and count emoji in text with grapheme-correct segmentation","description":"All 3944 fully-qualified Unicode 17.0 emoji with groups, CLDR keywords and code points — plus grapheme-correct emoji counting for any text. Authoritative sources: Unicode emoji-test.txt (Emoji 17.0, 2025-08-04, 20:55:31 GMT); Unicode CLDR English emoji annotations (release-48-2).","parameters":[{"name":"text","in":"query","description":"Text to scan, up to 1000 UTF-16 code units. Segmented with Intl.Segmenter, so one ZWJ family is one emoji.","required":true,"schema":{"type":"string","minLength":1,"maxLength":1000},"example":"Shipping it 🚀 with the family 👨‍👩‍👧‍👦","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["text","graphemeCount"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"text,graphemeCount"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["emoji"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"emoji"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/EmojiParseEnvelope"},{"$ref":"#/components/schemas/EmojiParseRecord"}]},"example":{"data":{"text":"hi 👋🏽 and 👨‍👩‍👧‍👦","graphemeCount":10,"emojiCount":2,"distinctEmojiCount":2,"textWithoutEmoji":"hi  and ","emoji":[{"emoji":"👋🏽","count":1,"recognized":true,"name":"waving hand: medium skin tone","slug":"waving-hand-medium-skin-tone","codePoints":["U+1F44B","U+1F3FD"],"group":"People & Body","unicodeVersion":"1.0"}]},"meta":{"endpoint":"emoji","route":"/parse","params":{"text":"Shipping it 🚀 with the family 👨‍👩‍👧‍👦"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Emoji","url":"https://randomapi.dev/apis/emoji"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/epoch":{"get":{"operationId":"get_epoch_root","tags":["datetime"],"summary":"Every supported epoch with its origin, unit, resolution and range","description":"The reference table behind `/convert`: what each representation counts, from when, how finely, how far, and which specification defines it. Authoritative source: Primary epoch specifications (POSIX.1-2024 §4.19, RFC 3339, RFC 5905, Microsoft FILETIME & .NET ticks, Excel date systems, Apple NSDate & TN1150, USNO Julian date) — each cited per row at /api/epoch.","parameters":[{"name":"search","in":"query","description":"Case-insensitive substring filter over `id`, `name`, `typicalSource` and `note` — e.g. `excel`, `windows`, `mac`. Searching a lookalike format (`webkit`, `postgres`, `radius`, `date(`) finds the row whose note explains why it is not that format. No match returns an empty list plus a warning, never a fallback row.","required":false,"schema":{"type":"string","minLength":1,"maxLength":60},"example":"excel","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","name"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,name"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["note"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"note"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/EpochRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/EpochRootRecord"}}]},"example":{"data":[{"id":"filetime","name":"Windows FILETIME","origin":"1601-01-01T00:00:00.000000000Z","unit":"100-nanosecond interval","resolution":"100 ns","minValue":"0","maxValue":"18446744073709551615","range":"1601-01-01T00:00:00.000000000Z … +060056-05-28T05:36:10.955161500Z","typicalSource":"Windows GetSystemTimeAsFileTime, NTFS $MFT records, Active Directory lastLogonTimestamp, ETW","specification":"Microsoft FILETIME structure (minwinbase.h)","specificationUrl":"https://learn.microsoft.com/en-us/windows/win32/api/minwinbase/ns-minwinbase-filetime","note":"An unsigned 64-bit count of 100-nanosecond intervals since 1601-01-01 (UTC). The Unix epoch is exactly 116444736000000000, the constant Microsoft's own time_t conversion sample adds."}],"meta":{"endpoint":"epoch","count":1,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"filetime\",\"name\":\"Windows FILETIME\",\"origin\":\"1601-01-01T00:00:00.000000000Z\",\"unit\":\"100-nanosecond interval\",\"resolution\":\"100 ns\",\"minValue\":\"0\",\"maxValue\":\"18446744073709551615\",\"range\":\"1601-01-01T00:00:00.000000000Z … +060056-05-28T05:36:10.955161500Z\",\"typicalSource\":\"Windows GetSystemTimeAsFileTime, NTFS $MFT records, Active Directory lastLogonTimestamp, ETW\",\"specification\":\"Microsoft FILETIME structure (minwinbase.h)\",\"specificationUrl\":\"https://learn.microsoft.com/en-us/windows/win32/api/minwinbase/ns-minwinbase-filetime\",\"note\":\"An unsigned 64-bit count of 100-nanosecond intervals since 1601-01-01 (UTC). The Unix epoch is exactly 116444736000000000, the constant Microsoft's own time_t conversion sample adds.\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Timestamp & Epoch Converter API","url":"https://randomapi.dev/apis/epoch"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/epoch/convert":{"get":{"operationId":"get_epoch_convert","tags":["datetime"],"summary":"Convert one declared timestamp into every supported representation","description":"Exact BigInt conversion between all thirteen representations plus a zoned wall-clock rendering. `from` is mandatory — nothing is auto-detected. Authoritative source: Primary epoch specifications (POSIX.1-2024 §4.19, RFC 3339, RFC 5905, Microsoft FILETIME & .NET ticks, Excel date systems, Apple NSDate & TN1150, USNO Julian date) — each cited per row at /api/epoch.","parameters":[{"name":"value","in":"query","description":"The timestamp, interpreted strictly according to `from`. Numeric representations take a plain decimal (no exponent or separators, up to 25 integer and 15 fractional digits); `from=iso` takes YYYY-MM-DD or an RFC 3339 date-time with Z or an explicit offset, whose fractional seconds are capped at 9 digits (1 ns).","required":true,"schema":{"type":"string","minLength":1,"maxLength":48},"example":"638000000000000000","x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Which representation `value` is written in. Required on purpose: the same digits can be valid seconds and valid milliseconds, so this API never guesses.","required":true,"schema":{"type":"string","enum":["unix","unixMs","unixUs","unixNs","iso","filetime","ticks","excel","excel1904","cocoa","hfs","ntp","julianDay"]},"example":"ticks","x-randomapi-param-group":"route"},{"name":"tz","in":"query","description":"IANA timezone for the `local` rendering, case-insensitive (e.g. Europe/Copenhagen). Every numeric conversion stays UTC-based and is unaffected.","required":false,"schema":{"type":"string","default":"UTC"},"example":"Europe/Copenhagen","x-randomapi-param-group":"route"},{"name":"precision","in":"query","description":"Fractional-second digits in the `iso` and `local.dateTime` outputs. Truncated, never rounded, so the rendered value never jumps to the next second.","required":false,"schema":{"type":"integer","minimum":0,"maximum":9,"default":3},"example":9,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["from","input"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"from,input"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["notes"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"notes"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/EpochConvertEnvelope"},{"$ref":"#/components/schemas/EpochConvertRecord"}]},"example":{"data":{"from":"ticks","input":"621355968000000000","renderable":true,"anomaly":null,"iso":"1970-01-01T00:00:00.000Z","unix":"0","unixMs":"0","unixUs":"0","unixNs":"0","filetime":"116444736000000000","ticks":"621355968000000000","excel":"25569","excel1904":"24107","cocoa":"-978307200","hfs":"2082844800","ntp":"2208988800","ntp64":"83aa7e80.00000000","julianDay":"2440587.5","local":{"zone":"UTC","dateTime":"1970-01-01T00:00:00.000","offset":"+00:00","offsetSeconds":0,"weekday":"Thursday","isDst":false},"notes":[]},"meta":{"endpoint":"epoch","route":"/convert","params":{"value":"638000000000000000","from":"ticks","tz":"UTC","precision":3},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Timestamp & Epoch Converter API","url":"https://randomapi.dev/apis/epoch"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/exit-codes":{"get":{"operationId":"get_exit_codes_root","tags":["developer"],"summary":"Browse exit statuses, signals, errno values and sysexits codes","description":"Returns every matching row — all 162 with no filter — so nothing is silently hidden; 'count' trims the list if you want less. Filters combine with AND and genuinely filter: zero matches return an empty list plus a warning, never a substituted row. Authoritative source: POSIX.1-2024 (IEEE Std 1003.1-2024), Linux uapi headers (v6.12), glibc 2.40 and BSD sysexits.h.","parameters":[{"name":"family","in":"query","description":"Restrict to one table: signal (POSIX signals with Linux/x86-64 numbers), errno (POSIX <errno.h> with Linux/glibc numbers), shell (process exit statuses) or sysexits (BSD sysexits.h).","required":false,"schema":{"type":"string","enum":["signal","errno","shell","sysexits"]},"example":"signal","x-randomapi-param-group":"route"},{"name":"search","in":"query","description":"Case-insensitive contains-filter over the name and the meaning (not the causes).","required":false,"schema":{"type":"string","minLength":1,"maxLength":64},"example":"permission","x-randomapi-param-group":"route"},{"name":"code","in":"query","description":"Only entries with this numeric value. The same number can appear in several families — that is the point.","required":false,"schema":{"type":"integer","minimum":0,"maximum":255},"example":137,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["code","name"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"code,name"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["caveat"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"caveat"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ExitCodesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/ExitCodesRootRecord"}}]},"example":{"data":[{"code":137,"name":"terminated-by-SIGKILL","family":"shell","meaning":"Terminated by SIGKILL (signal 9); the shell reports 128 + 9.","standard":"convention","defaultAction":"term","derivedFrom":"SIGKILL","commonCauses":["The kernel out-of-memory killer terminated the process","Someone ran kill -9"],"reference":"https://manpages.debian.org/bookworm/bash/bash.1.en.html","caveat":"31 on Linux/x86-64, ARM and PARISC. SIGSYS is 12 on Linux/Alpha, SPARC and MIPS and on macOS and the BSDs."}],"meta":{"endpoint":"exit-codes","count":1,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"code\":137,\"name\":\"terminated-by-SIGKILL\",\"family\":\"shell\",\"meaning\":\"Terminated by SIGKILL (signal 9); the shell reports 128 + 9.\",\"standard\":\"convention\",\"defaultAction\":\"term\",\"derivedFrom\":\"SIGKILL\",\"commonCauses\":[\"The kernel out-of-memory killer terminated the process\",\"Someone ran kill -9\"],\"reference\":\"https://manpages.debian.org/bookworm/bash/bash.1.en.html\",\"caveat\":\"31 on Linux/x86-64, ARM and PARISC. SIGSYS is 12 on Linux/Alpha, SPARC and MIPS and on macOS and the BSDs.\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Exit Code, Signal & Errno Lookup API","url":"https://randomapi.dev/apis/exit-codes"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/exit-codes/lookup":{"get":{"operationId":"get_exit_codes_lookup","tags":["developer"],"summary":"Look up one code or symbolic name, ambiguity included","description":"Provide exactly one of 'code' or 'name'. A shared number such as 2 returns every matching row with ambiguous: true; 'family' narrows it. Unknown values return 404 with the closest documented entry. Authoritative source: POSIX.1-2024 (IEEE Std 1003.1-2024), Linux uapi headers (v6.12), glibc 2.40 and BSD sysexits.h.","parameters":[{"name":"code","in":"query","description":"Numeric value to look up. Mutually exclusive with 'name'.","required":false,"schema":{"type":"integer","minimum":0,"maximum":255},"example":137,"x-randomapi-param-group":"route"},{"name":"name","in":"query","description":"Symbolic name to look up, matched case-insensitively (SIGKILL, enoent, EX_USAGE, command-not-found). Mutually exclusive with 'code'.","required":false,"schema":{"type":"string","minLength":1,"maxLength":64},"example":"SIGKILL","x-randomapi-param-group":"route"},{"name":"family","in":"query","description":"Disambiguates a value several tables share: signal, errno, shell or sysexits. Optional — omit it to see every match.","required":false,"schema":{"type":"string","enum":["signal","errno","shell","sysexits"]},"example":"signal","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["query","lookupBy"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"query,lookupBy"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["matches"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"matches"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ExitCodesLookupEnvelope"},{"$ref":"#/components/schemas/ExitCodesLookupRecord"}]},"example":{"data":{"query":"137","lookupBy":"code","family":"signal","matchCount":1,"ambiguous":false,"matches":[{"code":137,"name":"terminated-by-SIGKILL","family":"shell","meaning":"Terminated by SIGKILL (signal 9); the shell reports 128 + 9.","standard":"convention","defaultAction":null,"derivedFrom":"SIGKILL"}]},"meta":{"endpoint":"exit-codes","route":"/lookup","params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"No bundled signal, errno, shell-status or sysexits row matches the requested key and optional family.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?code=200"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Exit Code, Signal & Errno Lookup API","url":"https://randomapi.dev/apis/exit-codes"},"x-randomapi-kind":"real","x-randomapi-mode":"lookup"}},"/api/feature-flags":{"get":{"operationId":"get_feature_flags_root","tags":["developer"],"summary":"Generate lifecycle-coherent feature flag configurations","description":"Generate coherent mock feature-flag configurations and rollout evaluations with lifecycle states, weighted variants and safe contexts.","parameters":[{"name":"environment","in":"query","description":"Constrain every flag to this environment. Omit for a mix.","required":false,"schema":{"type":"string","enum":["development","staging","production"]},"example":"staging","x-randomapi-param-group":"route"},{"name":"state","in":"query","description":"Constrain lifecycle state. Inactive and archived flags are disabled.","required":false,"schema":{"type":"string","enum":["active","inactive","archived"]},"example":"active","x-randomapi-param-group":"route"},{"name":"strategy","in":"query","description":"Constrain every configuration to this strategy.","required":false,"schema":{"type":"string","enum":["boolean","percentage","targeted","multivariate"]},"example":"percentage","x-randomapi-param-group":"route"},{"name":"asOf","in":"query","description":"Latest lifecycle instant. Defaults to the current UTC day's end and is echoed for replay. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-10T23:59:59.999Z","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["key","name"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"key,name"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["archivedAt"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"archivedAt"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/FeatureFlagsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/FeatureFlagsRootRecord"}}]},"example":{"data":[{"key":"checkout-redesign-0-a81c42","name":"Checkout Redesign","description":"Controls the checkout redesign fixture.","environment":"staging","state":"active","enabled":true,"strategy":"percentage","rolloutPercentage":35,"defaultVariant":"off","variants":[{"key":"on","weight":35},{"key":"off","weight":65}],"rules":[{"id":"percentage-rollout","kind":"percentage","percentage":35,"variant":"on"}],"version":7,"createdAt":"2026-03-10T09:12:00.000Z","updatedAt":"2026-07-01T14:22:00.000Z","archivedAt":null}],"meta":{"endpoint":"feature-flags","count":1,"seed":42,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"key\":\"checkout-redesign-0-a81c42\",\"name\":\"Checkout Redesign\",\"description\":\"Controls the checkout redesign fixture.\",\"environment\":\"staging\",\"state\":\"active\",\"enabled\":true,\"strategy\":\"percentage\",\"rolloutPercentage\":35,\"defaultVariant\":\"off\",\"variants\":[{\"key\":\"on\",\"weight\":35},{\"key\":\"off\",\"weight\":65}],\"rules\":[{\"id\":\"percentage-rollout\",\"kind\":\"percentage\",\"percentage\":35,\"variant\":\"on\"}],\"version\":7,\"createdAt\":\"2026-03-10T09:12:00.000Z\",\"updatedAt\":\"2026-07-01T14:22:00.000Z\",\"archivedAt\":null}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Feature flag fixtures","url":"https://randomapi.dev/apis/feature-flags"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/feature-flags/evaluations":{"get":{"operationId":"get_feature_flags_evaluations","tags":["developer"],"summary":"Generate deterministic percentage-rollout evaluations","description":"Generate coherent mock feature-flag configurations and rollout evaluations with lifecycle states, weighted variants and safe contexts.","parameters":[{"name":"flag","in":"query","description":"Safe flag key echoed in each evaluation.","required":false,"schema":{"type":"string","minLength":1,"maxLength":64,"default":"checkout-redesign"},"example":"compact-navigation","x-randomapi-param-group":"route"},{"name":"subjectPrefix","in":"query","description":"Safe synthetic subject prefix; no email, name or external identifier.","required":false,"schema":{"type":"string","minLength":1,"maxLength":64,"default":"anon"},"example":"test-user","x-randomapi-param-group":"route"},{"name":"environment","in":"query","description":"Evaluation environment.","required":false,"schema":{"type":"string","enum":["development","staging","production"],"default":"development"},"example":"production","x-randomapi-param-group":"route"},{"name":"rolloutPercentage","in":"query","description":"Subject is on exactly when active and bucket is below this value.","required":false,"schema":{"type":"integer","minimum":0,"maximum":100,"default":50},"example":25,"x-randomapi-param-group":"route"},{"name":"active","in":"query","description":"When false, every evaluation is off regardless of bucket or rollout. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":false,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"asOf","in":"query","description":"Latest evaluation instant. Defaults to the current UTC day's end and is echoed for replay. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-10T23:59:59.999Z","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["evaluationId","flagKey"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"evaluationId,flagKey"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["evaluatedAt"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"evaluatedAt"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/FeatureFlagsEvaluationsEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/FeatureFlagsEvaluationsRecord"}}]},"example":{"data":[{"evaluationId":"eval_0_31f0a82d","flagKey":"checkout-redesign","subjectKey":"anon-0-a81c","environment":"development","context":{"country":"DK","plan":"pro"},"bucket":17,"rolloutPercentage":50,"enabled":true,"variant":"on","reason":"rollout-match","matchedRule":"percentage-rollout","evaluatedAt":"2026-07-10T00:00:00.412Z"}],"meta":{"endpoint":"feature-flags","route":"/evaluations","count":1,"seed":42,"params":{"flag":"checkout-redesign","subjectPrefix":"anon","environment":"development","rolloutPercentage":50,"active":true},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"evaluationId\":\"eval_0_31f0a82d\",\"flagKey\":\"checkout-redesign\",\"subjectKey\":\"anon-0-a81c\",\"environment\":\"development\",\"context\":{\"country\":\"DK\",\"plan\":\"pro\"},\"bucket\":17,\"rolloutPercentage\":50,\"enabled\":true,\"variant\":\"on\",\"reason\":\"rollout-match\",\"matchedRule\":\"percentage-rollout\",\"evaluatedAt\":\"2026-07-10T00:00:00.412Z\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Feature flag fixtures","url":"https://randomapi.dev/apis/feature-flags"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/file-signatures":{"get":{"operationId":"get_file_signatures_root","tags":["developer"],"summary":"List file signatures (byte pattern, offset, extensions, media type and the spec that defines it)","description":"Filters are ANDed and rows stay in table order (category, then formatId, then signatureId). With no filters this returns the whole table. No match is an empty list with a warning, never a substituted row. Authoritative sources: The published specification of each format, cited per signature row (see the `specification` and `specificationUrl` fields); IANA Media Types registry — the media type carried on each row; MP4 Registration Authority — registered ISO base media file format brands; Curated for this API: the ranking rule, the container/brand model, the per-row caveats and the byte-count table.","parameters":[{"name":"category","in":"query","description":"Only signatures whose format is in this category.","required":false,"schema":{"type":"string","enum":["image","audio","video","archive","compression","document","executable","font","database","disk-image","data","any"],"default":"any"},"example":"archive","x-randomapi-param-group":"route"},{"name":"search","in":"query","description":"Case- and diacritic-insensitive substring match against the format name, the formatId, any extension and the media type.","required":false,"schema":{"type":"string","minLength":1,"maxLength":64},"example":"zip","x-randomapi-param-group":"route"},{"name":"extension","in":"query","description":"Only signatures whose format lists this conventional extension. A leading dot is accepted and stripped; matching is case-insensitive.","required":false,"schema":{"type":"string","minLength":1,"maxLength":16},"example":"webp","x-randomapi-param-group":"route"},{"name":"maxOffsetBytes","in":"query","description":"Only signatures decidable within the first N bytes of the file — that is, rows whose bytesNeeded ≤ N.","required":false,"schema":{"type":"integer","minimum":1,"maximum":65536},"example":16,"x-randomapi-param-group":"route"},{"name":"containers","in":"query","description":"'only' keeps rows that refine another format's container (EPUB inside ZIP, AVIF inside ISO BMFF); 'exclude' keeps standalone signatures only.","required":false,"schema":{"type":"string","enum":["all","only","exclude"],"default":"all"},"example":"only","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["signatureId","formatId"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"signatureId,formatId"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["sourceKind"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"sourceKind"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/FileSignaturesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/FileSignaturesRootRecord"}}]},"example":{"data":[{"signatureId":"isobmff-ftyp-avif","formatId":"avif","formatName":"AV1 Image File Format","category":"image","offset":4,"pattern":"66 74 79 70 61 76 69 66","bytesNeeded":12,"literalBytes":8,"extensions":["avif","avifs"],"mimeType":"image/avif","containerFormatId":"isobmff","trailer":null,"note":"Brand \"avif\".","specification":"MP4 Registration Authority, registered file-type brands (verified 2026-07-30); box structure per ISO/IEC 14496-12, \"File Type Box\"","specificationUrl":"https://mp4ra.org/registered-types/brands","sourceKind":"registry"}],"meta":{"endpoint":"file-signatures","count":1,"params":{"category":"any","containers":"all"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"signatureId\":\"isobmff-ftyp-avif\",\"formatId\":\"avif\",\"formatName\":\"AV1 Image File Format\",\"category\":\"image\",\"offset\":4,\"pattern\":\"66 74 79 70 61 76 69 66\",\"bytesNeeded\":12,\"literalBytes\":8,\"extensions\":[\"avif\",\"avifs\"],\"mimeType\":\"image/avif\",\"containerFormatId\":\"isobmff\",\"trailer\":null,\"note\":\"Brand \\\"avif\\\".\",\"specification\":\"MP4 Registration Authority, registered file-type brands (verified 2026-07-30); box structure per ISO/IEC 14496-12, \\\"File Type Box\\\"\",\"specificationUrl\":\"https://mp4ra.org/registered-types/brands\",\"sourceKind\":\"registry\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for File signatures (magic bytes)","url":"https://randomapi.dev/apis/file-signatures"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/file-signatures/detect":{"get":{"operationId":"get_file_signatures_detect","tags":["developer"],"summary":"Identify a file from the first bytes you read, and check a claimed filename and Content-Type against them","description":"Returns every signature the supplied prefix satisfies, ranked by literal evidence. Nothing is fetched and nothing is stored. A malformed `claimedType` is deliberately NOT a 400 — a garbage Content-Type is the finding you came for, so it is reported inside `mismatch` and the request still succeeds. `mismatch` says 'disagrees' only when the bytes genuinely refute the claim; a claim this table cannot decide (DOCX vs a plain ZIP, WebM vs Matroska, or a signature whose deciding bytes lie past your prefix) comes back as `null` with a reason, never as an accusation. Authoritative sources: The published specification of each format, cited per signature row (see the `specification` and `specificationUrl` fields); IANA Media Types registry — the media type carried on each row; MP4 Registration Authority — registered ISO base media file format brands; Curated for this API: the ranking rule, the container/brand model, the per-row caveats and the byte-count table.","parameters":[{"name":"bytes","in":"query","description":"The first bytes of the file, from offset 0. Hex or base64 per `encoding`. Hex accepts upper/lower case, an optional leading '0x', and space, ':' or '-' separators (so xxd/hexdump output pastes straight in); base64 accepts the RFC 4648 base64 or base64url alphabet, padded or unpadded, with whitespace ignored. 8,192 characters is 4,096 bytes of hex or about 6,144 bytes of base64.","required":true,"schema":{"type":"string","minLength":1,"maxLength":8192},"example":"89504e470d0a1a0a","x-randomapi-param-group":"route"},{"name":"encoding","in":"query","description":"How `bytes` is encoded.","required":false,"schema":{"type":"string","enum":["hex","base64"],"default":"hex"},"example":"base64","x-randomapi-param-group":"route"},{"name":"claimedName","in":"query","description":"The filename the client claimed (an upload's `filename`). Only its basename and extension are used; the longest suffix this table registers wins, so 'backup.tar.gz' resolves to 'gz'. Never fetched, never written anywhere.","required":false,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"avatar.png","x-randomapi-param-group":"route"},{"name":"claimedType","in":"query","description":"The Content-Type the client declared. Parameters (';charset=…') are ignored for comparison. A malformed value is reported in `mismatch`, not rejected with a 400. Percent-encode a structured suffix's '+' as %2B (`application%2Fepub%2Bzip`): a literal '+' in a query string means a space, and a space is never legal in a media type — if that happens the endpoint recovers the '+' and says so in `mismatch.reasons`.","required":false,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"image/png","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["bytesProvided","encoding"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"bytesProvided,encoding"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["mismatch"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"mismatch"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/FileSignaturesDetectEnvelope"},{"$ref":"#/components/schemas/FileSignaturesDetectRecord"}]},"example":{"data":{"bytesProvided":8,"encoding":"hex","hexPreview":"89 50 4E 47 0D 0A 1A 0A","matches":[{"signatureId":"png-signature","formatId":"png","formatName":"Portable Network Graphics","category":"image","offset":0,"pattern":"89 50 4E 47 0D 0A 1A 0A","matchedBytes":"89 50 4E 47 0D 0A 1A 0A","bytesNeeded":8,"literalBytes":8,"mimeType":"image/png","extensions":["png"],"containerFormatId":null,"note":null,"specification":"W3C PNG Specification (Third Edition), §5.2 \"PNG signature\"","specificationUrl":"https://www.w3.org/TR/png-3/"}],"matchCount":1,"best":{"signatureId":"png-signature","formatId":"png","formatName":"Portable Network Graphics","category":"image","offset":0,"pattern":"89 50 4E 47 0D 0A 1A 0A","matchedBytes":"89 50 4E 47 0D 0A 1A 0A","bytesNeeded":8,"literalBytes":8,"mimeType":"image/png","extensions":["png"],"containerFormatId":null,"note":null,"specification":"W3C PNG Specification (Third Edition), §5.2 \"PNG signature\"","specificationUrl":"https://www.w3.org/TR/png-3/"},"ambiguous":false,"notEvaluated":24,"bytesForWholeTable":32774,"claimedName":"avatar.png","claimedType":"image/png","mismatch":{"verdict":"disagrees","claimedExtension":"jpg","extensionAgrees":false,"typeAgrees":false,"reasons":["The bytes match Portable Network Graphics; the filename claims '.jpg', which this table registers only for JPEG (JFIF/Exif-agnostic baseline marker sequence), JPEG with an Exif APP1 segment — and every signature those formats define is contradicted by the bytes you supplied.","The declared Content-Type 'image/jpeg' belongs to JPEG (JFIF/Exif-agnostic baseline marker sequence), JPEG with a JFIF APP0 segment, JPEG with an Exif APP1 segment in this table, and every signature those formats define is contradicted by the bytes you supplied (which match image/png)."]}},"meta":{"endpoint":"file-signatures","route":"/detect","params":{"bytes":"89504e470d0a1a0a","encoding":"hex"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for File signatures (magic bytes)","url":"https://randomapi.dev/apis/file-signatures"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/file-signatures/lookup":{"get":{"operationId":"get_file_signatures_lookup","tags":["developer"],"summary":"Look up one format's signatures by extension, media type or format id","description":"Provide exactly one of `extension`, `mimeType` or `formatId`. A key claimed by several formats resolves to the least refined of them — a standalone format before one that only exists inside another, so `.jpg` resolves to `jpeg` rather than to the Exif refinement of it — then table order, and a warning always names the other claimants. An unknown key is an honest 404 that says the format is not covered by this table — never a substituted record. Authoritative sources: The published specification of each format, cited per signature row (see the `specification` and `specificationUrl` fields); IANA Media Types registry — the media type carried on each row; MP4 Registration Authority — registered ISO base media file format brands; Curated for this API: the ranking rule, the container/brand model, the per-row caveats and the byte-count table.","parameters":[{"name":"extension","in":"query","description":"Extension to look up (case-insensitive; a leading dot is fine: 'webp' or '.webp').","required":false,"schema":{"type":"string","minLength":1,"maxLength":16},"example":"webp","x-randomapi-param-group":"route"},{"name":"mimeType","in":"query","description":"Media type to look up (case-insensitive; parameters are stripped).","required":false,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"application/pdf","x-randomapi-param-group":"route"},{"name":"formatId","in":"query","description":"This table's own format id, as returned by the list route (case-insensitive).","required":false,"schema":{"type":"string","minLength":1,"maxLength":48},"example":"sqlite3","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["formatId","formatName"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"formatId,formatName"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["note"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"note"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/FileSignaturesLookupEnvelope"},{"$ref":"#/components/schemas/FileSignaturesLookupRecord"}]},"example":{"data":{"formatId":"webp","formatName":"WebP","category":"image","extensions":["webp"],"mimeType":"image/webp","containerFormatId":"riff","signatures":[{"signatureId":"webp-riff-form","offset":0,"pattern":"52 49 46 46 ?? ?? ?? ?? 57 45 42 50","bytesNeeded":12,"literalBytes":8,"trailer":null,"note":"The four wildcard bytes are the RIFF file size.","specification":"WebP Container Specification, \"WebP File Header\" — \"RIFF\", file size, then \"WEBP\"","specificationUrl":"https://developers.google.com/speed/webp/docs/riff_container","sourceKind":"vendor-specification"}],"signatureCount":1,"note":null},"meta":{"endpoint":"file-signatures","route":"/lookup","params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"No format covered by the signature table has the requested extension, media type or format id.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?extension=wepb"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for File signatures (magic bytes)","url":"https://randomapi.dev/apis/file-signatures"},"x-randomapi-kind":"real","x-randomapi-mode":"lookup"}},"/api/file-signatures/prefix-length":{"get":{"operationId":"get_file_signatures_prefix_length","tags":["developer"],"summary":"How many leading bytes you must read to decide, per category","description":"Answers the question every upload tutorial skips: 'read the first 16 bytes' decides some of this table and not the rest, and this route says exactly which. All figures are counted from the shipped table, never hand-written. Authoritative sources: The published specification of each format, cited per signature row (see the `specification` and `specificationUrl` fields); IANA Media Types registry — the media type carried on each row; MP4 Registration Authority — registered ISO base media file format brands; Curated for this API: the ranking rule, the container/brand model, the per-row caveats and the byte-count table.","parameters":[{"name":"bytes","in":"query","description":"How many leading bytes your validator reads. The default is 16 because 'read the first 16 bytes' is the convention every upload tutorial repeats — this route says what that actually buys you.","required":false,"schema":{"type":"integer","minimum":1,"maximum":65536,"default":16},"example":12,"x-randomapi-param-group":"route"},{"name":"category","in":"query","description":"Restrict the answer to one category.","required":false,"schema":{"type":"string","enum":["image","audio","video","archive","compression","document","executable","font","database","disk-image","data","any"],"default":"any"},"example":"image","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["category","bytesRequested"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"category,bytesRequested"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["beyondRequest"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"beyondRequest"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/FileSignaturesPrefixLengthEnvelope"},{"$ref":"#/components/schemas/FileSignaturesPrefixLengthRecord"}]},"example":{"data":{"category":"any","bytesRequested":16,"signatureCount":116,"formatCount":99,"signaturesDecidable":108,"formatsDecidable":91,"maxBytesNeeded":32774,"thresholds":[{"bytes":4,"signaturesDecidable":62,"formatsDecidable":55}],"beyondRequest":[{"signatureId":"tar-ustar","formatName":"POSIX ustar archive","bytesNeeded":265}]},"meta":{"endpoint":"file-signatures","route":"/prefix-length","params":{"bytes":16,"category":"any"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for File signatures (magic bytes)","url":"https://randomapi.dev/apis/file-signatures"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/file-uploads":{"get":{"operationId":"get_file_uploads_root","tags":["developer"],"summary":"Generate coherent file upload session fixtures","description":"Generate coherent mock file-upload sessions and multipart records with exact byte progress, lifecycle states, checksums and safe example URLs.","parameters":[{"name":"contentType","in":"query","description":"Constrain content type and filename extension. Omit for a mix.","required":false,"schema":{"type":"string","enum":["image/png","application/pdf","text/csv","application/zip"]},"example":"application/pdf","x-randomapi-param-group":"route"},{"name":"mode","in":"query","description":"Constrain single or multipart mode. Explicit multipart requires a total of at least 2 KiB.","required":false,"schema":{"type":"string","enum":["single","multipart"]},"example":"multipart","x-randomapi-param-group":"route"},{"name":"status","in":"query","description":"Constrain lifecycle state and its coherent progress/error fields.","required":false,"schema":{"type":"string","enum":["initiated","uploading","completed","failed","expired"]},"example":"uploading","x-randomapi-param-group":"route"},{"name":"minSizeBytes","in":"query","description":"Inclusive minimum fictional file size in bytes.","required":false,"schema":{"type":"integer","minimum":1,"maximum":104857600,"default":1024},"example":1048576,"x-randomapi-param-group":"route"},{"name":"maxSizeBytes","in":"query","description":"Inclusive maximum size; must be at least minSizeBytes and at least 2 KiB (2048 bytes) for explicit multipart mode.","required":false,"schema":{"type":"integer","minimum":1,"maximum":104857600,"default":52428800},"example":20971520,"x-randomapi-param-group":"route"},{"name":"asOf","in":"query","description":"Latest lifecycle instant. Defaults to the current UTC day's end and is echoed for replay. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-10T23:59:59.999Z","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["uploadId","fileName"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"uploadId,fileName"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["error"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"error"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/FileUploadsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/FileUploadsRootRecord"}}]},"example":{"data":[{"uploadId":"upl_0_a81c42f0","fileName":"document-1.pdf","contentType":"application/pdf","sizeBytes":10485760,"mode":"multipart","status":"uploading","createdAt":"2026-07-10T08:00:00.000Z","expiresAt":"2026-07-17T08:00:00.000Z","completedAt":null,"uploadedBytes":5242880,"progressPercentage":50,"partSizeBytes":5242880,"partCount":2,"completedParts":1,"checksum":null,"downloadUrl":null,"error":null}],"meta":{"endpoint":"file-uploads","count":1,"seed":42,"params":{"minSizeBytes":1024,"maxSizeBytes":52428800},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"uploadId\":\"upl_0_a81c42f0\",\"fileName\":\"document-1.pdf\",\"contentType\":\"application/pdf\",\"sizeBytes\":10485760,\"mode\":\"multipart\",\"status\":\"uploading\",\"createdAt\":\"2026-07-10T08:00:00.000Z\",\"expiresAt\":\"2026-07-17T08:00:00.000Z\",\"completedAt\":null,\"uploadedBytes\":5242880,\"progressPercentage\":50,\"partSizeBytes\":5242880,\"partCount\":2,\"completedParts\":1,\"checksum\":null,\"downloadUrl\":null,\"error\":null}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for File upload fixtures","url":"https://randomapi.dev/apis/file-uploads"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/file-uploads/parts":{"get":{"operationId":"get_file_uploads_parts","tags":["developer"],"summary":"Generate sequential multipart upload part fixtures","description":"Generate coherent mock file-upload sessions and multipart records with exact byte progress, lifecycle states, checksums and safe example URLs.","parameters":[{"name":"uploadId","in":"query","description":"Safe upload id echoed in every part.","required":false,"schema":{"type":"string","minLength":1,"maxLength":64,"default":"upl_demo"},"example":"upl_checkout_assets","x-randomapi-param-group":"route"},{"name":"partSizeBytes","in":"query","description":"Exact size and offset step for each generated part.","required":false,"schema":{"type":"integer","minimum":1024,"maximum":10485760,"default":5242880},"example":1048576,"x-randomapi-param-group":"route"},{"name":"status","in":"query","description":"Constrain part lifecycle status and coherent fields.","required":false,"schema":{"type":"string","enum":["pending","uploading","completed","failed"]},"example":"completed","x-randomapi-param-group":"route"},{"name":"asOf","in":"query","description":"Latest part update instant. Defaults to the current UTC day's end and is echoed for replay. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-10T23:59:59.999Z","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["partId","uploadId"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"partId,uploadId"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["updatedAt"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"updatedAt"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/FileUploadsPartsEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/FileUploadsPartsRecord"}}]},"example":{"data":[{"partId":"part_1_a81c42f0","uploadId":"upl_demo","partNumber":1,"offsetBytes":0,"sizeBytes":5242880,"status":"completed","uploadedBytes":5242880,"progressPercentage":100,"etag":"\"31f0a82d9c41\"","checksum":"sha256:66f327f276cc47a8b2caa2cf7131537a","error":null,"updatedAt":"2026-07-10T00:00:01.412Z"}],"meta":{"endpoint":"file-uploads","route":"/parts","count":1,"seed":42,"params":{"uploadId":"upl_demo","partSizeBytes":5242880},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"partId\":\"part_1_a81c42f0\",\"uploadId\":\"upl_demo\",\"partNumber\":1,\"offsetBytes\":0,\"sizeBytes\":5242880,\"status\":\"completed\",\"uploadedBytes\":5242880,\"progressPercentage\":100,\"etag\":\"\\\"31f0a82d9c41\\\"\",\"checksum\":\"sha256:66f327f276cc47a8b2caa2cf7131537a\",\"error\":null,\"updatedAt\":\"2026-07-10T00:00:01.412Z\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for File upload fixtures","url":"https://randomapi.dev/apis/file-uploads"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/files":{"get":{"operationId":"get_files_root","tags":["design"],"summary":"Generate fake file metadata records","description":"Fake file metadata — kebab-case names, the correct MIME type for every extension, plausible per-kind sizes, unix paths and seeded SHA-256-style checksums.","parameters":[{"name":"kind","in":"query","description":"Only generate files of this kind. Each kind has its own extension pool and realistic size range; 'any' mixes all six.","required":false,"schema":{"type":"string","enum":["image","document","video","audio","archive","code","any"],"default":"any"},"example":"image","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["fileName","extension"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"fileName,extension"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["path"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"path"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/FilesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/FilesRootRecord"}}]},"example":{"data":[{"fileName":"polished-invoice.pdf","extension":"pdf","mimeType":"application/pdf","sizeBytes":482133,"sizeHuman":"482.1 kB","createdAt":"2025-09-18T07:42:13.519Z","sha256":"9b74c9897bac770ffc029102a200c5de3f78bd2d8c9464b1c1e8d6ab2f1b9c3a","path":"/home/maria/documents/polished-invoice.pdf"}],"meta":{"endpoint":"files","count":1,"seed":42,"params":{"kind":"any"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"fileName\":\"polished-invoice.pdf\",\"extension\":\"pdf\",\"mimeType\":\"application/pdf\",\"sizeBytes\":482133,\"sizeHuman\":\"482.1 kB\",\"createdAt\":\"2025-09-18T07:42:13.519Z\",\"sha256\":\"9b74c9897bac770ffc029102a200c5de3f78bd2d8c9464b1c1e8d6ab2f1b9c3a\",\"path\":\"/home/maria/documents/polished-invoice.pdf\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Files","url":"https://randomapi.dev/apis/files"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/flights":{"get":{"operationId":"get_flights_root","tags":["geo"],"summary":"Generate coherent fictional flight records","description":"Coherent fake flight fixtures between real hub airports, with working route, status, cabin and departure-window filters — never live operations. Authoritative source: OurAirports airport snapshot plus pinned coordinate-derived IANA zones (verified 2026-07-29).","parameters":[{"name":"origin","in":"query","description":"Pin the origin to one of the hub three-letter IATA codes, case-insensitively. Codes outside the hub network return 400 listing them.","required":false,"schema":{"type":"string","minLength":3,"maxLength":3},"example":"CPH","x-randomapi-param-group":"route"},{"name":"destination","in":"query","description":"Pin the destination to a hub IATA code. It must differ from origin when both are supplied.","required":false,"schema":{"type":"string","minLength":3,"maxLength":3},"example":"JFK","x-randomapi-param-group":"route"},{"name":"status","in":"query","description":"Pin every fictional snapshot to this status. Omit for a weighted mix.","required":false,"schema":{"type":"string","enum":["scheduled","boarding","departed","arrived","cancelled"]},"example":"boarding","x-randomapi-param-group":"route"},{"name":"asOf","in":"query","description":"Snapshot instant used to evaluate status. Defaults to the end of the current UTC day for day-stable seeded output; pass it explicitly for an intraday snapshot. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-08-14T08:45:00Z","x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Earliest synthetic scheduled departure. Defaults to the current UTC-day boundary (or 30 days before an explicit to). Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-08-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Latest synthetic scheduled departure. Defaults to 30 days after the resolved from value. Must be ≥ from. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-08-31","x-randomapi-param-group":"route"},{"name":"cabin","in":"query","description":"Pin every record to this cabin. Omit for a weighted mix dominated by economy.","required":false,"schema":{"type":"string","enum":["economy","premiumEconomy","business","first"]},"example":"business","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","flightNumber"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,flightNumber"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["terminal"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"terminal"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/FlightsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/FlightsRootRecord"}}]},"example":{"data":[{"id":"flt_4e19c0a27b5d8f31_00","flightNumber":"NX1-1000","airline":{"name":"Northstar Air (fictional)","code":"NX1"},"origin":{"iata":"CPH","name":"Copenhagen Kastrup Airport","city":"Copenhagen","country":"Denmark","countryCode":"DK","timezone":"Europe/Copenhagen"},"destination":{"iata":"JFK","name":"John F. Kennedy International Airport","city":"New York","country":"United States","countryCode":"US","timezone":"America/New_York"},"status":"scheduled","statusAsOf":"2026-08-14T08:45:00.000Z","departure":"2026-08-14T09:20:00.000Z","arrival":"2026-08-14T17:45:00.000Z","durationMinutes":505,"aircraft":"wide-body twinjet","cabin":"economy","gate":"B17","terminal":"T2"}],"meta":{"endpoint":"flights","count":1,"seed":42,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"flt_4e19c0a27b5d8f31_00\",\"flightNumber\":\"NX1-1000\",\"airline\":{\"name\":\"Northstar Air (fictional)\",\"code\":\"NX1\"},\"origin\":{\"iata\":\"CPH\",\"name\":\"Copenhagen Kastrup Airport\",\"city\":\"Copenhagen\",\"country\":\"Denmark\",\"countryCode\":\"DK\",\"timezone\":\"Europe/Copenhagen\"},\"destination\":{\"iata\":\"JFK\",\"name\":\"John F. Kennedy International Airport\",\"city\":\"New York\",\"country\":\"United States\",\"countryCode\":\"US\",\"timezone\":\"America/New_York\"},\"status\":\"scheduled\",\"statusAsOf\":\"2026-08-14T08:45:00.000Z\",\"departure\":\"2026-08-14T09:20:00.000Z\",\"arrival\":\"2026-08-14T17:45:00.000Z\",\"durationMinutes\":505,\"aircraft\":\"wide-body twinjet\",\"cabin\":\"economy\",\"gate\":\"B17\",\"terminal\":\"T2\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Flights","url":"https://randomapi.dev/apis/flights"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/form-submissions":{"get":{"operationId":"get_form_submissions_root","tags":["text"],"summary":"Generate coherent fictional form submissions","description":"Generate coherent fake contact, signup, survey and application submissions with exact validation, attachment, spam and processing states.","parameters":[{"name":"form","in":"query","description":"Pin the payload shape, or allow any supported form.","required":false,"schema":{"type":"string","enum":["contact","signup","survey","application","any"],"default":"any"},"example":"signup","x-randomapi-param-group":"route"},{"name":"status","in":"query","description":"Pin valid, invalid, pending or spam processing state, or allow any.","required":false,"schema":{"type":"string","enum":["valid","invalid","pending","spam","any"],"default":"any"},"example":"invalid","x-randomapi-param-group":"route"},{"name":"errorCount","in":"query","description":"Exact validation errors; only valid for invalid status. With status=any it selects invalid.","required":false,"schema":{"type":"integer","minimum":1,"maximum":5},"example":3,"x-randomapi-param-group":"route"},{"name":"attachmentCount","in":"query","description":"Exact safe attachment metadata records per submission.","required":false,"schema":{"type":"integer","minimum":0,"maximum":2,"default":0},"example":2,"x-randomapi-param-group":"route"},{"name":"windowDays","in":"query","description":"Elapsed days before asOf that may contain submission timestamps.","required":false,"schema":{"type":"integer","minimum":1,"maximum":90,"default":30},"example":14,"x-randomapi-param-group":"route"},{"name":"asOf","in":"query","description":"Replay anchor; defaults to the request clock and is always echoed. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-10T12:00:00.000Z","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","form"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,form"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["accepted"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"accepted"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/FormSubmissionsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/FormSubmissionsRootRecord"}}]},"example":{"data":[{"id":"submission_fixture_0_a12b34c56d78ef","form":"signup","status":"invalid","payload":{"name":"Avery Jensen","email":"submitter-a1b2c3d4@example.org","username":"fixture_1234abcd","password":"not-a-secret-1234","acceptedTerms":true,"marketingOptIn":false},"errors":[{"field":"email","code":"invalid_format","message":"The fictional email value has an invalid format.","rejectedValue":"not-an-email"}],"attachments":[{"id":"att_fixture_1","fileName":"fixture-1.pdf","mimeType":"application/pdf","sizeBytes":42000,"url":"https://uploads.example/files/att_fixture_1"}],"submittedAt":"2026-07-09T10:00:00.000Z","processedAt":"2026-07-09T10:01:00.000Z","spam":null,"accepted":false}],"meta":{"endpoint":"form-submissions","count":1,"seed":42,"params":{"form":"any","status":"any","attachmentCount":0,"windowDays":30},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"submission_fixture_0_a12b34c56d78ef\",\"form\":\"signup\",\"status\":\"invalid\",\"payload\":{\"name\":\"Avery Jensen\",\"email\":\"submitter-a1b2c3d4@example.org\",\"username\":\"fixture_1234abcd\",\"password\":\"not-a-secret-1234\",\"acceptedTerms\":true,\"marketingOptIn\":false},\"errors\":[{\"field\":\"email\",\"code\":\"invalid_format\",\"message\":\"The fictional email value has an invalid format.\",\"rejectedValue\":\"not-an-email\"}],\"attachments\":[{\"id\":\"att_fixture_1\",\"fileName\":\"fixture-1.pdf\",\"mimeType\":\"application/pdf\",\"sizeBytes\":42000,\"url\":\"https://uploads.example/files/att_fixture_1\"}],\"submittedAt\":\"2026-07-09T10:00:00.000Z\",\"processedAt\":\"2026-07-09T10:01:00.000Z\",\"spam\":null,\"accepted\":false}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Form submission fixtures","url":"https://randomapi.dev/apis/form-submissions"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/geodesy/distance":{"get":{"operationId":"get_geodesy_distance","tags":["geo"],"summary":"Calculate spherical great-circle distance and bearings between two points","description":"Great-circle distance, bearings, destinations and bounding boxes for WGS 84 coordinates on an explicitly documented mean-Earth sphere. Authoritative source: ITU-R P.1511-3 average WGS 84 Earth radius, with coordinate semantics from RFC 5870.","parameters":[{"name":"lat1","in":"query","description":"Latitude in WGS 84 decimal degrees, from -90 to 90 inclusive.","required":true,"schema":{"type":"number","minimum":-90,"maximum":90},"example":51.5074,"x-randomapi-param-group":"route"},{"name":"lon1","in":"query","description":"Longitude in WGS 84 decimal degrees, from -180 to 180 inclusive; +180 canonicalizes to -180.","required":true,"schema":{"type":"number","minimum":-180,"maximum":180},"example":-0.1278,"x-randomapi-param-group":"route"},{"name":"lat2","in":"query","description":"Latitude in WGS 84 decimal degrees, from -90 to 90 inclusive.","required":true,"schema":{"type":"number","minimum":-90,"maximum":90},"example":40.7128,"x-randomapi-param-group":"route"},{"name":"lon2","in":"query","description":"Longitude in WGS 84 decimal degrees, from -180 to 180 inclusive; +180 canonicalizes to -180.","required":true,"schema":{"type":"number","minimum":-180,"maximum":180},"example":-74.006,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["from","to"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"from,to"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["radiusMeters"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"radiusMeters"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/GeodesyDistanceEnvelope"},{"$ref":"#/components/schemas/GeodesyDistanceRecord"}]},"example":{"data":{"from":{"latitude":51.5074,"longitude":-0.1278},"to":{"latitude":40.7128,"longitude":-74.006},"centralAngleDegrees":50.094212,"distanceMeters":5570229.874,"distanceKilometers":5570.229874,"initialBearingDegrees":288.33,"finalBearingDegrees":231.21,"isCoincident":false,"isAntipodal":false,"model":"mean-earth-sphere","radiusMeters":6371008.8},"meta":{"endpoint":"geodesy","route":"/distance","params":{"lat1":51.5074,"lon1":-0.1278,"lat2":40.7128,"lon2":-74.006},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Spherical geodesy","url":"https://randomapi.dev/apis/geodesy"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/geodesy/destination":{"get":{"operationId":"get_geodesy_destination","tags":["geo"],"summary":"Find the great-circle destination from a point, bearing and distance","description":"Uses the exposed sphere and normalizes longitude. Non-zero journeys from an exact pole are rejected because initial compass bearing is undefined there. Authoritative source: ITU-R P.1511-3 average WGS 84 Earth radius, with coordinate semantics from RFC 5870.","parameters":[{"name":"lat","in":"query","description":"Latitude in WGS 84 decimal degrees, from -90 to 90 inclusive.","required":true,"schema":{"type":"number","minimum":-90,"maximum":90},"example":55.6761,"x-randomapi-param-group":"route"},{"name":"lon","in":"query","description":"Longitude in WGS 84 decimal degrees, from -180 to 180 inclusive; +180 canonicalizes to -180.","required":true,"schema":{"type":"number","minimum":-180,"maximum":180},"example":12.5683,"x-randomapi-param-group":"route"},{"name":"bearing","in":"query","description":"Initial bearing clockwise from true north, 0–360 degrees; 360 canonicalizes to 0.","required":true,"schema":{"type":"number","minimum":0,"maximum":360},"example":90,"x-randomapi-param-group":"route"},{"name":"distanceKm","in":"query","description":"Non-negative great-circle arc distance in kilometers, capped at 40031 (about one mean-Earth circumference).","required":true,"schema":{"type":"number","minimum":0,"maximum":40031},"example":1000,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["origin","bearingDegrees"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"origin,bearingDegrees"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["radiusMeters"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"radiusMeters"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/GeodesyDestinationEnvelope"},{"$ref":"#/components/schemas/GeodesyDestinationRecord"}]},"example":{"data":{"origin":{"latitude":55.6761,"longitude":12.5683},"bearingDegrees":90,"distanceKilometers":1000,"destination":{"latitude":55.002,"longitude":28.227},"finalBearingDegrees":102.8,"model":"mean-earth-sphere","radiusMeters":6371008.8},"meta":{"endpoint":"geodesy","route":"/destination","params":{"lat":55.6761,"lon":12.5683,"bearing":90,"distanceKm":1000},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Spherical geodesy","url":"https://randomapi.dev/apis/geodesy"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/geodesy/bbox":{"get":{"operationId":"get_geodesy_bbox","tags":["geo"],"summary":"Calculate a spherical radius bounding box with explicit dateline and pole behavior","description":"Great-circle distance, bearings, destinations and bounding boxes for WGS 84 coordinates on an explicitly documented mean-Earth sphere. Authoritative source: ITU-R P.1511-3 average WGS 84 Earth radius, with coordinate semantics from RFC 5870.","parameters":[{"name":"lat","in":"query","description":"Latitude in WGS 84 decimal degrees, from -90 to 90 inclusive.","required":true,"schema":{"type":"number","minimum":-90,"maximum":90},"example":55.6761,"x-randomapi-param-group":"route"},{"name":"lon","in":"query","description":"Longitude in WGS 84 decimal degrees, from -180 to 180 inclusive; +180 canonicalizes to -180.","required":true,"schema":{"type":"number","minimum":-180,"maximum":180},"example":12.5683,"x-randomapi-param-group":"route"},{"name":"radiusKm","in":"query","description":"Spherical radius in kilometers, 0–40031. A radius reaching either pole spans all longitudes.","required":true,"schema":{"type":"number","minimum":0,"maximum":40031},"example":100,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["center","radiusKilometers"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"center,radiusKilometers"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["radiusMeters"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"radiusMeters"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/GeodesyBboxEnvelope"},{"$ref":"#/components/schemas/GeodesyBboxRecord"}]},"example":{"data":{"center":{"latitude":55.6761,"longitude":12.5683},"radiusKilometers":100,"south":54.7768,"north":56.5754,"west":10.98,"east":14.15,"crossesAntimeridian":false,"spansAllLongitudes":false,"model":"mean-earth-sphere","radiusMeters":6371008.8},"meta":{"endpoint":"geodesy","route":"/bbox","params":{"lat":55.6761,"lon":12.5683,"radiusKm":100},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Spherical geodesy","url":"https://randomapi.dev/apis/geodesy"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/geohash/encode":{"get":{"operationId":"get_geohash_encode","tags":["geo"],"summary":"Encode a coordinate into a geohash and return its cell","description":"Encode coordinates to a geohash at any precision, decode a hash to its exact cell bounds and center, and list its eight neighbors. Authoritative source: CTA-5009-A, Fast and Readable Geographical Hashing (Consumer Technology Association).","parameters":[{"name":"lat","in":"query","description":"Latitude in decimal degrees, -90 to 90 inclusive. CTA-5009-A §7 makes the range half-open; we accept exactly 90 and put it in the northernmost cell instead of rejecting it.","required":true,"schema":{"type":"number","minimum":-90,"maximum":90},"example":55.6761,"x-randomapi-param-group":"route"},{"name":"lng","in":"query","description":"Longitude in decimal degrees, -180 to 180 inclusive. CTA-5009-A §7 makes the range half-open; we accept exactly 180, put it in the easternmost cell and never normalize it to -180.","required":true,"schema":{"type":"number","minimum":-180,"maximum":180},"example":12.5683,"x-randomapi-param-group":"route"},{"name":"precision","in":"query","description":"Hash length in characters, 1–12 (5 bits each). Defaults to 9, about 4.8 m × 4.7 m at the equator; above 12 is a 400.","required":false,"schema":{"type":"integer","minimum":1,"maximum":12,"default":9},"example":5,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["hash","precision"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"hash,precision"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["approxCellMetersAtEquator"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"approxCellMetersAtEquator"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/GeohashEncodeEnvelope"},{"$ref":"#/components/schemas/GeohashEncodeRecord"}]},"example":{"data":{"hash":"ezs42","precision":5,"cell":{"south":42.5830078125,"west":-5.625,"north":42.626953125,"east":-5.5810546875},"center":{"lat":42.60498046875,"lng":-5.60302734375},"error":{"latDegrees":0.02197265625,"lngDegrees":0.02197265625},"approxCellMetersAtEquator":{"width":4891.9698,"height":4859.2211}},"meta":{"endpoint":"geohash","route":"/encode","params":{"lat":55.6761,"lng":12.5683,"precision":9},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Geohash Encode, Decode & Neighbors API","url":"https://randomapi.dev/apis/geohash"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/geohash/decode":{"get":{"operationId":"get_geohash_decode","tags":["geo"],"summary":"Decode a geohash into its exact cell rectangle, center and error","description":"Returns the rectangle the hash actually denotes — the bounds come from the bit ranges, so the cell is exact rather than reconstructed from a rounded point. Authoritative source: CTA-5009-A, Fast and Readable Geographical Hashing (Consumer Technology Association).","parameters":[{"name":"hash","in":"query","description":"Geohash of 1–12 characters from the base-32 alphabet 0123456789bcdefghjkmnpqrstuvwxyz (a, i, l and o are not in it). Invalid characters are a 400, never corrected — including uppercase, a declared deviation from CTA-5009-A §8.1's SHOULD-lowercase.","required":true,"schema":{"type":"string","minLength":1,"maxLength":12},"example":"ezs42","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["hash","precision"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"hash,precision"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["parent"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"parent"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/GeohashDecodeEnvelope"},{"$ref":"#/components/schemas/GeohashDecodeRecord"}]},"example":{"data":{"hash":"ezs42","precision":5,"cell":{"south":42.5830078125,"west":-5.625,"north":42.626953125,"east":-5.5810546875},"center":{"lat":42.60498046875,"lng":-5.60302734375},"error":{"latDegrees":0.02197265625,"lngDegrees":0.02197265625},"approxCellMetersAtEquator":{"width":4891.9698,"height":4859.2211},"parent":"ezs4"},"meta":{"endpoint":"geohash","route":"/decode","params":{"hash":"ezs42"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Geohash Encode, Decode & Neighbors API","url":"https://randomapi.dev/apis/geohash"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/geohash/neighbors":{"get":{"operationId":"get_geohash_neighbors","tags":["geo"],"summary":"List the eight adjacent geohash cells, with antimeridian and pole handling","description":"East and west wrap across the antimeridian. A direction that would leave the world is null and its reason is listed in 'unavailable' — never a substituted cell. Authoritative source: CTA-5009-A, Fast and Readable Geographical Hashing (Consumer Technology Association).","parameters":[{"name":"hash","in":"query","description":"Geohash of 1–12 characters from the base-32 alphabet 0123456789bcdefghjkmnpqrstuvwxyz (a, i, l and o are not in it). Invalid characters are a 400, never corrected — including uppercase, a declared deviation from CTA-5009-A §8.1's SHOULD-lowercase.","required":true,"schema":{"type":"string","minLength":1,"maxLength":12},"example":"ezs42","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["hash","precision"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"hash,precision"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["unavailable"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"unavailable"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/GeohashNeighborsEnvelope"},{"$ref":"#/components/schemas/GeohashNeighborsRecord"}]},"example":{"data":{"hash":"ezs42","precision":5,"n":"ezs48","ne":"ezs49","e":"ezs43","se":"ezs41","s":"ezs40","sw":"ezefp","w":"ezefr","nw":"ezefx","wrapsAntimeridian":false,"unavailable":[]},"meta":{"endpoint":"geohash","route":"/neighbors","params":{"hash":"ezs42"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Geohash Encode, Decode & Neighbors API","url":"https://randomapi.dev/apis/geohash"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/geojson/validate":{"get":{"operationId":"get_geojson_validate","tags":["geo"],"summary":"Validate one GeoJSON document against RFC 7946 and name the clause behind every finding","description":"Validate GeoJSON against RFC 7946: the exact clause behind an unclosed ring, a swapped lat/lng, clockwise winding or a wrong bbox — plus inspect and rewind. Authoritative sources: RFC 7946 — The GeoJSON Format (IETF Standards Track); IANA media type registration for application/geo+json; ITU-R P.1511-3 average WGS 84 Earth radius (the same sphere /api/geodesy documents); Chamberlain & Duquette, Some Algorithms for Polygons on a Sphere (JPL Publication 07-03, June 2007) — spherical signed-area formula.","parameters":[{"name":"value","in":"query","description":"The GeoJSON text itself — this endpoint never fetches a URL. Capped at 4000 characters because it has to fit in a GET query string; larger input is rejected with a 400, never truncated into a wrong verdict. Percent-encode '+' as %2B: a bare '+' in a query string decodes to a space, which corrupts exponent notation such as 1e+2.","required":true,"schema":{"type":"string","maxLength":4000},"example":"{\"type\":\"Point\",\"coordinates\":[-0.1276,51.5072]}","x-randomapi-param-group":"route"},{"name":"minSeverity","in":"query","description":"Lowest severity to include in 'findings'. 'warning' (the default) returns errors and warnings; 'note' adds the informational findings; 'error' returns errors only. 'errorCount', 'warningCount' and 'noteCount' are always computed over every finding, before this filter and before the 200-finding cap — the filter changes what you read, never what was found.","required":false,"schema":{"type":"string","enum":["note","warning","error"],"default":"warning"},"example":"note","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["valid","conformant"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"valid,conformant"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["findings"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"findings"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/GeojsonValidateEnvelope"},{"$ref":"#/components/schemas/GeojsonValidateRecord"}]},"example":{"data":{"valid":true,"conformant":false,"type":"FeatureCollection","errorCount":0,"warningCount":1,"noteCount":0,"findingCount":1,"truncated":false,"findings":[{"severity":"warning","code":"ring-winding-not-right-hand","rule":"RFC 7946 §3.1.6","ruleUrl":"https://www.rfc-editor.org/rfc/rfc7946.html#section-3.1.6","conformance":"must","message":"The exterior ring is clockwise; RFC 7946 §3.1.6 requires the right-hand rule (exterior rings counterclockwise, holes clockwise). The same section tells parsers not to reject Polygons that do not follow it, so this is a warning, not an error — call /api/geojson/rewind to fix it.","path":"/coordinates/0","value":null}]},"meta":{"endpoint":"geojson","route":"/validate","params":{"value":"{\"type\":\"Point\",\"coordinates\":[-0.1276,51.5072]}","minSeverity":"warning"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for GeoJSON validator & inspector","url":"https://randomapi.dev/apis/geojson"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/geojson/inspect":{"get":{"operationId":"get_geojson_inspect","tags":["geo"],"summary":"Measure one GeoJSON document: geometry counts, computed bbox, spherical area and length, and the winding of every ring","description":"Refuses a document with any RFC 7946 error (400 → /validate), because area, length and winding computed over a malformed ring are noise. Warnings and notes do not block inspection. Authoritative sources: RFC 7946 — The GeoJSON Format (IETF Standards Track); IANA media type registration for application/geo+json; ITU-R P.1511-3 average WGS 84 Earth radius (the same sphere /api/geodesy documents); Chamberlain & Duquette, Some Algorithms for Polygons on a Sphere (JPL Publication 07-03, June 2007) — spherical signed-area formula.","parameters":[{"name":"value","in":"query","description":"The GeoJSON text itself — this endpoint never fetches a URL. Capped at 4000 characters because it has to fit in a GET query string; larger input is rejected with a 400, never truncated into a wrong verdict. Percent-encode '+' as %2B: a bare '+' in a query string decodes to a space, which corrupts exponent notation such as 1e+2.","required":true,"schema":{"type":"string","maxLength":4000},"example":"{\"type\":\"Point\",\"coordinates\":[-0.1276,51.5072]}","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["type","objectCounts"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"type,objectCounts"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["radiusMeters"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"radiusMeters"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/GeojsonInspectEnvelope"},{"$ref":"#/components/schemas/GeojsonInspectRecord"}]},"example":{"data":{"type":"FeatureCollection","objectCounts":{"Point":1,"MultiPoint":0,"LineString":0,"MultiLineString":0,"Polygon":1,"MultiPolygon":0,"GeometryCollection":0,"Feature":2,"FeatureCollection":1},"positionCount":6,"ringCount":1,"unlocatedFeatureCount":0,"emptyGeometryCount":0,"hasAltitude":false,"mixedDimensions":false,"elevationRange":null,"bbox":{"array":[100,0,102,1],"west":100,"south":0,"east":102,"north":1},"bboxCrossesAntimeridian":false,"bboxAlternative":null,"bboxCenter":{"longitude":101,"latitude":0.5},"declaredBbox":null,"declaredBboxContainsGeometry":null,"lengthMeters":null,"perimeterMeters":444763.385,"areaSquareMeters":12363718145.18,"rings":[{"path":"/features/1/geometry/coordinates/0","role":"exterior","positionCount":5,"closed":true,"winding":"counterclockwise","followsRightHandRule":true,"areaSquareMeters":12363718145.18}],"foreignMemberPaths":[],"crsMemberPresent":false,"model":"mean-earth-sphere","radiusMeters":6371008.8},"meta":{"endpoint":"geojson","route":"/inspect","params":{"value":"{\"type\":\"Point\",\"coordinates\":[-0.1276,51.5072]}"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for GeoJSON validator & inspector","url":"https://randomapi.dev/apis/geojson"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/geojson/rewind":{"get":{"operationId":"get_geojson_rewind","tags":["geo"],"summary":"Rewind every linear ring to the RFC 7946 right-hand rule and report exactly which rings changed direction","description":"Rewinding is position-order reversal of a ring array and nothing else. Rings are only found at the 'coordinates' of a Polygon or MultiPolygon reached through 'features[].geometry', 'geometries[]' or the root geometry — never inside 'properties' or a foreign member (RFC 7946 §6.1). Authoritative sources: RFC 7946 — The GeoJSON Format (IETF Standards Track); IANA media type registration for application/geo+json; ITU-R P.1511-3 average WGS 84 Earth radius (the same sphere /api/geodesy documents); Chamberlain & Duquette, Some Algorithms for Polygons on a Sphere (JPL Publication 07-03, June 2007) — spherical signed-area formula.","parameters":[{"name":"value","in":"query","description":"The GeoJSON text itself — this endpoint never fetches a URL. Capped at 4000 characters because it has to fit in a GET query string; larger input is rejected with a 400, never truncated into a wrong verdict. Percent-encode '+' as %2B: a bare '+' in a query string decodes to a space, which corrupts exponent notation such as 1e+2.","required":true,"schema":{"type":"string","maxLength":4000},"example":"{\"type\":\"Point\",\"coordinates\":[-0.1276,51.5072]}","x-randomapi-param-group":"route"},{"name":"winding","in":"query","description":"'right-hand' is RFC 7946 §3.1.6: exterior rings counterclockwise, interior rings clockwise. 'left-hand' is the exact inverse — not RFC 7946, but the 2008 draft left winding undefined and some older renderers and d3 pipelines expect it. The applied convention is echoed in the 'convention' field.","required":false,"schema":{"type":"string","enum":["right-hand","left-hand"],"default":"right-hand"},"example":"left-hand","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["convention","changed"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"convention,changed"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["document"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"document"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/GeojsonRewindEnvelope"},{"$ref":"#/components/schemas/GeojsonRewindRecord"}]},"example":{"data":{"convention":"right-hand","changed":true,"ringCount":1,"rewoundRingCount":1,"indeterminateRingCount":0,"rewoundRings":[{"path":"/coordinates/0","role":"exterior","windingBefore":"clockwise","windingAfter":"counterclockwise"}],"document":{"type":"Polygon","coordinates":[[[100,0],[101,0],[101,1],[100,1],[100,0]]]}},"meta":{"endpoint":"geojson","route":"/rewind","params":{"value":"{\"type\":\"Point\",\"coordinates\":[-0.1276,51.5072]}","winding":"right-hand"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for GeoJSON validator & inspector","url":"https://randomapi.dev/apis/geojson"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/geojson/checks":{"get":{"operationId":"get_geojson_checks","tags":["geo"],"summary":"Every check this endpoint performs, with its severity, its RFC 7946 conformance level and the clause it cites","description":"The finding catalogue is one exported constant: the walker can only emit a finding through a helper that looks its code up there, and this route returns the same table. Drift between the docs and the behaviour is structurally impossible. Authoritative sources: RFC 7946 — The GeoJSON Format (IETF Standards Track); IANA media type registration for application/geo+json; ITU-R P.1511-3 average WGS 84 Earth radius (the same sphere /api/geodesy documents); Chamberlain & Duquette, Some Algorithms for Polygons on a Sphere (JPL Publication 07-03, June 2007) — spherical signed-area formula.","parameters":[{"name":"severity","in":"query","description":"Only checks at this severity.","required":false,"schema":{"type":"string","enum":["error","warning","note"]},"example":"error","x-randomapi-param-group":"route"},{"name":"conformance","in":"query","description":"Only checks at this RFC 7946 conformance level. 'none' selects the checks that are this endpoint's own diagnosis or observation rather than an assertion about a clause — the rows whose 'conformance' is null.","required":false,"schema":{"type":"string","enum":["must","should","descriptive","permitted","none"]},"example":"must","x-randomapi-param-group":"route"},{"name":"search","in":"query","description":"Case-insensitive substring match over 'code' and 'description'.","required":false,"schema":{"type":"string","minLength":2,"maxLength":60},"example":"ring","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["code","severity"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"code,severity"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["description"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"description"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/GeojsonChecksEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/GeojsonChecksRecord"}}]},"example":{"data":[{"code":"ring-winding-not-right-hand","severity":"warning","conformance":"must","rule":"RFC 7946 §3.1.6","ruleUrl":"https://www.rfc-editor.org/rfc/rfc7946.html#section-3.1.6","description":"A linear ring's direction is not the right-hand rule for its role. A warning rather than an error because the same section tells parsers not to reject such Polygons."}],"meta":{"endpoint":"geojson","route":"/checks","count":1,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"code\":\"ring-winding-not-right-hand\",\"severity\":\"warning\",\"conformance\":\"must\",\"rule\":\"RFC 7946 §3.1.6\",\"ruleUrl\":\"https://www.rfc-editor.org/rfc/rfc7946.html#section-3.1.6\",\"description\":\"A linear ring's direction is not the right-hand rule for its role. A warning rather than an error because the same section tells parsers not to reject such Polygons.\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for GeoJSON validator & inspector","url":"https://randomapi.dev/apis/geojson"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/git-commits":{"get":{"operationId":"get_git_commits_root","tags":["developer"],"summary":"Generate fake git commits","description":"Each record is one commit: message, hash/shortHash, author, a date uniformly drawn from [`from`, `to`], and diff stats. The resolved window — defaults included — is echoed in `meta.params`.","parameters":[{"name":"style","in":"query","description":"Message style: 'conventional' = `<type>(<scope>): <subject>` (commitlint-valid, lowercase subject, no trailing period); 'plain' = a capitalized imperative sentence with no prefix.","required":false,"schema":{"type":"string","enum":["conventional","plain"],"default":"conventional"},"example":"plain","x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Earliest commit date, inclusive. YYYY-MM-DD (= midnight UTC) or a full ISO 8601 timestamp. Not before 1970 (git stores Unix seconds). Defaults to 90 days before today (UTC). Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Latest commit date, inclusive. YYYY-MM-DD means midnight UTC — pass a timestamp to cover that whole day. Must be ≥ from. Defaults to today at UTC midnight. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-03-31","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["message","hash"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"message,hash"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["deletions"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"deletions"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/GitCommitsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/GitCommitsRootRecord"}}]},"example":{"data":[{"message":"feat(api): add bulk export for audit logs","hash":"0f9a3c2e6d1b4a8c9f2e3d1c4a8b9f2e3d1c4a8b","shortHash":"0f9a3c2","author":{"name":"Emily Carter","email":"emily.carter@example.com"},"date":"2026-03-14T09:26:53Z","filesChanged":3,"insertions":124,"deletions":38}],"meta":{"endpoint":"git-commits","count":1,"seed":42,"params":{"style":"conventional"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"message\":\"feat(api): add bulk export for audit logs\",\"hash\":\"0f9a3c2e6d1b4a8c9f2e3d1c4a8b9f2e3d1c4a8b\",\"shortHash\":\"0f9a3c2\",\"author\":{\"name\":\"Emily Carter\",\"email\":\"emily.carter@example.com\"},\"date\":\"2026-03-14T09:26:53Z\",\"filesChanged\":3,\"insertions\":124,\"deletions\":38}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Git commits","url":"https://randomapi.dev/apis/git-commits"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/glob-match/test":{"get":{"operationId":"get_glob_match_test","tags":["developer"],"summary":"Match one path against one glob pattern and show which segment consumed what","description":"Returns the verdict plus a witness: `alignment` when it matched, `failure` when it did not, and the `steps` the bounded matcher spent. Authoritative sources: POSIX.1-2024 (IEEE Std 1003.1-2024) — XCU 2.14 Pattern Matching Notation; gitignore(5) — Git Reference Manual; GNU Bash Reference Manual (5.3) — Pattern Matching; GNU Bash Reference Manual (5.3) — Brace Expansion.","parameters":[{"name":"pattern","in":"query","description":"The glob pattern, taken exactly as sent: nothing is trimmed, '\\' is an escape character and never a path separator. Capped at 512 characters, 64 '/'-separated segments and 256 characters per segment.","required":true,"schema":{"type":"string","minLength":1,"maxLength":512},"example":"src/**/*.ts","x-randomapi-param-group":"route"},{"name":"path","in":"query","description":"The path to test, '/'-separated. May be absolute — an absolute pattern only matches an absolute path. A leading './', repeated '/' and a trailing '/' are normalized away with a warning; '.' and '..' segments are matched literally, never resolved. Capped at 1,024 characters and 64 segments.","required":true,"schema":{"type":"string","minLength":1,"maxLength":1024},"example":"src/lib/util.ts","x-randomapi-param-group":"route"},{"name":"syntax","in":"query","description":"Which dialect's rules to apply. `posix` is POSIX.1-2024 XCU 2.14 pattern matching with FNM_PATHNAME semantics: no globstar, no braces, no extglob. `glob` is this endpoint's documented superset — POSIX plus a `**` segment that spans zero or more path segments plus Bash brace expansion, which is what Node tooling implements and is not a published standard. `extglob` adds the five Bash extglob operators.","required":false,"schema":{"type":"string","enum":["posix","glob","extglob"],"default":"glob"},"example":"extglob","x-randomapi-param-group":"route"},{"name":"dot","in":"query","description":"Whether `*`, `?`, a bracket expression or a `**` segment may match a path segment that starts with a '.'. POSIX.1-2024 XCU 2.14.3 forbids it (that is FNM_PERIOD); `dot=true` lifts the restriction. git has no such rule, so /gitignore always behaves as `dot=true` and takes no `dot` parameter. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"caseSensitive","in":"query","description":"`false` compares case-insensitively by folding both sides with Unicode simple lowercase, one code point at a time. It approximates a case-insensitive filesystem; it is not a reproduction of APFS, NTFS or `core.ignoreCase`, and a character whose lowercase is more than one code point is compared unchanged. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":false,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["matched","syntax"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"matched,syntax"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["steps"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"steps"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/GlobMatchTestEnvelope"},{"$ref":"#/components/schemas/GlobMatchTestRecord"}]},"example":{"data":{"matched":true,"syntax":"glob","pattern":"src/**/*.ts","path":"src/lib/util.ts","matchedPattern":"src/**/*.ts","expandedPatterns":["src/**/*.ts"],"pathSegments":["src","lib","util.ts"],"alignment":[{"patternSegment":"src","kind":"literal","consumed":["src"]},{"patternSegment":"**","kind":"globstar","consumed":["lib"]},{"patternSegment":"*.ts","kind":"wildcard","consumed":["util.ts"]}],"failure":{"patternSegmentIndex":0,"patternSegment":"*.ts","pathSegmentsMatched":0,"reason":"The pattern segment '*.ts' does not match the path segment 'src', and it can never reach across a '/'."},"steps":12},"meta":{"endpoint":"glob-match","route":"/test","params":{"pattern":"src/**/*.ts","path":"src/lib/util.ts","syntax":"glob","dot":false,"caseSensitive":true},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Glob and .gitignore pattern matcher","url":"https://randomapi.dev/apis/glob-match"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/glob-match/filter":{"get":{"operationId":"get_glob_match_filter","tags":["developer"],"summary":"Match up to 100 paths against one pattern in a single request","description":"One row per supplied path. `matching` genuinely filters the rows, and `count` is only a limit on what is returned. Authoritative sources: POSIX.1-2024 (IEEE Std 1003.1-2024) — XCU 2.14 Pattern Matching Notation; gitignore(5) — Git Reference Manual; GNU Bash Reference Manual (5.3) — Pattern Matching; GNU Bash Reference Manual (5.3) — Brace Expansion.","parameters":[{"name":"pattern","in":"query","description":"The glob pattern, taken exactly as sent: nothing is trimmed, '\\' is an escape character and never a path separator. Capped at 512 characters, 64 '/'-separated segments and 256 characters per segment.","required":true,"schema":{"type":"string","minLength":1,"maxLength":512},"example":"src/**/*.ts","x-randomapi-param-group":"route"},{"name":"paths","in":"query","description":"Comma-separated paths to test — at most 100 entries, 256 characters each and 4,000 characters in total. Each entry is trimmed and empty entries are dropped, so a path containing a comma or a meaningful leading/trailing space cannot be tested here — use /test for that one path. Serialized as one comma-separated query value.","required":true,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["src/a.ts","src/a/b.ts","src/a.d.ts","README.md"],"style":"form","explode":false,"x-randomapi-param-group":"route","x-randomapi-query-example":"src/a.ts,src/a/b.ts,src/a.d.ts,README.md"},{"name":"syntax","in":"query","description":"Which dialect's rules to apply. `posix` is POSIX.1-2024 XCU 2.14 pattern matching with FNM_PATHNAME semantics: no globstar, no braces, no extglob. `glob` is this endpoint's documented superset — POSIX plus a `**` segment that spans zero or more path segments plus Bash brace expansion, which is what Node tooling implements and is not a published standard. `extglob` adds the five Bash extglob operators.","required":false,"schema":{"type":"string","enum":["posix","glob","extglob"],"default":"glob"},"example":"extglob","x-randomapi-param-group":"route"},{"name":"dot","in":"query","description":"Whether `*`, `?`, a bracket expression or a `**` segment may match a path segment that starts with a '.'. POSIX.1-2024 XCU 2.14.3 forbids it (that is FNM_PERIOD); `dot=true` lifts the restriction. git has no such rule, so /gitignore always behaves as `dot=true` and takes no `dot` parameter. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"caseSensitive","in":"query","description":"`false` compares case-insensitively by folding both sides with Unicode simple lowercase, one code point at a time. It approximates a case-insensitive filesystem; it is not a reproduction of APFS, NTFS or `core.ignoreCase`, and a character whose lowercase is more than one code point is compared unchanged. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":false,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"matching","in":"query","description":"Which rows to return: every path, only the ones that matched, or only the ones that did not. Zero rows is an empty `data` array plus a warning naming the filter — never a silent empty response.","required":false,"schema":{"type":"string","enum":["all","matched","unmatched"],"default":"all"},"example":"unmatched","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["path","matched"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"path,matched"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["failedAtSegment"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"failedAtSegment"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/GlobMatchFilterEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/GlobMatchFilterRecord"}}]},"example":{"data":[{"path":"src/a.ts","matched":true,"matchedPattern":"src/**/*.ts","failedAtSegment":null}],"meta":{"endpoint":"glob-match","route":"/filter","count":1,"params":{"pattern":"src/**/*.ts","paths":["src/a.ts","src/a/b.ts","src/a.d.ts","README.md"],"syntax":"glob","dot":false,"caseSensitive":true,"matching":"all"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"path\":\"src/a.ts\",\"matched\":true,\"matchedPattern\":\"src/**/*.ts\",\"failedAtSegment\":null}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Glob and .gitignore pattern matcher","url":"https://randomapi.dev/apis/glob-match"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/glob-match/gitignore":{"get":{"operationId":"get_glob_match_gitignore","tags":["developer"],"summary":"Decide whether git would ignore a path, and name the rule, its line and any excluded parent","description":"Evaluates a pasted .gitignore against one repository-relative path with git's last-match-wins precedence, and reports the excluded ancestor directory when a negation cannot take effect. Authoritative sources: POSIX.1-2024 (IEEE Std 1003.1-2024) — XCU 2.14 Pattern Matching Notation; gitignore(5) — Git Reference Manual; GNU Bash Reference Manual (5.3) — Pattern Matching; GNU Bash Reference Manual (5.3) — Brace Expansion.","parameters":[{"name":"rules","in":"query","description":"The .gitignore text itself — never fetched, never truncated. Newlines travel as %0A. A UTF-8 byte order mark is skipped and CRLF line endings are handled, exactly as git does. Capped at 8,000 characters, 500 lines and 500 usable rules, because a truncated rule file gives a wrong verdict.","required":true,"schema":{"type":"string","maxLength":8000},"example":"build/\n!build/keep.txt","x-randomapi-param-group":"route"},{"name":"path","in":"query","description":"Repository-root-relative path as git stores it: '/'-separated, no leading '/', no '.' or '..' segments. A trailing '/' is removed and, unless you passed `isDirectory` yourself, sets it to true.","required":true,"schema":{"type":"string","minLength":1,"maxLength":1024},"example":"build/keep.txt","x-randomapi-param-group":"route"},{"name":"isDirectory","in":"query","description":"Whether the final component is a directory. It cannot be inferred from the string and it changes the answer: a `build/` rule matches the directory `build` and never a file named `build` (verified against git). Ancestor components are always evaluated as directories. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"caseSensitive","in":"query","description":"`false` approximates git's `core.ignoreCase` by folding ASCII bytes only, which is what git's own byte-wise folding does. It is an approximation of a case-insensitive checkout, not a reproduction of one. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":false,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["ignored","path"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"ignored,path"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["steps"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"steps"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/GlobMatchGitignoreEnvelope"},{"$ref":"#/components/schemas/GlobMatchGitignoreRecord"}]},"example":{"data":{"ignored":true,"path":"build/keep.txt","isDirectory":false,"reason":"parent-directory","matchedRule":{"lineNumber":1,"pattern":"build/","effectivePattern":"build","negated":false,"anchored":false,"directoryOnly":true,"matchedAgainst":"basename","appliedTo":"build"},"competingRules":[{"lineNumber":1,"pattern":"build/","effectivePattern":"build","negated":false,"anchored":false,"directoryOnly":true,"matchedAgainst":"basename"},{"lineNumber":2,"pattern":"!build/keep.txt","effectivePattern":"build/keep.txt","negated":true,"anchored":true,"directoryOnly":false,"matchedAgainst":"path"}],"excludedByParent":{"directory":"build","rule":{"lineNumber":1,"pattern":"build/","effectivePattern":"build","negated":false,"anchored":false,"directoryOnly":true,"matchedAgainst":"basename"}},"ancestorDecisions":[{"directory":"build","ignored":true,"rule":{"lineNumber":1,"pattern":"build/","effectivePattern":"build","negated":false,"anchored":false,"directoryOnly":true,"matchedAgainst":"basename"}}],"ruleCount":2,"steps":24},"meta":{"endpoint":"glob-match","route":"/gitignore","params":{"rules":"build/\n!build/keep.txt","path":"build/keep.txt","isDirectory":false,"caseSensitive":true},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Glob and .gitignore pattern matcher","url":"https://randomapi.dev/apis/glob-match"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/glob-match/explain":{"get":{"operationId":"get_glob_match_explain","tags":["developer"],"summary":"Break a pattern into segments and tokens and say what each construct means","description":"Per-segment, per-token explanation for the dialect you name, plus the list of constructs that dialect does not interpret at all. Under a dialect with brace expansion the tokens describe `explainedPattern` — the first expansion, because that is what gets matched. Authoritative sources: POSIX.1-2024 (IEEE Std 1003.1-2024) — XCU 2.14 Pattern Matching Notation; gitignore(5) — Git Reference Manual; GNU Bash Reference Manual (5.3) — Pattern Matching; GNU Bash Reference Manual (5.3) — Brace Expansion.","parameters":[{"name":"pattern","in":"query","description":"The glob pattern, taken exactly as sent: nothing is trimmed, '\\' is an escape character and never a path separator. Capped at 512 characters, 64 '/'-separated segments and 256 characters per segment.","required":true,"schema":{"type":"string","minLength":1,"maxLength":512},"example":"src/**/*.{ts,tsx}","x-randomapi-param-group":"route"},{"name":"syntax","in":"query","description":"Which dialect's rules to apply. `posix` is POSIX.1-2024 XCU 2.14 pattern matching with FNM_PATHNAME semantics: no globstar, no braces, no extglob. `glob` is this endpoint's documented superset — POSIX plus a `**` segment that spans zero or more path segments plus Bash brace expansion, which is what Node tooling implements and is not a published standard. `extglob` adds the five Bash extglob operators. `gitignore` reads the text as one .gitignore line: a leading '!' negates, a trailing '/' means directory-only, and matching runs over UTF-8 bytes.","required":false,"schema":{"type":"string","enum":["posix","glob","extglob","gitignore"],"default":"glob"},"example":"gitignore","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["syntax","pattern"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"syntax,pattern"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["expandedCount"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"expandedCount"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/GlobMatchExplainEnvelope"},{"$ref":"#/components/schemas/GlobMatchExplainRecord"}]},"example":{"data":{"syntax":"gitignore","pattern":"!/build/**","explainedPattern":"build/**","segments":[{"index":0,"text":"build","kind":"literal","tokens":[{"text":"build","kind":"literal","meaning":"Matches the literal text 'build'."}]}],"features":["globstar","negation","anchor","directory-only"],"gitignore":{"negated":true,"anchored":true,"directoryOnly":false,"matchedAgainst":"path","effectivePattern":"build/**"},"unsupported":[{"text":"{","note":"git has no brace expansion, so '{' and '}' are literal characters in a .gitignore rule."}],"expandedCount":1},"meta":{"endpoint":"glob-match","route":"/explain","params":{"pattern":"src/**/*.{ts,tsx}","syntax":"glob"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Glob and .gitignore pattern matcher","url":"https://randomapi.dev/apis/glob-match"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/glob-match/expand":{"get":{"operationId":"get_glob_match_expand","tags":["developer"],"summary":"Expand a Bash brace expression into the exact list of patterns it produces","description":"Bash 5.3 brace expansion, in left-to-right order, never sorted and never deduplicated. POSIX fnmatch() and git have no brace expansion at all. Authoritative sources: POSIX.1-2024 (IEEE Std 1003.1-2024) — XCU 2.14 Pattern Matching Notation; gitignore(5) — Git Reference Manual; GNU Bash Reference Manual (5.3) — Pattern Matching; GNU Bash Reference Manual (5.3) — Brace Expansion.","parameters":[{"name":"pattern","in":"query","description":"The pattern to expand, taken exactly as sent. Up to 256 expansions and 32,768 expanded characters — over that is a 400, never a truncated list.","required":true,"schema":{"type":"string","minLength":1,"maxLength":512},"example":"src/{a,b}/*.{ts,tsx}","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["pattern","patterns"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"pattern,patterns"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["literalGroups"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"literalGroups"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/GlobMatchExpandEnvelope"},{"$ref":"#/components/schemas/GlobMatchExpandRecord"}]},"example":{"data":{"pattern":"src/{a,b}/*.{ts,tsx}","patterns":["src/a/*.ts","src/a/*.tsx","src/b/*.ts","src/b/*.tsx"],"expandedCount":4,"braceGroups":2,"literalGroups":[]},"meta":{"endpoint":"glob-match","route":"/expand","params":{"pattern":"src/{a,b}/*.{ts,tsx}"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Glob and .gitignore pattern matcher","url":"https://randomapi.dev/apis/glob-match"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/holidays":{"get":{"operationId":"get_holidays_root","tags":["datetime"],"summary":"All holidays of a country for a given year","description":"Real public holidays for 61 countries, computed from official national rules — list a year, check a date, or get the next upcoming holiday. Authoritative sources: Official statutes and government pages of each of the 61 supported countries, cited per country by GET /api/holidays/countries; Gregorian Computus (Anonymous/Butcher algorithm) and the Orthodox Paschalion (Meeus's Julian algorithm); National Astronomical Observatory of Japan — 暦要項 (equinox holiday dates).","parameters":[{"name":"country","in":"query","description":"Country code (ISO 3166-1 alpha-2). 61 supported: AM, AR, AT, AU, BE, BG, BO, BR, BY, CA, CH, CO, CY, CZ, DE, DK, EE, ES, FI, FR, GB, GR, GT, HR, HU, IE, IN, IS, IT, JP, KE, KR, KZ, LI, LT, LU, LV, MA, MT, MX, NG, NL, NO, NZ, PA, PE, PH, PL, PT, RO, RS, SE, SG, SI, SK, SM, TH, TR, UA, US, ZA — unsupported codes return a 400 listing all options, never another country's holidays. `GET /api/holidays/countries` returns each country's scope, coverage and official source.","required":true,"schema":{"type":"string"},"example":"DK","x-randomapi-param-group":"route"},{"name":"year","in":"query","description":"Calendar year. Defaults to the current year.","required":false,"schema":{"type":"integer","minimum":1583,"maximum":3000},"example":2026,"x-randomapi-param-group":"route"},{"name":"type","in":"query","description":"Filter by holiday type: 'public' = statutory day off, 'bank' = banks closed, 'observance' = widely kept but not statutory.","required":false,"schema":{"type":"string","enum":["public","bank","observance","any"],"default":"any"},"example":"public","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["date","name"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"date,name"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["observed"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"observed"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/HolidaysRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/HolidaysRootRecord"}}]},"example":{"data":[{"date":"2026-12-25","name":"Christmas Day","localName":"Juledag","type":"public","weekday":"Friday","observed":null}],"meta":{"endpoint":"holidays","count":1,"params":{"country":"DK","type":"any"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"date\":\"2026-12-25\",\"name\":\"Christmas Day\",\"localName\":\"Juledag\",\"type\":\"public\",\"weekday\":\"Friday\",\"observed\":null}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Public holidays","url":"https://randomapi.dev/apis/holidays"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/holidays/check":{"get":{"operationId":"get_holidays_check","tags":["datetime"],"summary":"Is a given date (default: today) a holiday?","description":"Defaults to **today in the country's primary timezone**, so a bare `?country=DK` answers “is today a holiday in Denmark?”. Observed/substitute days match too. Authoritative sources: Official statutes and government pages of each of the 61 supported countries, cited per country by GET /api/holidays/countries; Gregorian Computus (Anonymous/Butcher algorithm) and the Orthodox Paschalion (Meeus's Julian algorithm); National Astronomical Observatory of Japan — 暦要項 (equinox holiday dates).","parameters":[{"name":"country","in":"query","description":"Country code (ISO 3166-1 alpha-2). 61 supported: AM, AR, AT, AU, BE, BG, BO, BR, BY, CA, CH, CO, CY, CZ, DE, DK, EE, ES, FI, FR, GB, GR, GT, HR, HU, IE, IN, IS, IT, JP, KE, KR, KZ, LI, LT, LU, LV, MA, MT, MX, NG, NL, NO, NZ, PA, PE, PH, PL, PT, RO, RS, SE, SG, SI, SK, SM, TH, TR, UA, US, ZA — unsupported codes return a 400 listing all options, never another country's holidays. `GET /api/holidays/countries` returns each country's scope, coverage and official source.","required":true,"schema":{"type":"string"},"example":"DK","x-randomapi-param-group":"route"},{"name":"date","in":"query","description":"Date to check (YYYY-MM-DD). Defaults to today in the country's timezone. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-12-25","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["country","countryName"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"country,countryName"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["holiday"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"holiday"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/HolidaysCheckEnvelope"},{"$ref":"#/components/schemas/HolidaysCheckRecord"}]},"example":{"data":{"country":"DK","countryName":"Denmark","date":"2026-12-25","weekday":"Friday","isPublicHoliday":true,"isWeekend":false,"coverage":"complete","holiday":{"date":"2026-12-25","name":"Christmas Day","localName":"Juledag","type":"public","weekday":"Friday","observed":null}},"meta":{"endpoint":"holidays","route":"/check","params":{"country":"DK"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Public holidays","url":"https://randomapi.dev/apis/holidays"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/holidays/next":{"get":{"operationId":"get_holidays_next","tags":["datetime"],"summary":"The next upcoming holiday(s)","description":"Returns upcoming holidays from a start date (default: **today** in the country's timezone), nearest first. `count` controls how many (default 1). Authoritative sources: Official statutes and government pages of each of the 61 supported countries, cited per country by GET /api/holidays/countries; Gregorian Computus (Anonymous/Butcher algorithm) and the Orthodox Paschalion (Meeus's Julian algorithm); National Astronomical Observatory of Japan — 暦要項 (equinox holiday dates).","parameters":[{"name":"country","in":"query","description":"Country code (ISO 3166-1 alpha-2). 61 supported: AM, AR, AT, AU, BE, BG, BO, BR, BY, CA, CH, CO, CY, CZ, DE, DK, EE, ES, FI, FR, GB, GR, GT, HR, HU, IE, IN, IS, IT, JP, KE, KR, KZ, LI, LT, LU, LV, MA, MT, MX, NG, NL, NO, NZ, PA, PE, PH, PL, PT, RO, RS, SE, SG, SI, SK, SM, TH, TR, UA, US, ZA — unsupported codes return a 400 listing all options, never another country's holidays. `GET /api/holidays/countries` returns each country's scope, coverage and official source.","required":true,"schema":{"type":"string"},"example":"DK","x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Start date (exclusive of past, inclusive of today). Defaults to today in the country's timezone. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-06-11","x-randomapi-param-group":"route"},{"name":"type","in":"query","description":"Filter by holiday type: 'public' = statutory day off, 'bank' = banks closed, 'observance' = widely kept but not statutory.","required":false,"schema":{"type":"string","enum":["public","bank","observance","any"],"default":"public"},"example":"public","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to 1.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":1},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["date","name"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"date,name"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["daysUntil"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"daysUntil"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/HolidaysNextEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/HolidaysNextRecord"}}]},"example":{"data":[{"date":"2026-12-25","name":"Christmas Day","localName":"Juledag","type":"public","weekday":"Friday","observed":null,"daysUntil":197}],"meta":{"endpoint":"holidays","route":"/next","count":1,"params":{"country":"DK","type":"public"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"date\":\"2026-12-25\",\"name\":\"Christmas Day\",\"localName\":\"Juledag\",\"type\":\"public\",\"weekday\":\"Friday\",\"observed\":null,\"daysUntil\":197}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Public holidays","url":"https://randomapi.dev/apis/holidays"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/holidays/countries":{"get":{"operationId":"get_holidays_countries","tags":["datetime"],"summary":"Every supported country with its scope, coverage and official source","description":"The auditable index of the holiday engine: what each country's ruleset covers, whether that coverage is complete or a documented subset, and the government source every rule was verified against. Authoritative sources: Official statutes and government pages of each of the 61 supported countries, cited per country by GET /api/holidays/countries; Gregorian Computus (Anonymous/Butcher algorithm) and the Orthodox Paschalion (Meeus's Julian algorithm); National Astronomical Observatory of Japan — 暦要項 (equinox holiday dates).","parameters":[{"name":"coverage","in":"query","description":"Filter by coverage: 'complete' = every nationwide public holiday is computed; 'partial' = some are deliberately excluded and named in coverageNote.","required":false,"schema":{"type":"string","enum":["any","complete","partial"],"default":"any"},"example":"partial","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["country","countryName"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"country,countryName"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["sources"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"sources"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/HolidaysCountriesEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/HolidaysCountriesRecord"}}]},"example":{"data":[{"country":"JP","countryName":"Japan","timezone":"Asia/Tokyo","coverage":"complete","coverageNote":null,"scope":"The national holidays (国民の祝日) of the Act on National Holidays…","weekend":["Saturday","Sunday"],"holidayRules":29,"verifiedFrom":1988,"verifiedTo":2099,"rulesVerified":"2026-07-29","sources":[{"label":"Cabinet Office of Japan — 国民の祝日について","url":"https://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html"}]}],"meta":{"endpoint":"holidays","route":"/countries","count":1,"params":{"coverage":"any"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"country\":\"JP\",\"countryName\":\"Japan\",\"timezone\":\"Asia/Tokyo\",\"coverage\":\"complete\",\"coverageNote\":null,\"scope\":\"The national holidays (国民の祝日) of the Act on National Holidays…\",\"weekend\":[\"Saturday\",\"Sunday\"],\"holidayRules\":29,\"verifiedFrom\":1988,\"verifiedTo\":2099,\"rulesVerified\":\"2026-07-29\",\"sources\":[{\"label\":\"Cabinet Office of Japan — 国民の祝日について\",\"url\":\"https://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html\"}]}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Public holidays","url":"https://randomapi.dev/apis/holidays"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/http-caching/freshness":{"get":{"operationId":"get_http_caching_freshness","tags":["developer"],"summary":"Storability, age, freshness lifetime and the stale-serving windows","description":"Evaluates one stored response against RFC 9111 §3 (storability), §4.2.1–§4.2.3 (freshness lifetime and current age) and RFC 5861 (stale windows). `now` defaults to the current instant, so a bare query answers “right now”. Authoritative source: RFC 9111 (HTTP Caching) and RFC 5861 stale-content extensions.","parameters":[{"name":"cacheControl","in":"query","description":"The response Cache-Control field value. Both token and quoted-string arguments are accepted; unrecognized directives are reported and ignored.","required":false,"schema":{"type":"string","maxLength":2048},"example":"public, max-age=60, s-maxage=600, stale-while-revalidate=30","x-randomapi-param-group":"route"},{"name":"date","in":"query","description":"The response Date header as an ISO 8601 instant. When omitted, the reception time is used (RFC 9110 §6.6.1). Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-15T10:00:00Z","x-randomapi-param-group":"route"},{"name":"expires","in":"query","description":"The response Expires header as an ISO 8601 instant. Used only when neither s-maxage (shared) nor max-age applies. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-15T10:10:00Z","x-randomapi-param-group":"route"},{"name":"age","in":"query","description":"The response Age header in seconds; feeds correctedAgeValue in the RFC 9111 §4.2.3 calculation.","required":false,"schema":{"type":"integer","minimum":0,"maximum":2147483648},"example":120,"x-randomapi-param-group":"route"},{"name":"lastModified","in":"query","description":"The response Last-Modified header as an ISO 8601 instant. Required for heuristic freshness. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-01T10:00:00Z","x-randomapi-param-group":"route"},{"name":"requestTime","in":"query","description":"When the request that produced this response was sent. Defaults to responseTime (a zero-delay exchange). Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-15T09:59:59Z","x-randomapi-param-group":"route"},{"name":"responseTime","in":"query","description":"When the response was received. Defaults to requestTime, then to the Date header, then to now. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-15T10:00:00Z","x-randomapi-param-group":"route"},{"name":"now","in":"query","description":"The instant to evaluate at. Defaults to the current time, which is echoed in the response and in meta.params. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-15T10:05:00Z","x-randomapi-param-group":"route"},{"name":"shared","in":"query","description":"Model a shared cache (proxy/CDN) rather than a private browser cache. Controls s-maxage, private and Authorization handling. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":false,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"heuristicFactor","in":"query","description":"Fraction of the Date − Last-Modified interval used for heuristic freshness. RFC 9111 §4.2.2 calls 10% typical but mandates no heuristic.","required":false,"schema":{"type":"number","minimum":0,"maximum":1,"default":0.1},"example":0.25,"x-randomapi-param-group":"route"},{"name":"authorization","in":"query","description":"Whether the request carried an Authorization header field, which restricts shared-cache storage under RFC 9111 §3.5. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"status","in":"query","description":"Response status code. Decides whether the response is final and whether RFC 9110 §15.1 makes it heuristically cacheable.","required":false,"schema":{"type":"integer","minimum":100,"maximum":599,"default":200},"example":404,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["now","requestTime"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"now,requestTime"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["withinStaleIfError"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"withinStaleIfError"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/HttpCachingFreshnessEnvelope"},{"$ref":"#/components/schemas/HttpCachingFreshnessRecord"}]},"example":{"data":{"now":"2026-01-15T10:05:00.000Z","requestTime":"2026-01-15T10:00:00.000Z","responseTime":"2026-01-15T10:00:00.000Z","shared":true,"heuristicallyCacheable":true,"storable":true,"storabilityReasons":[],"freshnessLifetimeSeconds":600,"freshnessSource":"s-maxage","apparentAge":0,"responseDelay":0,"correctedAgeValue":120,"correctedInitialAge":120,"residentTime":300,"currentAge":420,"fresh":true,"staleSeconds":0,"mustRevalidate":true,"requiresRevalidation":false,"staleWhileRevalidateWindow":30,"withinStaleWhileRevalidate":false,"staleIfErrorWindow":1200,"withinStaleIfError":false},"meta":{"endpoint":"http-caching","route":"/freshness","params":{"shared":true,"heuristicFactor":0.1,"authorization":false,"status":200},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for HTTP Cache Freshness API (RFC 9111)","url":"https://randomapi.dev/apis/http-caching"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/http-caching/parse":{"get":{"operationId":"get_http_caching_parse","tags":["developer"],"summary":"Parse and canonicalize Cache-Control directives","description":"Splits a Cache-Control field value into its directives, validates each argument against the grammar RFC 9111 defines for it, and reports duplicates, wrong-direction and unrecognized names. Authoritative source: RFC 9111 (HTTP Caching) and RFC 5861 stale-content extensions.","parameters":[{"name":"cacheControl","in":"query","description":"Cache-Control field value with 1–32 directives. Malformed syntax is a 400; unrecognized directive names are reported, not rejected.","required":true,"schema":{"type":"string","minLength":1,"maxLength":2048},"example":"public, max-age=60, s-maxage=600, stale-while-revalidate=30","x-randomapi-param-group":"route"},{"name":"direction","in":"query","description":"Which directive set to validate against: RFC 9111 §5.2.1 request directives or §5.2.2 response directives.","required":false,"schema":{"type":"string","enum":["request","response"],"default":"response"},"example":"request","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["cacheControl","direction"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"cacheControl,direction"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["canonical"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"canonical"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/HttpCachingParseEnvelope"},{"$ref":"#/components/schemas/HttpCachingParseRecord"}]},"example":{"data":{"cacheControl":"public, max-age=60","direction":"response","count":2,"directives":[{"name":"public","value":null,"seconds":null,"quoted":false,"duplicate":false,"recognized":true,"applicable":true,"problem":null,"reference":"RFC 9111 Section 5.2.2.9"},{"name":"max-age","value":"60","seconds":60,"quoted":false,"duplicate":false,"recognized":true,"applicable":true,"problem":null,"reference":"RFC 9111 Section 5.2.2.1"}],"duplicates":[],"unrecognized":["immutable"],"notApplicable":[],"invalid":[],"canonical":"public, max-age=60"},"meta":{"endpoint":"http-caching","route":"/parse","params":{"cacheControl":"public, max-age=60, s-maxage=600, stale-while-revalidate=30","direction":"response"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for HTTP Cache Freshness API (RFC 9111)","url":"https://randomapi.dev/apis/http-caching"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/http-fields":{"get":{"operationId":"get_http_fields_root","tags":["developer"],"summary":"List and filter every registered HTTP field name","description":"Complete pinned IANA HTTP field-name registry with status, Structured Field type, references, search and case-insensitive lookup. Authoritative source: IANA Hypertext Transfer Protocol Field Name Registry (updated 2026-07-01).","parameters":[{"name":"status","in":"query","description":"Filter by normalized IANA registration status; returned spelling stays source-exact.","required":false,"schema":{"type":"string","enum":["any","permanent","provisional","deprecated","obsoleted"],"default":"any"},"example":"deprecated","x-randomapi-param-group":"route"},{"name":"structuredType","in":"query","description":"Filter by RFC 9651 Structured Field type, or 'none' for rows without one.","required":false,"schema":{"type":"string","enum":["any","dictionary","list","item","token","none"],"default":"any"},"example":"dictionary","x-randomapi-param-group":"route"},{"name":"search","in":"query","description":"Case-insensitive substring search across name, reference and comments.","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"example":"digest","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["name","status"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"name,status"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["comments"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"comments"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/HttpFieldsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/HttpFieldsRootRecord"}}]},"example":{"data":[{"name":"Accept","status":"permanent","structuredType":"List","reference":"[RFC 9110, Section 12.5.1: HTTP Semantics]","comments":"(reserved)"}],"meta":{"endpoint":"http-fields","count":1,"params":{"status":"any","structuredType":"any"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"name\":\"Accept\",\"status\":\"permanent\",\"structuredType\":\"List\",\"reference\":\"[RFC 9110, Section 12.5.1: HTTP Semantics]\",\"comments\":\"(reserved)\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for HTTP field name registry","url":"https://randomapi.dev/apis/http-fields"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/http-fields/lookup":{"get":{"operationId":"get_http_fields_lookup","tags":["developer"],"summary":"Look up one registered HTTP field name","description":"Complete pinned IANA HTTP field-name registry with status, Structured Field type, references, search and case-insensitive lookup. Authoritative source: IANA Hypertext Transfer Protocol Field Name Registry (updated 2026-07-01).","parameters":[{"name":"name","in":"query","description":"Registered HTTP field name; matching is case-insensitive.","required":true,"schema":{"type":"string","minLength":1,"maxLength":128},"example":"Content-Type","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["name","status"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"name,status"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["comments"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"comments"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/HttpFieldsLookupEnvelope"},{"$ref":"#/components/schemas/HttpFieldsLookupRecord"}]},"example":{"data":{"name":"Accept","status":"permanent","structuredType":"List","reference":"[RFC 9110, Section 12.5.1: HTTP Semantics]","comments":"(reserved)"},"meta":{"endpoint":"http-fields","route":"/lookup","params":{"name":"Content-Type"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"The requested name is absent from the pinned IANA HTTP field-name registry.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?name=Contnt-Type"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for HTTP field name registry","url":"https://randomapi.dev/apis/http-fields"},"x-randomapi-kind":"real","x-randomapi-mode":"lookup"}},"/api/http-methods":{"get":{"operationId":"get_http_methods_root","tags":["developer"],"summary":"List and filter registered HTTP methods","description":"Filters compose with AND semantics. With no filters, all registry rows are returned. Zero matches produce an empty list plus a warning. Authoritative source: IANA HTTP Method Registry (updated 2026-06-17).","parameters":[{"name":"safe","in":"query","description":"Keep only methods whose IANA Safe flag equals this value. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean"},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"idempotent","in":"query","description":"Keep only methods whose IANA Idempotent flag equals this value. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean"},"example":false,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"search","in":"query","description":"Case-insensitive substring search against the registered method token.","required":false,"schema":{"type":"string","maxLength":32},"example":"QUERY","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["method","safe"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"method,safe"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["reference"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"reference"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/HttpMethodsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/HttpMethodsRootRecord"}}]},"example":{"data":[{"method":"GET","safe":true,"idempotent":true,"reference":"[RFC9110, Section 9.3.1]"}],"meta":{"endpoint":"http-methods","count":1,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"method\":\"GET\",\"safe\":true,\"idempotent\":true,\"reference\":\"[RFC9110, Section 9.3.1]\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for HTTP methods","url":"https://randomapi.dev/apis/http-methods"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/http-methods/lookup":{"get":{"operationId":"get_http_methods_lookup","tags":["developer"],"summary":"Look up one registered HTTP method","description":"Method tokens are matched case-insensitively and echoed in canonical IANA spelling. Unknown tokens return an explicit 404. Authoritative source: IANA HTTP Method Registry (updated 2026-06-17).","parameters":[{"name":"method","in":"query","description":"Registered HTTP method token, case-insensitive (for example GET, query or PROPFIND).","required":true,"schema":{"type":"string","minLength":1,"maxLength":32},"example":"GET","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["method","safe"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"method,safe"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["reference"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"reference"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/HttpMethodsLookupEnvelope"},{"$ref":"#/components/schemas/HttpMethodsLookupRecord"}]},"example":{"data":{"method":"GET","safe":true,"idempotent":true,"reference":"[RFC9110, Section 9.3.1]"},"meta":{"endpoint":"http-methods","route":"/lookup","params":{"method":"GET"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"The requested token is absent from the pinned IANA HTTP method registry.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?method=FETCH"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for HTTP methods","url":"https://randomapi.dev/apis/http-methods"},"x-randomapi-kind":"real","x-randomapi-mode":"lookup"}},"/api/http-preconditions/evaluate":{"get":{"operationId":"get_http_preconditions_evaluate","tags":["developer"],"summary":"Evaluate HTTP request preconditions against a current representation","description":"Evaluate RFC 9110 conditional requests in the required precedence order, including strong/weak ETags, wildcard resources, 304 and 412 decisions. Authoritative source: RFC 9110 HTTP conditional request semantics.","parameters":[{"name":"method","in":"query","description":"Registered method token. GET/HEAD use 304 for not-modified, representation-changing methods use 412, and CONNECT/OPTIONS/TRACE/PRI ignore every precondition.","required":false,"schema":{"type":"string","enum":["ACL","BASELINE-CONTROL","BIND","CHECKIN","CHECKOUT","CONNECT","COPY","DELETE","GET","HEAD","LABEL","LINK","LOCK","MERGE","MKACTIVITY","MKCALENDAR","MKCOL","MKREDIRECTREF","MKWORKSPACE","MOVE","OPTIONS","ORDERPATCH","PATCH","POST","PRI","PROPFIND","PROPPATCH","PUT","QUERY","REBIND","REPORT","SEARCH","TRACE","UNBIND","UNCHECKOUT","UNLINK","UNLOCK","UPDATE","UPDATEREDIRECTREF","VERSION-CONTROL"],"default":"GET"},"example":"PUT","x-randomapi-param-group":"route"},{"name":"exists","in":"query","description":"Whether a current selected representation exists; controls wildcard entity-tag conditions. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"etag","in":"query","description":"Current representation ETag, including quotes and optional W/ prefix.","required":false,"schema":{"type":"string","maxLength":512},"example":"\"revision-7\"","x-randomapi-param-group":"route"},{"name":"lastModified","in":"query","description":"Current Last-Modified value in canonical IMF-fixdate form.","required":false,"schema":{"type":"string","maxLength":64},"example":"Sun, 06 Nov 1994 08:49:37 GMT","x-randomapi-param-group":"route"},{"name":"ifMatch","in":"query","description":"If-Match field value: * or a bounded comma-separated entity-tag list.","required":false,"schema":{"type":"string","maxLength":2048},"example":"\"revision-7\"","x-randomapi-param-group":"route"},{"name":"ifNoneMatch","in":"query","description":"If-None-Match field value: * or a bounded comma-separated entity-tag list.","required":false,"schema":{"type":"string","maxLength":2048},"example":"W/\"preview\", \"revision-7\"","x-randomapi-param-group":"route"},{"name":"ifModifiedSince","in":"query","description":"If-Modified-Since in any RFC 9110 HTTP-date form. Invalid values are ignored, matching HTTP behavior.","required":false,"schema":{"type":"string","maxLength":64},"example":"Sun, 06 Nov 1994 08:49:37 GMT","x-randomapi-param-group":"route"},{"name":"ifUnmodifiedSince","in":"query","description":"If-Unmodified-Since in any RFC 9110 HTTP-date form. Ignored when If-Match is present.","required":false,"schema":{"type":"string","maxLength":64},"example":"Sun, 06 Nov 1994 08:49:37 GMT","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["method","exists"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"method,exists"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["evaluations"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"evaluations"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/HttpPreconditionsEvaluateEnvelope"},{"$ref":"#/components/schemas/HttpPreconditionsEvaluateRecord"}]},"example":{"data":{"method":"PUT","exists":true,"currentEtag":"\"revision-7\"","lastModified":"Sun, 06 Nov 1994 08:49:37 GMT","decision":"proceed","status":null,"controllingCondition":null,"evaluations":[{"condition":"If-Match","result":"true","detail":"The current representation strongly matches the condition."}]},"meta":{"endpoint":"http-preconditions","route":"/evaluate","params":{"method":"GET","exists":true},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for HTTP precondition evaluator","url":"https://randomapi.dev/apis/http-preconditions"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/http-ranges/parse":{"get":{"operationId":"get_http_ranges_parse","tags":["developer"],"summary":"Parse and resolve a byte Range field against a representation size","description":"Parse and resolve bounded RFC 9110 byte Range sets, plus validate satisfied, unknown-length and unsatisfied Content-Range field values. Authoritative source: RFC 9110 HTTP Semantics — Range Requests.","parameters":[{"name":"range","in":"query","description":"RFC 9110 bytes Range value with 1–16 closed, open or suffix items.","required":true,"schema":{"type":"string","minLength":8,"maxLength":1024},"example":"bytes=0-499,-200","x-randomapi-param-group":"route"},{"name":"size","in":"query","description":"Current representation length in bytes, bounded to JavaScript's exact safe-integer range.","required":true,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991},"example":1234,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["range","unit"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"range,unit"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["unsatisfiedContentRange"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"unsatisfiedContentRange"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/HttpRangesParseEnvelope"},{"$ref":"#/components/schemas/HttpRangesParseRecord"}]},"example":{"data":{"range":"bytes=0-499,-200","unit":"bytes","size":1234,"requestedCount":2,"satisfiableCount":2,"satisfiable":true,"ranges":[{"requested":"0-499","kind":"closed","satisfiable":true,"start":0,"end":499,"length":500,"contentRange":"bytes 0-499/1234"}],"contentRanges":["bytes 0-499/1234","bytes 1034-1233/1234"],"unsatisfiedContentRange":null},"meta":{"endpoint":"http-ranges","route":"/parse","params":{"range":"bytes=0-499,-200","size":1234},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for HTTP byte ranges","url":"https://randomapi.dev/apis/http-ranges"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/http-ranges/content-range":{"get":{"operationId":"get_http_ranges_content_range","tags":["developer"],"summary":"Parse and validate one byte Content-Range field value","description":"Parse and resolve bounded RFC 9110 byte Range sets, plus validate satisfied, unknown-length and unsatisfied Content-Range field values. Authoritative source: RFC 9110 HTTP Semantics — Range Requests.","parameters":[{"name":"value","in":"query","description":"RFC 9110 bytes Content-Range value: inclusive range/size, range/* or */size.","required":true,"schema":{"type":"string","minLength":9,"maxLength":512},"example":"bytes 0-499/1234","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["value","unit"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"value,unit"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["completeLengthKnown"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"completeLengthKnown"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/HttpRangesContentRangeEnvelope"},{"$ref":"#/components/schemas/HttpRangesContentRangeRecord"}]},"example":{"data":{"value":"bytes 0-499/1234","unit":"bytes","satisfied":true,"start":0,"end":499,"length":500,"size":1234,"completeLengthKnown":true},"meta":{"endpoint":"http-ranges","route":"/content-range","params":{"value":"bytes 0-499/1234"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for HTTP byte ranges","url":"https://randomapi.dev/apis/http-ranges"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/http-statuses":{"get":{"operationId":"get_http_statuses_root","tags":["developer"],"summary":"List status codes (optionally by category)","description":"The complete IANA HTTP status code registry with practical descriptions, defining RFCs and a retryable flag — list by category or look up a single code. Authoritative sources: IANA HTTP Status Code Registry (snapshot 2025-09-15); RFC 9110 — HTTP Semantics (status-code definitions).","parameters":[{"name":"category","in":"query","description":"Only return codes in this class.","required":false,"schema":{"type":"string","enum":["informational","success","redirect","clientError","serverError","any"],"default":"any"},"example":"clientError","x-randomapi-param-group":"route"},{"name":"retryable","in":"query","description":"Only return codes that are (or are not) sensibly retryable. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean"},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["code","reason"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"code,reason"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["retryable"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"retryable"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/HttpStatusesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/HttpStatusesRootRecord"}}]},"example":{"data":[{"code":429,"reason":"Too Many Requests","category":"clientError","description":"The client exceeded a rate limit; Retry-After indicates how long to back off.","rfc":"RFC 6585","retryable":true}],"meta":{"endpoint":"http-statuses","count":1,"params":{"category":"any"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"code\":429,\"reason\":\"Too Many Requests\",\"category\":\"clientError\",\"description\":\"The client exceeded a rate limit; Retry-After indicates how long to back off.\",\"rfc\":\"RFC 6585\",\"retryable\":true}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for HTTP status codes","url":"https://randomapi.dev/apis/http-statuses"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/http-statuses/lookup":{"get":{"operationId":"get_http_statuses_lookup","tags":["developer"],"summary":"Look up a single status code","description":"The complete IANA HTTP status code registry with practical descriptions, defining RFCs and a retryable flag — list by category or look up a single code. Authoritative sources: IANA HTTP Status Code Registry (snapshot 2025-09-15); RFC 9110 — HTTP Semantics (status-code definitions).","parameters":[{"name":"code","in":"query","description":"The status code to look up.","required":true,"schema":{"type":"integer","minimum":100,"maximum":599},"example":418,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["code","reason"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"code,reason"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["retryable"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"retryable"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/HttpStatusesLookupEnvelope"},{"$ref":"#/components/schemas/HttpStatusesLookupRecord"}]},"example":{"data":{"code":429,"reason":"Too Many Requests","category":"clientError","description":"The client exceeded a rate limit; Retry-After indicates how long to back off.","rfc":"RFC 6585","retryable":true},"meta":{"endpoint":"http-statuses","route":"/lookup","params":{"code":418},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"The requested in-range number is not a registered IANA HTTP status code.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?code=499"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for HTTP status codes","url":"https://randomapi.dev/apis/http-statuses"},"x-randomapi-kind":"real","x-randomapi-mode":"lookup"}},"/api/ibans":{"get":{"operationId":"get_ibans_root","tags":["commerce"],"summary":"Generate synthetic values for limited IBAN structure checks","description":"Generate synthetic IBAN-shaped values for 20 countries with matching length, broad BBAN character classes and international MOD-97, or inspect the same checks.","parameters":[{"name":"country","in":"query","description":"Two-letter country code (ISO 3166-1 alpha-2, case-insensitive) selecting the documented total length and broad BBAN character classes. Omit for a random country shape per record. Supported: AT, BE, CH, CZ, DE, DK, EE, ES, FI, FR, GB, IE, IS, IT, LU, NL, NO, PL, PT, SE; anything else is a 400 listing the options.","required":false,"schema":{"type":"string","minLength":2,"maxLength":2},"example":"DK","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["iban","formatted"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"iban,formatted"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["bban"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"bban"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/IbansRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/IbansRootRecord"}}]},"example":{"data":[{"iban":"DE89370400440532013000","formatted":"DE89 3704 0044 0532 0130 00","country":"DE","checkDigits":"89","bban":"370400440532013000"}],"meta":{"endpoint":"ibans","count":1,"seed":42,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"iban\":\"DE89370400440532013000\",\"formatted\":\"DE89 3704 0044 0532 0130 00\",\"country\":\"DE\",\"checkDigits\":\"89\",\"bban\":\"370400440532013000\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for IBANs","url":"https://randomapi.dev/apis/ibans"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/ibans/validate":{"get":{"operationId":"get_ibans_validate","tags":["commerce"],"summary":"Run limited structural and international MOD-97 checks","description":"Generate synthetic IBAN-shaped values for 20 countries with matching length, broad BBAN character classes and international MOD-97, or inspect the same checks.","parameters":[{"name":"value","in":"query","description":"Compact or ASCII-space paper input for the endpoint's limited supported-country, length, broad-BBAN and international MOD-97 checks.","required":true,"schema":{"type":"string","minLength":1,"maxLength":64},"example":"DE89 3704 0044 0532 0130 00","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["input","canonical"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"input,canonical"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["reasons"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"reasons"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/IbansValidateEnvelope"},{"$ref":"#/components/schemas/IbansValidateRecord"}]},"example":{"data":{"input":"de89 3704 0044 0532 0130 00","canonical":"DE89370400440532013000","country":"DE","supportedCountry":true,"expectedLength":22,"actualLength":22,"lengthValid":true,"bban":"370400440532013000","bbanPattern":"18n","bbanValid":true,"mod97Valid":true,"valid":true,"reasons":[]},"meta":{"endpoint":"ibans","route":"/validate","params":{"value":"DE89 3704 0044 0532 0130 00"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for IBANs","url":"https://randomapi.dev/apis/ibans"},"x-randomapi-kind":"mock","x-randomapi-mode":"compute"}},"/api/images/placeholder":{"get":{"operationId":"get_images_placeholder","tags":["design"],"summary":"Render a placeholder SVG at any size","description":"A solid (or gradient) rectangle with a centered, auto-sized label. Defaults to a 600×400 dark canvas labeled with its own dimensions.","parameters":[{"name":"width","in":"query","description":"Image width in pixels (8–4000).","required":false,"schema":{"type":"integer","minimum":8,"maximum":4000,"default":600},"example":1200,"x-randomapi-param-group":"route"},{"name":"height","in":"query","description":"Image height in pixels (8–4000).","required":false,"schema":{"type":"integer","minimum":8,"maximum":4000,"default":400},"example":630,"x-randomapi-param-group":"route"},{"name":"text","in":"query","description":"Centered label (up to 80 characters, XML-escaped). Defaults to '<width>×<height>', e.g. '600×400'.","required":false,"schema":{"type":"string","maxLength":80},"example":"OG Image","x-randomapi-param-group":"route"},{"name":"bg","in":"query","description":"Background color as exactly 6 hex digits without '#' (e.g. 0ea5e9). Invalid values are a 400. Default 1c1917 (dark stone).","required":false,"schema":{"type":"string","default":"1c1917"},"example":"0ea5e9","x-randomapi-param-group":"route"},{"name":"fg","in":"query","description":"Label color as exactly 6 hex digits without '#'. Invalid values are a 400. Default fafaf9 (off-white).","required":false,"schema":{"type":"string","default":"fafaf9"},"example":"f8fafc","x-randomapi-param-group":"route"},{"name":"gradient","in":"query","description":"Render the background as a diagonal two-stop gradient from 'bg' to a variant hue-rotated 30° with lightness shifted 12% (visible even for grays). Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"}],"responses":{"200":{"description":"SVG image generated from the validated query parameters.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"Cache-Control":{"$ref":"#/components/headers/ImageCacheControl"}},"content":{"image/svg+xml":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Placeholder images","url":"https://randomapi.dev/apis/images"},"x-randomapi-kind":"mock","x-randomapi-mode":"image"}},"/api/incidents":{"get":{"operationId":"get_incidents_root","tags":["developer"],"summary":"Generate bounded fictional incident timelines","description":"Generate coherent status-page incidents with affected components, ordered updates, exact lifecycle dates and impact/status filters.","parameters":[{"name":"status","in":"query","description":"Pin the exact lifecycle progress and nullable-date mask.","required":false,"schema":{"type":"string","enum":["investigating","identified","monitoring","resolved"]},"example":"monitoring","x-randomapi-param-group":"route"},{"name":"impact","in":"query","description":"Pin minor, major or critical impact and derived component state.","required":false,"schema":{"type":"string","enum":["minor","major","critical"]},"example":"major","x-randomapi-param-group":"route"},{"name":"component","in":"query","description":"Guarantee this component is included exactly once.","required":false,"schema":{"type":"string","enum":["api","dashboard","webhooks","uploads","billing","authentication"]},"example":"api","x-randomapi-param-group":"route"},{"name":"componentCount","in":"query","description":"Exact number of distinct affected components.","required":false,"schema":{"type":"integer","minimum":1,"maximum":4,"default":2},"example":3,"x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Earliest creation time. With only from, to resolves 30 elapsed days later; with neither, defaults 30 UTC days before today. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-04-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Latest creation time. With only to, from resolves 30 elapsed days earlier; with neither, defaults to today's UTC end. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-04-30T23:59:59.999Z","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","title"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,title"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["updates"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"updates"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/IncidentsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/IncidentsRootRecord"}}]},"example":{"data":[{"id":"inc_72d9ae192c00_00","title":"Major disruption affecting Public API","status":"monitoring","impact":"major","createdAt":"2026-04-12T09:00:00.000Z","updatedAt":"2026-04-12T10:20:00.000Z","identifiedAt":"2026-04-12T09:20:00.000Z","monitoringAt":"2026-04-12T10:20:00.000Z","resolvedAt":null,"durationMinutes":null,"url":"https://status.example.com/incidents/inc_demo","affectedComponents":[{"id":"api","name":"Public API","status":"partialOutage"}],"updates":[{"id":"upd_demo_1","status":"investigating","message":"Investigating fictional errors affecting Public API.","createdAt":"2026-04-12T09:00:00.000Z"}]}],"meta":{"endpoint":"incidents","count":1,"seed":42,"params":{"componentCount":2},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"inc_72d9ae192c00_00\",\"title\":\"Major disruption affecting Public API\",\"status\":\"monitoring\",\"impact\":\"major\",\"createdAt\":\"2026-04-12T09:00:00.000Z\",\"updatedAt\":\"2026-04-12T10:20:00.000Z\",\"identifiedAt\":\"2026-04-12T09:20:00.000Z\",\"monitoringAt\":\"2026-04-12T10:20:00.000Z\",\"resolvedAt\":null,\"durationMinutes\":null,\"url\":\"https://status.example.com/incidents/inc_demo\",\"affectedComponents\":[{\"id\":\"api\",\"name\":\"Public API\",\"status\":\"partialOutage\"}],\"updates\":[{\"id\":\"upd_demo_1\",\"status\":\"investigating\",\"message\":\"Investigating fictional errors affecting Public API.\",\"createdAt\":\"2026-04-12T09:00:00.000Z\"}]}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Incident fixtures","url":"https://randomapi.dev/apis/incidents"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/internet":{"get":{"operationId":"get_internet_root","tags":["internet"],"summary":"Generate internet primitives (IPs, MACs, domains, URLs, ports)","description":"Random internet building blocks — valid IPv4/IPv6 addresses, locally-administered MACs, non-resolvable .test domains and URLs, slugs, ports and TLDs.","parameters":[{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["ipv4","ipv6"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"ipv4,ipv6"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["tld"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"tld"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/InternetRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/InternetRootRecord"}}]},"example":{"data":[{"ipv4":"84.231.17.92","ipv6":"2b3c:09f1:7a2e:441d:8c05:e7b9:1f63:a04d","mac":"8e:2f:6a:b1:09:d4","domain":"fuzzy-socket.test","url":"https://fuzzy-socket.test/quarterly-revenue-report","slug":"quarterly-revenue-report","port":8443,"tld":"io"}],"meta":{"endpoint":"internet","count":1,"seed":42,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"ipv4\":\"84.231.17.92\",\"ipv6\":\"2b3c:09f1:7a2e:441d:8c05:e7b9:1f63:a04d\",\"mac\":\"8e:2f:6a:b1:09:d4\",\"domain\":\"fuzzy-socket.test\",\"url\":\"https://fuzzy-socket.test/quarterly-revenue-report\",\"slug\":\"quarterly-revenue-report\",\"port\":8443,\"tld\":\"io\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Internet","url":"https://randomapi.dev/apis/internet"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/inventory":{"get":{"operationId":"get_inventory_root","tags":["commerce"],"summary":"Generate reconciled fictional inventory snapshots","description":"Generate warehouse inventory with exact location sums, stock-status arithmetic, reorder decisions and bounded incoming stock.","parameters":[{"name":"category","in":"query","description":"Only generate products in this category.","required":false,"schema":{"type":"string","enum":["electronics","apparel","home","books","grocery"]},"example":"electronics","x-randomapi-param-group":"route"},{"name":"warehouse","in":"query","description":"Pin the exact fictional warehouse.","required":false,"schema":{"type":"string","enum":["north","east","central","west"]},"example":"central","x-randomapi-param-group":"route"},{"name":"stockStatus","in":"query","description":"Pin the arithmetic stock state.","required":false,"schema":{"type":"string","enum":["inStock","lowStock","outOfStock","backorder"]},"example":"lowStock","x-randomapi-param-group":"route"},{"name":"minAvailable","in":"query","description":"Minimum total available units. Positive values exclude outOfStock/backorder.","required":false,"schema":{"type":"integer","minimum":0,"maximum":100,"default":0},"example":10,"x-randomapi-param-group":"route"},{"name":"locationCount","in":"query","description":"Exact number of storage-bin locations.","required":false,"schema":{"type":"integer","minimum":1,"maximum":4,"default":2},"example":3,"x-randomapi-param-group":"route"},{"name":"includeIncoming","in":"query","description":"Whether bounded incoming purchase orders may be included. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":false,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"asOf","in":"query","description":"Snapshot instant. Defaults to the end of the current UTC day. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-06-15T23:59:59.999Z","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","sku"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,sku"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["asOf"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"asOf"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/InventoryRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/InventoryRootRecord"}}]},"example":{"data":[{"id":"invstk_8b1d4900_00","sku":"SKU-ABCD2345","product":{"id":"prd_demo","name":"Demo USB Hub","category":"electronics"},"warehouse":{"id":"central","name":"Central Example Warehouse"},"stockStatus":"lowStock","onHand":34,"reserved":12,"available":22,"backordered":0,"reorderPoint":25,"needsReorder":true,"incomingQuantity":80,"nextRestockAt":"2026-06-18T23:59:59.999Z","locations":[{"id":"central-A01","onHand":20,"reserved":5,"available":15}],"incoming":[{"purchaseOrderId":"po_demo","quantity":80,"expectedAt":"2026-06-18T23:59:59.999Z"}],"asOf":"2026-06-15T23:59:59.999Z"}],"meta":{"endpoint":"inventory","count":1,"seed":42,"params":{"minAvailable":0,"locationCount":2,"includeIncoming":true},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"invstk_8b1d4900_00\",\"sku\":\"SKU-ABCD2345\",\"product\":{\"id\":\"prd_demo\",\"name\":\"Demo USB Hub\",\"category\":\"electronics\"},\"warehouse\":{\"id\":\"central\",\"name\":\"Central Example Warehouse\"},\"stockStatus\":\"lowStock\",\"onHand\":34,\"reserved\":12,\"available\":22,\"backordered\":0,\"reorderPoint\":25,\"needsReorder\":true,\"incomingQuantity\":80,\"nextRestockAt\":\"2026-06-18T23:59:59.999Z\",\"locations\":[{\"id\":\"central-A01\",\"onHand\":20,\"reserved\":5,\"available\":15}],\"incoming\":[{\"purchaseOrderId\":\"po_demo\",\"quantity\":80,\"expectedAt\":\"2026-06-18T23:59:59.999Z\"}],\"asOf\":\"2026-06-15T23:59:59.999Z\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Inventory fixtures","url":"https://randomapi.dev/apis/inventory"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/invoices":{"get":{"operationId":"get_invoices_root","tags":["commerce"],"summary":"Generate exact fake invoices","description":"Exact fake invoices with line items, ISO currency precision, tax, collectible balances and status-consistent issue, due and payment dates.","parameters":[{"name":"status","in":"query","description":"Pin the invoice status. Omit for a weighted mix.","required":false,"schema":{"type":"string","enum":["draft","sent","paid","overdue","void"]},"example":"overdue","x-randomapi-param-group":"route"},{"name":"currency","in":"query","description":"Active ISO 4217 currency code. Case-insensitive; amounts use the currency's 0, 2 or 3 minor-unit digits.","required":false,"schema":{"type":"string","default":"USD"},"example":"EUR","x-randomapi-param-group":"route"},{"name":"minItems","in":"query","description":"Minimum number of invoice lines (inclusive).","required":false,"schema":{"type":"integer","minimum":1,"maximum":10,"default":1},"example":2,"x-randomapi-param-group":"route"},{"name":"maxItems","in":"query","description":"Maximum number of invoice lines (inclusive). Must be ≥ minItems.","required":false,"schema":{"type":"integer","minimum":1,"maximum":10,"default":4},"example":6,"x-randomapi-param-group":"route"},{"name":"taxRate","in":"query","description":"Tax percentage, 0–30, with at most two decimal places. Applied using integer basis points.","required":false,"schema":{"type":"number","minimum":0,"maximum":30,"default":20},"example":8.25,"x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Earliest issueDate. Defaults to 365 days before the resolved to date. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2025-01-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Latest issueDate and as-of date for overdue status (through 9998-12-31). Defaults to today's UTC boundary. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2025-12-31","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","invoiceNumber"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,invoiceNumber"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["balanceDue"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"balanceDue"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/InvoicesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/InvoicesRootRecord"}}]},"example":{"data":[{"id":"inv_93c0a5de8f340002","invoiceNumber":"INV-2025-X8FQ-001","status":"paid","currency":"USD","seller":{"id":"org_123","name":"Northwind Labs","email":"billing@example.com","address":"42 Market Street"},"buyer":{"id":"cus_123","name":"Avery Chen","email":"avery.chen@example.net"},"lineItems":[{"description":"Design services","quantity":2,"unitPrice":120,"lineTotal":240}],"issueDate":"2025-04-01","dueDate":"2025-05-01","paidAt":null,"subtotal":240,"tax":48,"total":288,"amountPaid":0,"balanceDue":288}],"meta":{"endpoint":"invoices","count":1,"seed":42,"params":{"currency":"USD","minItems":1,"maxItems":4,"taxRate":20},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"inv_93c0a5de8f340002\",\"invoiceNumber\":\"INV-2025-X8FQ-001\",\"status\":\"paid\",\"currency\":\"USD\",\"seller\":{\"id\":\"org_123\",\"name\":\"Northwind Labs\",\"email\":\"billing@example.com\",\"address\":\"42 Market Street\"},\"buyer\":{\"id\":\"cus_123\",\"name\":\"Avery Chen\",\"email\":\"avery.chen@example.net\"},\"lineItems\":[{\"description\":\"Design services\",\"quantity\":2,\"unitPrice\":120,\"lineTotal\":240}],\"issueDate\":\"2025-04-01\",\"dueDate\":\"2025-05-01\",\"paidAt\":null,\"subtotal\":240,\"tax\":48,\"total\":288,\"amountPaid\":0,\"balanceDue\":288}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Invoices","url":"https://randomapi.dev/apis/invoices"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/ip-special-ranges":{"get":{"operationId":"get_ip_special_ranges_root","tags":["internet"],"summary":"List and filter the pinned IANA special-purpose registries","description":"Browse IANA IPv4 and IPv6 special-purpose registries or classify an address with deterministic most-specific-prefix matching. Authoritative source: IANA IPv4 Special-Purpose Address Registry (snapshot 2025-10-09; IPv6 registry linked in references).","parameters":[{"name":"family","in":"query","description":"Return both registries or only one address family.","required":false,"schema":{"type":"string","enum":["any","ipv4","ipv6"],"default":"any"},"example":"ipv4","x-randomapi-param-group":"route"},{"name":"globallyReachable","in":"query","description":"Keep rows whose IANA Globally Reachable value exactly equals this boolean; null rows do not match. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean"},"example":false,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"forwardable","in":"query","description":"Keep rows whose IANA Forwardable value exactly equals this boolean; null rows do not match. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean"},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"search","in":"query","description":"Case-insensitive substring search across CIDR, IANA name and reference.","required":false,"schema":{"type":"string","minLength":1,"maxLength":80},"example":"documentation","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["family","cidr"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"family,cidr"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["reservedByProtocol"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"reservedByProtocol"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/IpSpecialRangesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/IpSpecialRangesRootRecord"}}]},"example":{"data":[{"family":4,"cidr":"192.0.2.0/24","name":"Documentation (TEST-NET-1)","reference":"[RFC5737]","allocationDate":"2010-01","terminationDate":null,"source":false,"destination":false,"forwardable":false,"globallyReachable":false,"reservedByProtocol":false}],"meta":{"endpoint":"ip-special-ranges","count":1,"params":{"family":"any"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"family\":4,\"cidr\":\"192.0.2.0/24\",\"name\":\"Documentation (TEST-NET-1)\",\"reference\":\"[RFC5737]\",\"allocationDate\":\"2010-01\",\"terminationDate\":null,\"source\":false,\"destination\":false,\"forwardable\":false,\"globallyReachable\":false,\"reservedByProtocol\":false}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for IP special-purpose ranges","url":"https://randomapi.dev/apis/ip-special-ranges"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/ip-special-ranges/classify":{"get":{"operationId":"get_ip_special_ranges_classify","tags":["internet"],"summary":"Classify one IP address using most-specific IANA prefix matching","description":"Browse IANA IPv4 and IPv6 special-purpose registries or classify an address with deterministic most-specific-prefix matching. Authoritative source: IANA IPv4 Special-Purpose Address Registry (snapshot 2025-10-09; IPv6 registry linked in references).","parameters":[{"name":"ip","in":"query","description":"Strict IPv4 or IPv6 address. Output and meta.params use canonical notation.","required":true,"schema":{"type":"string","minLength":2,"maxLength":45},"example":"192.0.0.9","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["ip","family"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"ip,family"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["registryVersion"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"registryVersion"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/IpSpecialRangesClassifyEnvelope"},{"$ref":"#/components/schemas/IpSpecialRangesClassifyRecord"}]},"example":{"data":{"ip":"192.0.0.9","family":4,"isSpecialPurpose":true,"mostSpecific":{"cidr":"192.0.0.9/32","name":"Port Control Protocol Anycast"},"matches":[{"cidr":"192.0.0.9/32"},{"cidr":"192.0.0.0/24"}],"registryVersion":"2025-10-09"},"meta":{"endpoint":"ip-special-ranges","route":"/classify","params":{"ip":"192.0.0.9"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for IP special-purpose ranges","url":"https://randomapi.dev/apis/ip-special-ranges"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/ipv4-cidr/parse":{"get":{"operationId":"get_ipv4_cidr_parse","tags":["internet"],"summary":"Calculate an IPv4 CIDR block's masks, boundaries and host range","description":"Parse, split and compare strict IPv4 CIDR blocks or test membership, with canonical unsigned boundaries, exact subnet counts and no truncation. Authoritative source: IETF IPv4 CIDR architecture (RFC 4632 and RFC 3021).","parameters":[{"name":"cidr","in":"query","description":"Strict dotted-decimal IPv4 CIDR. The address may be any member of the block; responses and meta.params canonicalize it to the network address.","required":true,"schema":{"type":"string","minLength":9,"maxLength":18},"example":"192.0.2.10/24","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["cidr","inputIp"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"cidr,inputIp"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["usableHosts"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"usableHosts"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/Ipv4CidrParseEnvelope"},{"$ref":"#/components/schemas/Ipv4CidrParseRecord"}]},"example":{"data":{"cidr":"192.0.2.0/24","inputIp":"192.0.2.10","network":"192.0.2.0","broadcast":"192.0.2.255","prefix":24,"netmask":"255.255.255.0","wildcardMask":"0.0.0.255","firstHost":"192.0.2.1","lastHost":"192.0.2.254","totalAddresses":256,"usableHosts":254},"meta":{"endpoint":"ipv4-cidr","route":"/parse","params":{"cidr":"192.0.2.10/24"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for IPv4 CIDR calculator","url":"https://randomapi.dev/apis/ipv4-cidr"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/ipv4-cidr/contains":{"get":{"operationId":"get_ipv4_cidr_contains","tags":["internet"],"summary":"Test whether an IPv4 address belongs to a CIDR block","description":"Parse, split and compare strict IPv4 CIDR blocks or test membership, with canonical unsigned boundaries, exact subnet counts and no truncation. Authoritative source: IETF IPv4 CIDR architecture (RFC 4632 and RFC 3021).","parameters":[{"name":"cidr","in":"query","description":"Strict dotted-decimal IPv4 CIDR. The address may be any member of the block; responses and meta.params canonicalize it to the network address.","required":true,"schema":{"type":"string","minLength":9,"maxLength":18},"example":"192.0.2.10/24","x-randomapi-param-group":"route"},{"name":"ip","in":"query","description":"Strict dotted-decimal IPv4 address to test against the inclusive block boundaries.","required":true,"schema":{"type":"string","minLength":7,"maxLength":15},"example":"192.0.2.42","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["cidr","ip"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"cidr,ip"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["broadcast"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"broadcast"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/Ipv4CidrContainsEnvelope"},{"$ref":"#/components/schemas/Ipv4CidrContainsRecord"}]},"example":{"data":{"cidr":"192.0.2.0/24","ip":"192.0.2.42","contains":true,"network":"192.0.2.0","broadcast":"192.0.2.255"},"meta":{"endpoint":"ipv4-cidr","route":"/contains","params":{"cidr":"192.0.2.10/24","ip":"192.0.2.42"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for IPv4 CIDR calculator","url":"https://randomapi.dev/apis/ipv4-cidr"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/ipv4-cidr/subnets":{"get":{"operationId":"get_ipv4_cidr_subnets","tags":["internet"],"summary":"Split one IPv4 CIDR into a complete bounded child list","description":"Parse, split and compare strict IPv4 CIDR blocks or test membership, with canonical unsigned boundaries, exact subnet counts and no truncation. Authoritative source: IETF IPv4 CIDR architecture (RFC 4632 and RFC 3021).","parameters":[{"name":"cidr","in":"query","description":"Strict dotted-decimal IPv4 CIDR. The address may be any member of the block; responses and meta.params canonicalize it to the network address.","required":true,"schema":{"type":"string","minLength":9,"maxLength":18},"example":"192.0.2.10/24","x-randomapi-param-group":"route"},{"name":"newPrefix","in":"query","description":"Child prefix; must be at least the canonical parent's prefix and produce no more than 256 children.","required":true,"schema":{"type":"integer","minimum":0,"maximum":32},"example":26,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["cidr","newPrefix"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"cidr,newPrefix"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["subnets"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"subnets"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/Ipv4CidrSubnetsEnvelope"},{"$ref":"#/components/schemas/Ipv4CidrSubnetsRecord"}]},"example":{"data":{"cidr":"192.0.2.0/24","newPrefix":26,"subnetCount":4,"addressesPerSubnet":64,"subnets":[{"cidr":"192.0.2.0/26","network":"192.0.2.0","broadcast":"192.0.2.63"}]},"meta":{"endpoint":"ipv4-cidr","route":"/subnets","params":{"cidr":"192.0.2.10/24","newPrefix":26},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for IPv4 CIDR calculator","url":"https://randomapi.dev/apis/ipv4-cidr"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/ipv4-cidr/overlaps":{"get":{"operationId":"get_ipv4_cidr_overlaps","tags":["internet"],"summary":"Classify overlap and containment between two IPv4 CIDR blocks","description":"Parse, split and compare strict IPv4 CIDR blocks or test membership, with canonical unsigned boundaries, exact subnet counts and no truncation. Authoritative source: IETF IPv4 CIDR architecture (RFC 4632 and RFC 3021).","parameters":[{"name":"a","in":"query","description":"First strict dotted-decimal IPv4 CIDR; canonicalized to its aligned network block.","required":true,"schema":{"type":"string","minLength":9,"maxLength":18},"example":"192.0.2.0/24","x-randomapi-param-group":"route"},{"name":"b","in":"query","description":"Second strict dotted-decimal IPv4 CIDR; canonicalized before comparison.","required":true,"schema":{"type":"string","minLength":9,"maxLength":18},"example":"192.0.2.128/25","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["a","b"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"a,b"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["intersectionAddressCount"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"intersectionAddressCount"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/Ipv4CidrOverlapsEnvelope"},{"$ref":"#/components/schemas/Ipv4CidrOverlapsRecord"}]},"example":{"data":{"a":"192.0.2.0/24","b":"192.0.2.128/25","overlap":true,"relation":"aContainsB","intersectionCidr":"192.0.2.128/25","intersectionNetwork":"192.0.2.128","intersectionBroadcast":"192.0.2.255","intersectionAddressCount":128},"meta":{"endpoint":"ipv4-cidr","route":"/overlaps","params":{"a":"192.0.2.0/24","b":"192.0.2.128/25"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for IPv4 CIDR calculator","url":"https://randomapi.dev/apis/ipv4-cidr"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/ipv6-cidr/parse":{"get":{"operationId":"get_ipv6_cidr_parse","tags":["internet"],"summary":"Canonicalize an IPv6 CIDR and calculate its exact boundaries","description":"Parse, split and compare IPv6 CIDRs with exact 128-bit arithmetic, RFC 5952 canonical output and correct /0 and /128 boundaries. Authoritative source: IETF IPv6 addressing and canonical text rules (RFC 4291 and RFC 5952).","parameters":[{"name":"cidr","in":"query","description":"Strict IPv6 CIDR notation. The address may be any member of the block; the response and meta.params use the RFC 5952 canonical network address.","required":true,"schema":{"type":"string","minLength":4,"maxLength":49},"example":"2001:db8:abcd::42/48","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["cidr","inputIp"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"cidr,inputIp"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["expandedNetwork"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"expandedNetwork"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/Ipv6CidrParseEnvelope"},{"$ref":"#/components/schemas/Ipv6CidrParseRecord"}]},"example":{"data":{"cidr":"2001:db8:abcd::/48","inputIp":"2001:db8:abcd::42","network":"2001:db8:abcd::","lastAddress":"2001:db8:abcd:ffff:ffff:ffff:ffff:ffff","prefix":48,"hostBits":80,"totalAddresses":"1208925819614629174706176","expandedNetwork":"2001:0db8:abcd:0000:0000:0000:0000:0000"},"meta":{"endpoint":"ipv6-cidr","route":"/parse","params":{"cidr":"2001:db8:abcd::42/48"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for IPv6 CIDR calculator","url":"https://randomapi.dev/apis/ipv6-cidr"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/ipv6-cidr/contains":{"get":{"operationId":"get_ipv6_cidr_contains","tags":["internet"],"summary":"Test whether an IPv6 address belongs to an IPv6 CIDR","description":"Parse, split and compare IPv6 CIDRs with exact 128-bit arithmetic, RFC 5952 canonical output and correct /0 and /128 boundaries. Authoritative source: IETF IPv6 addressing and canonical text rules (RFC 4291 and RFC 5952).","parameters":[{"name":"cidr","in":"query","description":"Strict IPv6 CIDR notation. The address may be any member of the block; the response and meta.params use the RFC 5952 canonical network address.","required":true,"schema":{"type":"string","minLength":4,"maxLength":49},"example":"2001:db8:abcd::42/48","x-randomapi-param-group":"route"},{"name":"ip","in":"query","description":"Strict IPv6 address to test against the block's inclusive boundaries.","required":true,"schema":{"type":"string","minLength":2,"maxLength":45},"example":"2001:db8:abcd::beef","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["cidr","ip"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"cidr,ip"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["lastAddress"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"lastAddress"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/Ipv6CidrContainsEnvelope"},{"$ref":"#/components/schemas/Ipv6CidrContainsRecord"}]},"example":{"data":{"cidr":"2001:db8:abcd::/48","ip":"2001:db8:abcd::beef","contains":true,"network":"2001:db8:abcd::","lastAddress":"2001:db8:abcd:ffff:ffff:ffff:ffff:ffff"},"meta":{"endpoint":"ipv6-cidr","route":"/contains","params":{"cidr":"2001:db8:abcd::42/48","ip":"2001:db8:abcd::beef"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for IPv6 CIDR calculator","url":"https://randomapi.dev/apis/ipv6-cidr"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/ipv6-cidr/subnets":{"get":{"operationId":"get_ipv6_cidr_subnets","tags":["internet"],"summary":"Split one IPv6 CIDR into a complete bounded child list","description":"Parse, split and compare IPv6 CIDRs with exact 128-bit arithmetic, RFC 5952 canonical output and correct /0 and /128 boundaries. Authoritative source: IETF IPv6 addressing and canonical text rules (RFC 4291 and RFC 5952).","parameters":[{"name":"cidr","in":"query","description":"Strict IPv6 CIDR notation. The address may be any member of the block; the response and meta.params use the RFC 5952 canonical network address.","required":true,"schema":{"type":"string","minLength":4,"maxLength":49},"example":"2001:db8:abcd::42/48","x-randomapi-param-group":"route"},{"name":"newPrefix","in":"query","description":"Child prefix; must be at least the canonical parent's prefix and produce no more than 256 children.","required":true,"schema":{"type":"integer","minimum":0,"maximum":128},"example":52,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["cidr","newPrefix"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"cidr,newPrefix"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["subnets"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"subnets"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/Ipv6CidrSubnetsEnvelope"},{"$ref":"#/components/schemas/Ipv6CidrSubnetsRecord"}]},"example":{"data":{"cidr":"2001:db8:abcd::/48","newPrefix":52,"subnetCount":16,"addressesPerSubnet":"75557863725914323419136","subnets":[{"cidr":"2001:db8:abcd::/52","network":"2001:db8:abcd::","lastAddress":"2001:db8:abcd:fff:ffff:ffff:ffff:ffff"}]},"meta":{"endpoint":"ipv6-cidr","route":"/subnets","params":{"cidr":"2001:db8:abcd::42/48","newPrefix":52},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for IPv6 CIDR calculator","url":"https://randomapi.dev/apis/ipv6-cidr"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/ipv6-cidr/overlaps":{"get":{"operationId":"get_ipv6_cidr_overlaps","tags":["internet"],"summary":"Classify overlap and containment between two IPv6 CIDR blocks","description":"Parse, split and compare IPv6 CIDRs with exact 128-bit arithmetic, RFC 5952 canonical output and correct /0 and /128 boundaries. Authoritative source: IETF IPv6 addressing and canonical text rules (RFC 4291 and RFC 5952).","parameters":[{"name":"a","in":"query","description":"First strict IPv6 CIDR. Host bits are accepted and canonicalized to the network.","required":true,"schema":{"type":"string","minLength":4,"maxLength":49},"example":"2001:db8::1/48","x-randomapi-param-group":"route"},{"name":"b","in":"query","description":"Second strict IPv6 CIDR. Host bits are accepted and canonicalized to the network.","required":true,"schema":{"type":"string","minLength":4,"maxLength":49},"example":"2001:db8:0:1::beef/64","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["a","b"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"a,b"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["intersectionAddressCount"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"intersectionAddressCount"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/Ipv6CidrOverlapsEnvelope"},{"$ref":"#/components/schemas/Ipv6CidrOverlapsRecord"}]},"example":{"data":{"a":"2001:db8::/48","b":"2001:db8:0:1::/64","overlap":true,"relation":"aContainsB","intersectionCidr":"2001:db8:0:1::/64","intersectionNetwork":"2001:db8:0:1::","intersectionLastAddress":"2001:db8:0:1:ffff:ffff:ffff:ffff","intersectionAddressCount":"18446744073709551616"},"meta":{"endpoint":"ipv6-cidr","route":"/overlaps","params":{"a":"2001:db8::1/48","b":"2001:db8:0:1::beef/64"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for IPv6 CIDR calculator","url":"https://randomapi.dev/apis/ipv6-cidr"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/jobs":{"get":{"operationId":"get_jobs_root","tags":["people"],"summary":"Generate realistic job postings","description":"Realistic job postings with level-coherent USD salary ranges — filter by level, department, employment type and remote, and every filter truly works.","parameters":[{"name":"level","in":"query","description":"Only generate postings at this seniority — pins the salary band of every record. Omit for a realistic mix.","required":false,"schema":{"type":"string","enum":["junior","mid","senior","lead","principal"]},"example":"senior","x-randomapi-param-group":"route"},{"name":"department","in":"query","description":"Only generate roles from this department's title pool. Omit for a mix across all 10 departments.","required":false,"schema":{"type":"string","enum":["engineering","design","product","marketing","sales","finance","hr","operations","support","legal"]},"example":"engineering","x-randomapi-param-group":"route"},{"name":"employmentType","in":"query","description":"Only generate this employment type. 'internship' overrides the level's salary band to $20,000–$45,000. Omit for a mostly full-time mix.","required":false,"schema":{"type":"string","enum":["full-time","part-time","contract","internship"]},"example":"full-time","x-randomapi-param-group":"route"},{"name":"remote","in":"query","description":"true ⇒ only remote postings; false ⇒ only on-site. Omit for a mix (roughly a third remote). Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean"},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["title","level"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"title,level"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["currency"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"currency"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/JobsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/JobsRootRecord"}}]},"example":{"data":[{"title":"Senior Backend Engineer","level":"senior","department":"engineering","employmentType":"full-time","remote":true,"salaryMin":128000,"salaryMax":152000,"currency":"USD"}],"meta":{"endpoint":"jobs","count":1,"seed":42,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"title\":\"Senior Backend Engineer\",\"level\":\"senior\",\"department\":\"engineering\",\"employmentType\":\"full-time\",\"remote\":true,\"salaryMin\":128000,\"salaryMax\":152000,\"currency\":\"USD\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Jobs","url":"https://randomapi.dev/apis/jobs"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/jwt/decode":{"get":{"operationId":"get_jwt_decode","tags":["developer"],"summary":"Decode a compact JWS header and claims set without verifying anything","description":"Base64url-decodes the header and payload, resolves the RFC 7519 registered claims and matches the remaining claim names against the IANA JSON Web Token Claims registry. The signature is checked for base64url wellformedness and measured, never decoded or verified. Authoritative source: IANA JSON Web Token Claims registry (pinned snapshot).","parameters":[{"name":"token","in":"query","description":"Compact JWS/JWT: three dot-separated unpadded base64url segments (RFC 7515 §3.1), at most 8,000 characters. Surrounding whitespace is trimmed; trailing bits that do not complete a byte are discarded, as base64url decoders do. Use disposable test tokens — never a production credential.","required":true,"schema":{"type":"string","maxLength":8000},"example":"eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["header","payload"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"header,payload"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["claimRegistryMatches"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"claimRegistryMatches"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/JwtDecodeEnvelope"},{"$ref":"#/components/schemas/JwtDecodeRecord"}]},"example":{"data":{"header":{"typ":"JWT","alg":"HS256"},"payload":{"iss":"joe","exp":1300819380,"http://example.com/is_root":true},"signaturePresent":true,"signatureLength":43,"segmentCount":3,"algorithm":{"name":"HS256","family":"HMAC","description":"HMAC using SHA-256","usage":"alg","requirements":"Required","registered":true},"registeredClaims":{"iss":{"present":true,"value":"joe","type":"string","instant":null},"exp":{"present":true,"value":1300819380,"type":"number","instant":"2011-03-22T18:43:00.000Z"}},"unregisteredClaims":[{"name":"http://example.com/is_root","type":"boolean"}],"claimRegistryMatches":[{"name":"scope","description":"Scope Values","reference":"RFC8693, Section 4.2"}]},"meta":{"endpoint":"jwt","route":"/decode","params":{"token":"eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for JWT Decoder & Claims Inspector API","url":"https://randomapi.dev/apis/jwt"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/jwt/claims":{"get":{"operationId":"get_jwt_claims","tags":["developer"],"summary":"Evaluate exp, nbf, iat, aud and iss at a chosen instant","description":"Evaluates the time-based registered claims against `at` (default: now) with optional clock skew, plus optional exact audience and issuer expectations. Still no signature verification. Authoritative source: IANA JSON Web Token Claims registry (pinned snapshot).","parameters":[{"name":"token","in":"query","description":"Compact JWS/JWT: three dot-separated unpadded base64url segments (RFC 7515 §3.1), at most 8,000 characters. Surrounding whitespace is trimmed; trailing bits that do not complete a byte are discarded, as base64url decoders do. Use disposable test tokens — never a production credential.","required":true,"schema":{"type":"string","maxLength":8000},"example":"eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk","x-randomapi-param-group":"route"},{"name":"at","in":"query","description":"Instant to evaluate against, as YYYY-MM-DD or a timestamp such as 2026-07-25T12:00:00Z. Defaults to the current UTC instant, and the resolved value is echoed in meta.params. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-25T12:00:00Z","x-randomapi-param-group":"route"},{"name":"audience","in":"query","description":"Audience the caller expects. Compared to aud with exact, case-sensitive equality (any element for an array aud); whitespace is significant and is not trimmed. Omit to skip the check.","required":false,"schema":{"type":"string","minLength":1,"maxLength":1024},"example":"https://api.example.com","x-randomapi-param-group":"route"},{"name":"issuer","in":"query","description":"Issuer the caller expects. Compared to iss with exact, case-sensitive equality; whitespace is significant and is not trimmed. Omit to skip the check.","required":false,"schema":{"type":"string","minLength":1,"maxLength":1024},"example":"https://auth.example.com","x-randomapi-param-group":"route"},{"name":"clockSkewSeconds","in":"query","description":"Tolerance in seconds (0–300) applied to the exp, nbf and iat comparisons — never to secondsUntilExpiry.","required":false,"schema":{"type":"integer","minimum":0,"maximum":300,"default":0},"example":60,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["at","expired"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"at,expired"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["evaluation"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"evaluation"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/JwtClaimsEnvelope"},{"$ref":"#/components/schemas/JwtClaimsRecord"}]},"example":{"data":{"at":"2026-07-25T12:00:00.000Z","expired":true,"notYetValid":false,"secondsUntilExpiry":-484161420,"issuedInFuture":false,"audienceMatches":null,"issuerMatches":null,"clockSkewSeconds":0,"evaluation":[{"claim":null,"code":"signature.not-verified","detail":"This API never verifies signatures and accepts no key material, so nothing below is evidence that the token is authentic."},{"claim":"exp","code":"exp.expired","detail":"'exp' is 2011-03-22T18:43:00.000Z, at or before the evaluation instant even after 0s of skew."}]},"meta":{"endpoint":"jwt","route":"/claims","params":{"token":"eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk","clockSkewSeconds":0},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for JWT Decoder & Claims Inspector API","url":"https://randomapi.dev/apis/jwt"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/language-tags/canonicalize":{"get":{"operationId":"get_language_tags_canonicalize","tags":["developer"],"summary":"Canonicalize and decompose one BCP 47 language tag","description":"Canonicalize BCP 47 language tags and run RFC 4647 lookup or basic filtering with bounded, deterministic matching. Authoritative source: IETF BCP 47 syntax, canonical form and matching rules (RFC 5646 and RFC 4647).","parameters":[{"name":"tag","in":"query","description":"A whitespace-free BCP 47 language tag, grandfathered tag or private-use-only tag.","required":true,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"zh-hant-cn-u-ca-chinese-x-team","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["input","canonical"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"input,canonical"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["privateUse"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"privateUse"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/LanguageTagsCanonicalizeEnvelope"},{"$ref":"#/components/schemas/LanguageTagsCanonicalizeRecord"}]},"example":{"data":{"input":"EN-us","canonical":"en-US","isCanonical":false,"kind":"language-tag","baseName":"zh-Hant-CN","language":"zh","script":"Hant","region":"CN","extensions":["u-ca-chinese"],"privateUse":"x-team"},"meta":{"endpoint":"language-tags","route":"/canonicalize","params":{"tag":"zh-hant-cn-u-ca-chinese-x-team"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for BCP 47 language tags","url":"https://randomapi.dev/apis/language-tags"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/language-tags/lookup":{"get":{"operationId":"get_language_tags_lookup","tags":["developer"],"summary":"Select one available tag with RFC 4647 lookup fallback","description":"Canonicalize BCP 47 language tags and run RFC 4647 lookup or basic filtering with bounded, deterministic matching. Authoritative source: IETF BCP 47 syntax, canonical form and matching rules (RFC 5646 and RFC 4647).","parameters":[{"name":"ranges","in":"query","description":"Priority-ordered basic language ranges; at most 20. '*' is skipped during lookup. Serialized as one comma-separated query value.","required":true,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["zh-Hant-TW","zh-Hant","zh"],"style":"form","explode":false,"x-randomapi-param-group":"route","x-randomapi-query-example":"zh-Hant-TW,zh-Hant,zh"},{"name":"available","in":"query","description":"Available BCP 47 tags to canonicalize and search; at most 100. Serialized as one comma-separated query value.","required":true,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["en","zh","zh-Hant"],"style":"form","explode":false,"x-randomapi-param-group":"route","x-randomapi-query-example":"en,zh,zh-Hant"},{"name":"default","in":"query","description":"Optional canonicalizable tag returned only if every priority range fails.","required":false,"schema":{"type":"string","minLength":1,"maxLength":255},"example":"en","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["ranges","available"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"ranges,available"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["usedDefault"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"usedDefault"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/LanguageTagsLookupEnvelope"},{"$ref":"#/components/schemas/LanguageTagsLookupRecord"}]},"example":{"data":{"ranges":["zh-hant-tw","zh-hant","zh"],"available":["en","zh","zh-Hant"],"match":"zh-Hant","matchedRange":"zh-hant-tw","matchedCandidate":"zh-hant","usedDefault":false},"meta":{"endpoint":"language-tags","route":"/lookup","params":{"ranges":["zh-Hant-TW","zh-Hant","zh"],"available":["en","zh","zh-Hant"]},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for BCP 47 language tags","url":"https://randomapi.dev/apis/language-tags"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/language-tags/filter":{"get":{"operationId":"get_language_tags_filter","tags":["developer"],"summary":"Return all RFC 4647 basic-filtering matches in deterministic order","description":"Canonicalize BCP 47 language tags and run RFC 4647 lookup or basic filtering with bounded, deterministic matching. Authoritative source: IETF BCP 47 syntax, canonical form and matching rules (RFC 5646 and RFC 4647).","parameters":[{"name":"ranges","in":"query","description":"Priority-ordered basic language ranges; at most 20. '*' matches every available tag. Serialized as one comma-separated query value.","required":true,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["de-CH","de","en"],"style":"form","explode":false,"x-randomapi-param-group":"route","x-randomapi-query-example":"de-CH,de,en"},{"name":"available","in":"query","description":"Available BCP 47 tags to canonicalize and filter; at most 100. Serialized as one comma-separated query value.","required":true,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["en-US","de","de-CH-1996","fr"],"style":"form","explode":false,"x-randomapi-param-group":"route","x-randomapi-query-example":"en-US,de,de-CH-1996,fr"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["ranges","available"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"ranges,available"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["matches"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"matches"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/LanguageTagsFilterEnvelope"},{"$ref":"#/components/schemas/LanguageTagsFilterRecord"}]},"example":{"data":{"ranges":["de-ch","de","en"],"available":["en-US","de","de-CH-1996","fr"],"matches":["de-CH-1996","de","en-US"]},"meta":{"endpoint":"language-tags","route":"/filter","params":{"ranges":["de-CH","de","en"],"available":["en-US","de","de-CH-1996","fr"]},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for BCP 47 language tags","url":"https://randomapi.dev/apis/language-tags"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/languages":{"get":{"operationId":"get_languages_root","tags":["geo"],"summary":"List active ISO 639 two-letter language codes","description":"Returns all 183 active alpha-2-backed records by default. Search matches names and codes; the bibliographic-code filter can be combined with it. Authoritative source: Library of Congress ISO 639 Set 2 code list (active alpha-2-backed rows).","parameters":[{"name":"search","in":"query","description":"Case-insensitive substring match across English names, alternate names, alpha-2, terminology alpha-3 and bibliographic alpha-3 codes.","required":false,"schema":{"type":"string"},"example":"norwegian","x-randomapi-param-group":"route"},{"name":"hasBibliographicCode","in":"query","description":"When supplied, keep only languages that do (true) or do not (false) have a distinct ISO 639-2/B code. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean"},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["name","alternateNames"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"name,alternateNames"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["bibliographicAlpha3"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"bibliographicAlpha3"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/LanguagesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/LanguagesRootRecord"}}]},"example":{"data":[{"name":"German","alternateNames":["Scottish Gaelic"],"alpha2":"de","alpha3":"deu","bibliographicAlpha3":"ger"}],"meta":{"endpoint":"languages","count":1,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"name\":\"German\",\"alternateNames\":[\"Scottish Gaelic\"],\"alpha2\":\"de\",\"alpha3\":\"deu\",\"bibliographicAlpha3\":\"ger\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Languages","url":"https://randomapi.dev/apis/languages"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/languages/lookup":{"get":{"operationId":"get_languages_lookup","tags":["geo"],"summary":"Look up one language by a two- or three-letter code","description":"Accepts active alpha-2, terminology alpha-3 and bibliographic alpha-3 codes case-insensitively. Deprecated and out-of-scope codes are explicit 404s. Authoritative source: Library of Congress ISO 639 Set 2 code list (active alpha-2-backed rows).","parameters":[{"name":"code","in":"query","description":"A 2- or 3-letter ISO 639 code: alpha-2, terminology alpha-3, or bibliographic alpha-3.","required":true,"schema":{"type":"string","minLength":2,"maxLength":3},"example":"deu","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["name","alternateNames"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"name,alternateNames"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["bibliographicAlpha3"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"bibliographicAlpha3"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/LanguagesLookupEnvelope"},{"$ref":"#/components/schemas/LanguagesLookupRecord"}]},"example":{"data":{"name":"German","alternateNames":["Scottish Gaelic"],"alpha2":"de","alpha3":"deu","bibliographicAlpha3":"ger"},"meta":{"endpoint":"languages","route":"/lookup","params":{"code":"deu"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"The requested well-formed code is deprecated or outside this endpoint's active two-letter scope.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?code=dk"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Languages","url":"https://randomapi.dev/apis/languages"},"x-randomapi-kind":"real","x-randomapi-mode":"lookup"}},"/api/ledger-entries":{"get":{"operationId":"get_ledger_entries_root","tags":["commerce"],"summary":"Generate balanced double-entry journal entries","description":"Each record is one journal entry with its postings. `debitTotal` always equals `creditTotal`, and summing every posting debit-positive across the response gives exactly zero.","parameters":[{"name":"currency","in":"query","description":"Active ISO 4217 code (3 letters, case-insensitive) every amount is denominated in. Amounts are integer minor units of this currency and no conversion is performed. XDR is rejected because ISO defines no minor unit for it.","required":false,"schema":{"type":"string","minLength":3,"maxLength":3,"default":"USD"},"example":"EUR","x-randomapi-param-group":"route"},{"name":"accountType","in":"query","description":"Constrain generation to entries with at least one posting on an account of this type (asset, liability, equity, revenue or expense).","required":false,"schema":{"type":"string","enum":["asset","liability","equity","revenue","expense"]},"example":"asset","x-randomapi-param-group":"route"},{"name":"postingsPerEntry","in":"query","description":"Exact number of postings in every entry (2–6). One side gets ⌈n/2⌉ legs and the other ⌊n/2⌋; both sides always sum to the same total.","required":false,"schema":{"type":"integer","minimum":2,"maximum":6,"default":2},"example":4,"x-randomapi-param-group":"route"},{"name":"entryType","in":"query","description":"Only generate this entry type. Omitted, you get an even mix of the six business types, and about 15% of entries (never the first) reverse one of the five entries before them.","required":false,"schema":{"type":"string","enum":["payment","payout","refund","fee","transfer","accrual","reversal"]},"example":"payment","x-randomapi-param-group":"route"},{"name":"minAmount","in":"query","description":"Smallest amount of any single posting, in integer minor units (1 = one cent for USD, one yen for JPY). Bounds every posting, not the entry total.","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000000000,"default":100},"example":500,"x-randomapi-param-group":"route"},{"name":"maxAmount","in":"query","description":"Largest amount of any single posting, in integer minor units. Must be ≥ minAmount.","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000000000,"default":250000},"example":100000,"x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Start of the posting window, inclusive (YYYY-MM-DD = midnight UTC, or a full ISO 8601 timestamp). Defaults to 30 days before 'to'. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"End of the posting window, inclusive. Defaults to today at UTC midnight, so a pinned seed returns identical entries all day. Must be ≥ from. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-03-31","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to 10.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["entryId","date"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"entryId,date"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["creditTotal"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"creditTotal"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/LedgerEntriesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/LedgerEntriesRootRecord"}}]},"example":{"data":[{"entryId":"je_3f9a2c01","date":"2026-03-14T09:26:53.512Z","type":"payment","currency":"USD","description":"Customer payment applied to an open invoice","reference":"PAY-9F3A2C81","reversesEntryId":null,"postings":[{"lineNumber":1,"accountId":"cash","account":"Cash","accountType":"asset","normalBalance":"debit","side":"debit","amount":128450,"signedAmount":128450},{"lineNumber":2,"accountId":"accounts-receivable","account":"Accounts Receivable","accountType":"asset","normalBalance":"debit","side":"credit","amount":128450,"signedAmount":-128450}],"debitTotal":128450,"creditTotal":128450}],"meta":{"endpoint":"ledger-entries","count":1,"seed":42,"params":{"currency":"USD","postingsPerEntry":2,"minAmount":100,"maxAmount":250000},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"entryId\":\"je_3f9a2c01\",\"date\":\"2026-03-14T09:26:53.512Z\",\"type\":\"payment\",\"currency\":\"USD\",\"description\":\"Customer payment applied to an open invoice\",\"reference\":\"PAY-9F3A2C81\",\"reversesEntryId\":null,\"postings\":[{\"lineNumber\":1,\"accountId\":\"cash\",\"account\":\"Cash\",\"accountType\":\"asset\",\"normalBalance\":\"debit\",\"side\":\"debit\",\"amount\":128450,\"signedAmount\":128450},{\"lineNumber\":2,\"accountId\":\"accounts-receivable\",\"account\":\"Accounts Receivable\",\"accountType\":\"asset\",\"normalBalance\":\"debit\",\"side\":\"credit\",\"amount\":128450,\"signedAmount\":-128450}],\"debitTotal\":128450,\"creditTotal\":128450}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Double-Entry Ledger Fixtures API","url":"https://randomapi.dev/apis/ledger-entries"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/ledger-entries/postings":{"get":{"operationId":"get_ledger_entries_postings","tags":["commerce"],"summary":"Flat ledger rows with an exact per-account running balance","description":"Ledger rows from the same entry set (two postings per entry), oldest first, capped at 100 rows — so an unfiltered response covers the first ⌈count/2⌉ entries, not all of them. `balanceAfter` is the exact running total of that account over the rows above it.","parameters":[{"name":"currency","in":"query","description":"Active ISO 4217 code (3 letters, case-insensitive) every amount is denominated in. Amounts are integer minor units of this currency and no conversion is performed. XDR is rejected because ISO defines no minor unit for it.","required":false,"schema":{"type":"string","minLength":3,"maxLength":3,"default":"USD"},"example":"EUR","x-randomapi-param-group":"route"},{"name":"accountType","in":"query","description":"Constrain generation to entries with at least one posting on an account of this type (asset, liability, equity, revenue or expense).","required":false,"schema":{"type":"string","enum":["asset","liability","equity","revenue","expense"]},"example":"asset","x-randomapi-param-group":"route"},{"name":"minAmount","in":"query","description":"Smallest amount of any single posting, in integer minor units (1 = one cent for USD, one yen for JPY). Bounds every posting, not the entry total.","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000000000,"default":100},"example":500,"x-randomapi-param-group":"route"},{"name":"maxAmount","in":"query","description":"Largest amount of any single posting, in integer minor units. Must be ≥ minAmount.","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000000000,"default":250000},"example":100000,"x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Start of the posting window, inclusive (YYYY-MM-DD = midnight UTC, or a full ISO 8601 timestamp). Defaults to 30 days before 'to'. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"End of the posting window, inclusive. Defaults to today at UTC midnight, so a pinned seed returns identical entries all day. Must be ≥ from. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-03-31","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to 10.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["postingId","entryId"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"postingId,entryId"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["balanceAfter"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"balanceAfter"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/LedgerEntriesPostingsEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/LedgerEntriesPostingsRecord"}}]},"example":{"data":[{"postingId":"je_3f9a2c01-L1","entryId":"je_3f9a2c01","entryType":"payment","lineNumber":1,"date":"2026-03-14T09:26:53.512Z","currency":"USD","accountId":"cash","account":"Cash","accountType":"asset","normalBalance":"debit","side":"debit","amount":128450,"signedAmount":128450,"balanceAfter":128450}],"meta":{"endpoint":"ledger-entries","route":"/postings","count":1,"seed":42,"params":{"currency":"USD","minAmount":100,"maxAmount":250000},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"postingId\":\"je_3f9a2c01-L1\",\"entryId\":\"je_3f9a2c01\",\"entryType\":\"payment\",\"lineNumber\":1,\"date\":\"2026-03-14T09:26:53.512Z\",\"currency\":\"USD\",\"accountId\":\"cash\",\"account\":\"Cash\",\"accountType\":\"asset\",\"normalBalance\":\"debit\",\"side\":\"debit\",\"amount\":128450,\"signedAmount\":128450,\"balanceAfter\":128450}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Double-Entry Ledger Fixtures API","url":"https://randomapi.dev/apis/ledger-entries"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/ledger-entries/trial-balance":{"get":{"operationId":"get_ledger_entries_trial_balance","tags":["commerce"],"summary":"Trial balance whose debit and credit columns are exactly equal","description":"Summarizes a documented entry set — the first `entries` entries `/` returns for the same seed and the same parameters — into per-account debit and credit totals. `difference` is always 0.","parameters":[{"name":"currency","in":"query","description":"Active ISO 4217 code (3 letters, case-insensitive) every amount is denominated in. Amounts are integer minor units of this currency and no conversion is performed. XDR is rejected because ISO defines no minor unit for it.","required":false,"schema":{"type":"string","minLength":3,"maxLength":3,"default":"USD"},"example":"EUR","x-randomapi-param-group":"route"},{"name":"entries","in":"query","description":"Number of entries from the deterministic set to summarize (1–100). They are exactly the first N entries the root route returns for the same seed — this route accepts the root route's full parameter set, so currency, window, postingsPerEntry, entryType, accountType and the amount bounds all have to match for the two to reconcile.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"example":40,"x-randomapi-param-group":"route"},{"name":"accountType","in":"query","description":"Constrain generation to entries with at least one posting on an account of this type (asset, liability, equity, revenue or expense).","required":false,"schema":{"type":"string","enum":["asset","liability","equity","revenue","expense"]},"example":"asset","x-randomapi-param-group":"route"},{"name":"postingsPerEntry","in":"query","description":"Exact number of postings in every entry (2–6). One side gets ⌈n/2⌉ legs and the other ⌊n/2⌋; both sides always sum to the same total.","required":false,"schema":{"type":"integer","minimum":2,"maximum":6,"default":2},"example":4,"x-randomapi-param-group":"route"},{"name":"entryType","in":"query","description":"Only generate this entry type. Omitted, you get an even mix of the six business types, and about 15% of entries (never the first) reverse one of the five entries before them.","required":false,"schema":{"type":"string","enum":["payment","payout","refund","fee","transfer","accrual","reversal"]},"example":"payment","x-randomapi-param-group":"route"},{"name":"minAmount","in":"query","description":"Smallest amount of any single posting, in integer minor units (1 = one cent for USD, one yen for JPY). Bounds every posting, not the entry total.","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000000000,"default":100},"example":500,"x-randomapi-param-group":"route"},{"name":"maxAmount","in":"query","description":"Largest amount of any single posting, in integer minor units. Must be ≥ minAmount.","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000000000,"default":250000},"example":100000,"x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Start of the posting window, inclusive (YYYY-MM-DD = midnight UTC, or a full ISO 8601 timestamp). Defaults to 30 days before 'to'. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"End of the posting window, inclusive. Defaults to today at UTC midnight, so a pinned seed returns identical entries all day. Must be ≥ from. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-03-31","x-randomapi-param-group":"route"},{"name":"seed","in":"query","description":"Seed of the entry set to summarize. Any integer (reduced modulo 2³² like the platform's universal seed) — pass the `seed` echoed by the root route to reconcile exactly the entries you fetched. Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer","default":1},"example":42,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["currency","decimalDigits"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"currency,decimalDigits"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["difference"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"difference"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/LedgerEntriesTrialBalanceEnvelope"},{"$ref":"#/components/schemas/LedgerEntriesTrialBalanceRecord"}]},"example":{"data":{"currency":"USD","decimalDigits":2,"from":"2026-06-10T00:00:00.000Z","to":"2026-07-10T00:00:00.000Z","entries":25,"postings":50,"accounts":[{"accountId":"cash","account":"Cash","accountType":"asset","normalBalance":"debit","debits":1284500,"credits":902100,"balance":382400,"postings":17}],"totalDebits":3100000,"totalCredits":3100000,"difference":0},"meta":{"endpoint":"ledger-entries","route":"/trial-balance","params":{"currency":"USD","entries":25,"postingsPerEntry":2,"minAmount":100,"maxAmount":250000,"seed":1},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Double-Entry Ledger Fixtures API","url":"https://randomapi.dev/apis/ledger-entries"},"x-randomapi-kind":"mock","x-randomapi-mode":"compute"}},"/api/llm-completions":{"get":{"operationId":"get_llm_completions_root","tags":["developer"],"summary":"Generate coherent mock LLM completion records with derived finish reasons and token usage","description":"Mock LLM completion fixtures with coherent token usage, tool calls and a replayable delta stream whose chunks concatenate to the exact message.","parameters":[{"name":"model","in":"query","description":"Pin the fictional model label and its latency profile. Omit for a per-record mix.","required":false,"schema":{"type":"string","enum":["demo-model-sm","demo-model-md","demo-model-lg"]},"example":"demo-model-lg","x-randomapi-param-group":"route"},{"name":"finishReason","in":"query","description":"Pin the terminal reason and therefore the whole coherent shape. Omit for a weighted mix dominated by stop; tool_calls leaves the mix when maxTokens is below the cheapest tool fixture.","required":false,"schema":{"type":"string","enum":["stop","length","tool_calls","content_filter"]},"example":"length","x-randomapi-param-group":"route"},{"name":"maxTokens","in":"query","description":"Completion budget in generated word-granular tokens. completionTokens never exceeds it, and finishReason=length always equals it exactly.","required":false,"schema":{"type":"integer","minimum":1,"maximum":200,"default":64},"example":32,"x-randomapi-param-group":"route"},{"name":"prompt","in":"query","description":"Echoed verbatim in every record and counted for promptTokens. Control characters are rejected. It does not influence the completion text or which tool is called. Omit for a per-record fixture prompt.","required":false,"schema":{"type":"string","minLength":1,"maxLength":200},"example":"Summarize this changelog in three bullet points.","x-randomapi-param-group":"route"},{"name":"cached","in":"query","description":"true forces at least one cached prompt token, false forces exactly zero. Omit for a cache hit on roughly a quarter of records. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean"},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"asOf","in":"query","description":"Newest possible createdAt. Defaults to the end of the current UTC day and is echoed for replay; createdAt lands within seven days before it. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-30T23:59:59.999Z","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","model"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,model"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["latencyMs"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"latencyMs"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/LlmCompletionsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/LlmCompletionsRootRecord"}}]},"example":{"data":[{"id":"cmpl_18_s2_5f3ac1d2","model":"demo-model-md","createdAt":"2026-07-28T11:42:07.318Z","prompt":"Summarize this changelog in three bullet points.","message":{"role":"assistant","content":"In practice, the copy is stored next to the source, reads go to the nearest replica. Each field has a default value, the record is versioned on update, the report covers the last seven days. Writes are ordered by a single owner, reads go."},"finishReason":"stop","toolCalls":[{"id":"call_f780b593","name":"lookup_user","arguments":"{\"email\":\"dana@example.com\"}"}],"usage":{"promptTokens":7,"completionTokens":44,"cachedPromptTokens":0,"totalTokens":51},"latencyMs":1194}],"meta":{"endpoint":"llm-completions","count":1,"seed":42,"params":{"maxTokens":64},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"cmpl_18_s2_5f3ac1d2\",\"model\":\"demo-model-md\",\"createdAt\":\"2026-07-28T11:42:07.318Z\",\"prompt\":\"Summarize this changelog in three bullet points.\",\"message\":{\"role\":\"assistant\",\"content\":\"In practice, the copy is stored next to the source, reads go to the nearest replica. Each field has a default value, the record is versioned on update, the report covers the last seven days. Writes are ordered by a single owner, reads go.\"},\"finishReason\":\"stop\",\"toolCalls\":[{\"id\":\"call_f780b593\",\"name\":\"lookup_user\",\"arguments\":\"{\\\"email\\\":\\\"dana@example.com\\\"}\"}],\"usage\":{\"promptTokens\":7,\"completionTokens\":44,\"cachedPromptTokens\":0,\"totalTokens\":51},\"latencyMs\":1194}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for LLM completion fixtures","url":"https://randomapi.dev/apis/llm-completions"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/llm-completions/chunks":{"get":{"operationId":"get_llm_completions_chunks","tags":["developer"],"summary":"Replay one completion as its ordered streaming delta sequence","description":"Mock LLM completion fixtures with coherent token usage, tool calls and a replayable delta stream whose chunks concatenate to the exact message.","parameters":[{"name":"completionId","in":"query","description":"An id from /api/llm-completions, used verbatim as the stream handle and decoded for its token count, finish reason and model — which come back as the completionTokens, finishReason and model fields. Mutually exclusive with tokens, finishReason and model.","required":false,"schema":{"type":"string","minLength":5,"maxLength":32},"example":"cmpl_18_s2_5f3ac1d2","x-randomapi-param-group":"route"},{"name":"tokens","in":"query","description":"Number of content tokens, and therefore of chunks. Rejected together with completionId, which already encodes it. Defaults to 24, and the resolved value is echoed in meta.params whenever no id was supplied.","required":false,"schema":{"type":"integer","minimum":1,"maximum":200},"example":24,"x-randomapi-param-group":"route"},{"name":"finishReason","in":"query","description":"Terminal reason: stop closes the text with a full stop, length stops mid-sentence with no closing punctuation. Rejected together with completionId, which already encodes it. Defaults to stop, and the resolved value is echoed in meta.params whenever no id was supplied.","required":false,"schema":{"type":"string","enum":["stop","length"]},"example":"length","x-randomapi-param-group":"route"},{"name":"model","in":"query","description":"Latency profile and record label. Rejected together with completionId, which already encodes it. Defaults to demo-model-md, and the resolved value is echoed in meta.params whenever no id was supplied.","required":false,"schema":{"type":"string","enum":["demo-model-sm","demo-model-md","demo-model-lg"]},"example":"demo-model-lg","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["completionId","model"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"completionId,model"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["chunks"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"chunks"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/LlmCompletionsChunksEnvelope"},{"$ref":"#/components/schemas/LlmCompletionsChunksRecord"}]},"example":{"data":{"completionId":"cmpl_18_s2_5f3ac1d2","model":"demo-model-md","finishReason":"stop","content":"In practice, the copy is stored next to the source, reads go to the nearest replica. Each field has a default value, the record is versioned on update, the report covers the last seven days. Writes are ordered by a single owner, reads go.","chunkCount":44,"completionTokens":44,"timeToFirstChunkMs":366,"totalElapsedMs":1194,"chunks":[{"index":0,"delta":"In","elapsedMs":366,"finishReason":null}]},"meta":{"endpoint":"llm-completions","route":"/chunks","params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for LLM completion fixtures","url":"https://randomapi.dev/apis/llm-completions"},"x-randomapi-kind":"mock","x-randomapi-mode":"compute"}},"/api/locale-formats/number":{"get":{"operationId":"get_locale_formats_number","tags":["text"],"summary":"Format a number for a locale and echo the resolved options","description":"Runs Intl.NumberFormat with exactly the options you pass. Unknown numbering systems and unsanctioned units are rejected rather than silently ignored. Authoritative source: ECMA-402 Intl formatters evaluated with the serving runtime's Unicode CLDR data.","parameters":[{"name":"locale","in":"query","description":"Unicode BCP 47 locale identifier such as de-DE, hi-IN or en-US-u-nu-arab. It is canonicalized, then checked against the data this runtime actually holds for the formatter the route uses; a locale with no data is rejected instead of being answered in the runtime's default language.","required":true,"schema":{"type":"string","minLength":2,"maxLength":64},"example":"de-DE","x-randomapi-param-group":"route"},{"name":"value","in":"query","description":"Finite number to format, bounded to ±1000000000000000 so every integral input stays exactly representable.","required":true,"schema":{"type":"number","minimum":-1000000000000000,"maximum":1000000000000000},"example":1234567.89,"x-randomapi-param-group":"route"},{"name":"style","in":"query","description":"decimal is a plain number; percent multiplies the value by 100 and adds the locale's percent sign (which Turkish puts in front of the digits); unit appends a measurement unit and additionally requires 'unit'.","required":false,"schema":{"type":"string","enum":["decimal","percent","unit"],"default":"decimal"},"example":"percent","x-randomapi-param-group":"route"},{"name":"unit","in":"query","description":"Sanctioned ECMA-402 unit identifier for style=unit — a single unit such as kilometer or byte, or one 'x-per-y' combination such as kilometer-per-hour. Ignored with a warning for any other style.","required":false,"schema":{"type":"string","minLength":3,"maxLength":64},"example":"kilometer-per-hour","x-randomapi-param-group":"route"},{"name":"notation","in":"query","description":"standard is plain positional notation; compact abbreviates (1.2M, 12 लाख); scientific and engineering use exponent notation.","required":false,"schema":{"type":"string","enum":["standard","compact","scientific","engineering"],"default":"standard"},"example":"compact","x-randomapi-param-group":"route"},{"name":"minimumFractionDigits","in":"query","description":"Minimum digits after the decimal separator. Omitted by default so the locale's own default applies. Must be no greater than maximumFractionDigits when both are supplied.","required":false,"schema":{"type":"integer","minimum":0,"maximum":20},"example":2,"x-randomapi-param-group":"route"},{"name":"maximumFractionDigits","in":"query","description":"Maximum digits after the decimal separator, applied with ECMA-402's half-expand rounding. Omitted by default so the locale's own default applies.","required":false,"schema":{"type":"integer","minimum":0,"maximum":20},"example":2,"x-randomapi-param-group":"route"},{"name":"numberingSystem","in":"query","description":"Decimal numbering system for the digits — latn, arab, deva, beng, thai and the other simple systems this runtime exposes. Algorithmic and unknown systems are a 400 rather than a silent fallback.","required":false,"schema":{"type":"string","minLength":3,"maxLength":8},"example":"arab","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["value","formatted"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"value,formatted"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["resolvedOptions"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"resolvedOptions"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/LocaleFormatsNumberEnvelope"},{"$ref":"#/components/schemas/LocaleFormatsNumberRecord"}]},"example":{"data":{"value":1234567.89,"formatted":"1.234.567,89","locale":"de-DE","numberingSystem":"latn","style":"decimal","notation":"standard","unit":null,"parts":[{"type":"integer","value":"1"},{"type":"group","value":"."},{"type":"integer","value":"234"}],"resolvedOptions":{"locale":"de-DE","numberingSystem":"latn","style":"decimal","minimumIntegerDigits":1,"minimumFractionDigits":0,"maximumFractionDigits":3,"useGrouping":"auto","notation":"standard","signDisplay":"auto"}},"meta":{"endpoint":"locale-formats","route":"/number","params":{"locale":"de-DE","value":1234567.89,"style":"decimal","notation":"standard"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Locale number & date formats","url":"https://randomapi.dev/apis/locale-formats"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/locale-formats/currency":{"get":{"operationId":"get_locale_formats_currency","tags":["text"],"summary":"Format an amount in a currency, with symbol placement and fraction digits","description":"Formats the amount you supply in the currency you name. It never converts between currencies and holds no exchange rates. Authoritative source: ECMA-402 Intl formatters evaluated with the serving runtime's Unicode CLDR data.","parameters":[{"name":"locale","in":"query","description":"Unicode BCP 47 locale identifier such as de-DE, hi-IN or en-US-u-nu-arab. It is canonicalized, then checked against the data this runtime actually holds for the formatter the route uses; a locale with no data is rejected instead of being answered in the runtime's default language.","required":true,"schema":{"type":"string","minLength":2,"maxLength":64},"example":"de-DE","x-randomapi-param-group":"route"},{"name":"amount","in":"query","description":"Finite amount to format, bounded to ±1000000000000000. Negative amounts show the locale's negative currency form.","required":true,"schema":{"type":"number","minimum":-1000000000000000,"maximum":1000000000000000},"example":1234.5,"x-randomapi-param-group":"route"},{"name":"currency","in":"query","description":"Active ISO 4217 alphabetic code, case-insensitive, validated against the same table as /api/currencies. The currency's own CLDR fraction digits are applied (JPY 0, KWD 3).","required":true,"schema":{"type":"string","minLength":3,"maxLength":3},"example":"EUR","x-randomapi-param-group":"route"},{"name":"currencyDisplay","in":"query","description":"symbol uses the locale's usual symbol; narrowSymbol drops any disambiguating prefix ($ instead of US$); code prints the ISO code; name prints the localized currency name, which many locales place after the digits even when they put the symbol in front.","required":false,"schema":{"type":"string","enum":["symbol","narrowSymbol","code","name"],"default":"symbol"},"example":"name","x-randomapi-param-group":"route"},{"name":"currencySign","in":"query","description":"accounting selects the locale's accounting negative form, which wraps negatives in parentheses in locales such as en-US; standard uses the ordinary minus form.","required":false,"schema":{"type":"string","enum":["standard","accounting"],"default":"standard"},"example":"accounting","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["amount","currency"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"amount,currency"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["resolvedOptions"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"resolvedOptions"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/LocaleFormatsCurrencyEnvelope"},{"$ref":"#/components/schemas/LocaleFormatsCurrencyRecord"}]},"example":{"data":{"amount":1234.5,"currency":"EUR","formatted":"1.234,50 €","currencyText":"€","currencyPosition":"suffix","locale":"de-DE","minimumFractionDigits":2,"maximumFractionDigits":2,"parts":[{"type":"integer","value":"1"},{"type":"group","value":"."},{"type":"integer","value":"234"}],"resolvedOptions":{"locale":"de-DE","numberingSystem":"latn","style":"decimal","minimumIntegerDigits":1,"minimumFractionDigits":0,"maximumFractionDigits":3,"useGrouping":"auto","notation":"standard","signDisplay":"auto"}},"meta":{"endpoint":"locale-formats","route":"/currency","params":{"locale":"de-DE","amount":1234.5,"currency":"EUR","currencyDisplay":"symbol","currencySign":"standard"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Locale number & date formats","url":"https://randomapi.dev/apis/locale-formats"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/locale-formats/date-time":{"get":{"operationId":"get_locale_formats_date_time","tags":["text"],"summary":"Format an instant for a locale, time zone and calendar","description":"Formats an absolute instant with Intl.DateTimeFormat. Omitting both dateStyle and timeStyle yields the locale's plain numeric date; omitting 'at' formats the current instant. Authoritative source: ECMA-402 Intl formatters evaluated with the serving runtime's Unicode CLDR data.","parameters":[{"name":"locale","in":"query","description":"Unicode BCP 47 locale identifier such as de-DE, hi-IN or en-US-u-nu-arab. It is canonicalized, then checked against the data this runtime actually holds for the formatter the route uses; a locale with no data is rejected instead of being answered in the runtime's default language.","required":true,"schema":{"type":"string","minLength":2,"maxLength":64},"example":"de-DE","x-randomapi-param-group":"route"},{"name":"at","in":"query","description":"Absolute instant: YYYY-MM-DD (UTC midnight) or RFC3339 with Z or an explicit offset. Defaults to the current instant, which is echoed in meta.params. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-15T12:34:56Z","x-randomapi-param-group":"route"},{"name":"dateStyle","in":"query","description":"CLDR date length. Omit both dateStyle and timeStyle to get the locale's default numeric date with no time.","required":false,"schema":{"type":"string","enum":["full","long","medium","short"]},"example":"full","x-randomapi-param-group":"route"},{"name":"timeStyle","in":"query","description":"CLDR time length. full and long include the time-zone name; medium includes seconds; short is hours and minutes.","required":false,"schema":{"type":"string","enum":["full","long","medium","short"]},"example":"short","x-randomapi-param-group":"route"},{"name":"timeZone","in":"query","description":"IANA time zone id, case-insensitive (Europe/Copenhagen, asia/tokyo, UTC). Unknown ids are a 400; browse them at /api/timezones.","required":false,"schema":{"type":"string","minLength":2,"maxLength":64,"default":"UTC"},"example":"Europe/Copenhagen","x-randomapi-param-group":"route"},{"name":"calendar","in":"query","description":"CLDR calendar identifier such as gregory, buddhist, hebrew, islamic-umalqura, japanese or iso8601. Defaults to the locale's own calendar; unknown identifiers are a 400.","required":false,"schema":{"type":"string","minLength":3,"maxLength":32},"example":"buddhist","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["at","formatted"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"at,formatted"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["resolvedOptions"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"resolvedOptions"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/LocaleFormatsDateTimeEnvelope"},{"$ref":"#/components/schemas/LocaleFormatsDateTimeRecord"}]},"example":{"data":{"at":"2026-01-15T12:34:56.000Z","formatted":"Donnerstag, 15. Januar 2026 um 12:34:56 Koordinierte Weltzeit","locale":"de-DE","timeZone":"UTC","calendar":"gregory","numberingSystem":"latn","hourCycle":"h23","parts":[{"type":"integer","value":"1"},{"type":"group","value":"."},{"type":"integer","value":"234"}],"resolvedOptions":{"locale":"de-DE","numberingSystem":"latn","style":"decimal","minimumIntegerDigits":1,"minimumFractionDigits":0,"maximumFractionDigits":3,"useGrouping":"auto","notation":"standard","signDisplay":"auto"}},"meta":{"endpoint":"locale-formats","route":"/date-time","params":{"locale":"de-DE","timeZone":"UTC"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Locale number & date formats","url":"https://randomapi.dev/apis/locale-formats"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/locale-formats/patterns":{"get":{"operationId":"get_locale_formats_patterns","tags":["text"],"summary":"Separators, grouping, currency position, hour cycle and week start for one locale","description":"Every value is derived from the runtime's own formatToParts output and Intl.Locale info accessors — nothing is hardcoded. A locale the runtime has no data for is an explicit 404. Authoritative source: ECMA-402 Intl formatters evaluated with the serving runtime's Unicode CLDR data.","parameters":[{"name":"locale","in":"query","description":"Unicode BCP 47 locale identifier such as de-DE, hi-IN or en-US-u-nu-arab. It is canonicalized, then checked against the data this runtime actually holds for the formatter the route uses; a locale with no data is rejected instead of being answered in the runtime's default language.","required":true,"schema":{"type":"string","minLength":2,"maxLength":64},"example":"de-DE","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["locale","resolvedLocale"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"locale,resolvedLocale"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["textDirection"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"textDirection"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/LocaleFormatsPatternsEnvelope"},{"$ref":"#/components/schemas/LocaleFormatsPatternsRecord"}]},"example":{"data":{"locale":"de-DE","resolvedLocale":"de-DE","decimalSeparator":",","groupSeparator":".","groupingPattern":"3;3","minimumGroupingDigits":1,"percentSign":"%","minusSign":"-","plusSign":"+","defaultNumberingSystem":"latn","currencyPosition":"suffix","currencySpacing":" ","accountingNegativeForm":"minusSign","hourCycle":"h23","calendar":"gregory","shortDatePattern":"dd.MM.yy","firstDayOfWeek":1,"firstDayOfWeekName":"Monday","weekendDays":[6,7],"textDirection":"ltr"},"meta":{"endpoint":"locale-formats","route":"/patterns","params":{"locale":"de-DE"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"The serving runtime has no number/date-time pattern data for the requested well-formed locale tag.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?locale=zzzzzzz"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Locale number & date formats","url":"https://randomapi.dev/apis/locale-formats"},"x-randomapi-kind":"real","x-randomapi-mode":"lookup"}},"/api/locale-formats/list":{"get":{"operationId":"get_locale_formats_list","tags":["text"],"summary":"Join items the way a locale writes lists","description":"Intl.ListFormat conjunction, disjunction and unit output. English conjunctions keep the Oxford comma; Japanese uses ideographic commas. Authoritative source: ECMA-402 Intl formatters evaluated with the serving runtime's Unicode CLDR data.","parameters":[{"name":"locale","in":"query","description":"Unicode BCP 47 locale identifier such as de-DE, hi-IN or en-US-u-nu-arab. It is canonicalized, then checked against the data this runtime actually holds for the formatter the route uses; a locale with no data is rejected instead of being answered in the runtime's default language.","required":true,"schema":{"type":"string","minLength":2,"maxLength":64},"example":"de-DE","x-randomapi-param-group":"route"},{"name":"items","in":"query","description":"Comma-separated list items, 1–20 entries of at most 100 characters each. Surrounding whitespace is trimmed and empty entries are dropped. Serialized as one comma-separated query value.","required":true,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["red","green","blue"],"style":"form","explode":false,"x-randomapi-param-group":"route","x-randomapi-query-example":"red,green,blue"},{"name":"type","in":"query","description":"conjunction is an 'and' list, disjunction an 'or' list, unit a plain enumeration used for measurements.","required":false,"schema":{"type":"string","enum":["conjunction","disjunction","unit"],"default":"conjunction"},"example":"disjunction","x-randomapi-param-group":"route"},{"name":"style","in":"query","description":"Length of the connecting words. Many locales render all three identically; Danish disjunctions shorten 'eller' to 'el.'.","required":false,"schema":{"type":"string","enum":["long","short","narrow"],"default":"long"},"example":"short","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["items","formatted"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"items,formatted"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["resolvedOptions"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"resolvedOptions"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/LocaleFormatsListEnvelope"},{"$ref":"#/components/schemas/LocaleFormatsListRecord"}]},"example":{"data":{"items":["red","green","blue"],"formatted":"red, green, and blue","locale":"en-US","type":"conjunction","style":"long","parts":[{"type":"integer","value":"1"},{"type":"group","value":"."},{"type":"integer","value":"234"}],"resolvedOptions":{"locale":"de-DE","numberingSystem":"latn","style":"decimal","minimumIntegerDigits":1,"minimumFractionDigits":0,"maximumFractionDigits":3,"useGrouping":"auto","notation":"standard","signDisplay":"auto"}},"meta":{"endpoint":"locale-formats","route":"/list","params":{"locale":"de-DE","items":["red","green","blue"],"type":"conjunction","style":"long"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Locale number & date formats","url":"https://randomapi.dev/apis/locale-formats"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/locale-formats/relative-time":{"get":{"operationId":"get_locale_formats_relative_time","tags":["text"],"summary":"Write a relative time the way a locale phrases it","description":"Intl.RelativeTimeFormat with numeric='auto' by default, so -1 day becomes 'yesterday' rather than '1 day ago' where the locale has a word for it. Authoritative source: ECMA-402 Intl formatters evaluated with the serving runtime's Unicode CLDR data.","parameters":[{"name":"locale","in":"query","description":"Unicode BCP 47 locale identifier such as de-DE, hi-IN or en-US-u-nu-arab. It is canonicalized, then checked against the data this runtime actually holds for the formatter the route uses; a locale with no data is rejected instead of being answered in the runtime's default language.","required":true,"schema":{"type":"string","minLength":2,"maxLength":64},"example":"de-DE","x-randomapi-param-group":"route"},{"name":"value","in":"query","description":"Signed offset in the chosen unit — negative is in the past, positive in the future. Must be finite.","required":true,"schema":{"type":"number","minimum":-1000000000000000,"maximum":1000000000000000},"example":-1,"x-randomapi-param-group":"route"},{"name":"unit","in":"query","description":"Time unit the value is counted in.","required":true,"schema":{"type":"string","enum":["year","quarter","month","week","day","hour","minute","second"]},"example":"day","x-randomapi-param-group":"route"},{"name":"numeric","in":"query","description":"auto lets the locale use idiomatic words such as 'yesterday' or 'gestern' when it has one; always keeps the number, giving '1 day ago'.","required":false,"schema":{"type":"string","enum":["always","auto"],"default":"auto"},"example":"always","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["value","unit"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"value,unit"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["resolvedOptions"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"resolvedOptions"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/LocaleFormatsRelativeTimeEnvelope"},{"$ref":"#/components/schemas/LocaleFormatsRelativeTimeRecord"}]},"example":{"data":{"value":-1,"unit":"day","formatted":"yesterday","locale":"en-US","numeric":"auto","parts":[{"type":"integer","value":"1","unit":"day"},{"type":"literal","value":" day ago","unit":null}],"resolvedOptions":{"locale":"de-DE","numberingSystem":"latn","style":"decimal","minimumIntegerDigits":1,"minimumFractionDigits":0,"maximumFractionDigits":3,"useGrouping":"auto","notation":"standard","signDisplay":"auto"}},"meta":{"endpoint":"locale-formats","route":"/relative-time","params":{"locale":"de-DE","value":-1,"unit":"day","numeric":"auto"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Locale number & date formats","url":"https://randomapi.dev/apis/locale-formats"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/log-lines":{"get":{"operationId":"get_log_lines_root","tags":["developer"],"summary":"Generate log lines with their parsed fields","description":"One record per line: the raw `line`, its `format`, the ground-truth `parsed` fields and the ISO 8601 `timestamp` it denotes. Two requests differing only in `logFormat` describe the same underlying requests in different syntaxes.","parameters":[{"name":"logFormat","in":"query","description":"Line syntax. Named `logFormat` because the universal `format` parameter already selects the response encoding (json, ndjson or csv).","required":false,"schema":{"type":"string","enum":["json","logfmt","apacheCombined","apacheCommon","nginxError","syslog5424","syslog3164"],"default":"json"},"example":"apacheCombined","x-randomapi-param-group":"route"},{"name":"level","in":"query","description":"Severity of every line. Maps to RFC 5424 severity (debug 7, info 6, warn 4, error 3, fatal 2) and to nginx's debug/info/warn/error/crit. Omit and it follows the status class. Ignored with a warning for the two NCSA syntaxes, which have no level.","required":false,"schema":{"type":"string","enum":["debug","info","warn","error","fatal"]},"example":"error","x-randomapi-param-group":"route"},{"name":"status","in":"query","description":"Pin the HTTP status code of every generated request. Omit for a realistic mix weighted towards 200. An nginx error line has no status field: there the code instead selects the logged condition, and only 400, 401, 403, 404, 413, 429, 499, 500, 502, 503 and 504 have one — the rest share a generic buffering message, with a warning saying so.","required":false,"schema":{"type":"integer","minimum":100,"maximum":599},"example":404,"x-randomapi-param-group":"route"},{"name":"facility","in":"query","description":"syslog facility from RFC 5424 Table 1 (kern=0 … local7=23), used to compute PRI. Codes 12–15 have no agreed keyword across implementations, so they use the RFC's own descriptions. Ignored with a warning outside the two syslog syntaxes.","required":false,"schema":{"type":"string","enum":["kern","user","mail","daemon","auth","syslog","lpr","news","uucp","cron","authpriv","ftp","ntp","logAudit","logAlert","clockDaemon","local0","local1","local2","local3","local4","local5","local6","local7"]},"example":"local0","x-randomapi-param-group":"route"},{"name":"service","in":"query","description":"Application name for the syntaxes that carry one (JSON/logfmt `service`, RFC 5424 APP-NAME, RFC 3164 TAG). 1–32 characters: a letter or digit, then letters, digits, '.', '_' or '-'. For syslog3164 the non-alphanumeric characters are stripped, because RFC 3164 terminates the TAG at the first one.","required":false,"schema":{"type":"string","minLength":1,"maxLength":32},"example":"checkout","x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Earliest line timestamp, inclusive. With only `from`, `to` resolves exactly 24 hours later; with neither bound the window is the last 24 hours. Both resolved values are echoed in `meta.params`. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-01T00:00:00Z","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Latest line timestamp, inclusive. With only `to`, `from` resolves exactly 24 hours earlier. Must be ≥ `from`, which is otherwise a 400 naming both instants. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-02T00:00:00Z","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["line","format"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"line,format"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["timestamp"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"timestamp"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/LogLinesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/LogLinesRootRecord"}}]},"example":{"data":[{"line":"192.0.2.42 - - [25/Jul/2026:14:32:10 +0000] \"GET /api/items HTTP/1.1\" 200 1439 \"https://www.example.com/\" \"curl/8.7.1\"","format":"apacheCombined","parsed":{"host":"192.0.2.42","ident":null,"authuser":null,"timestamp":"25/Jul/2026:14:32:10 +0000","request":"GET /api/items HTTP/1.1","method":"GET","path":"/api/items","protocol":"HTTP/1.1","status":200,"bytes":1439,"referer":"https://www.example.com/","userAgent":"curl/8.7.1"},"timestamp":"2026-07-25T14:32:10.482Z"}],"meta":{"endpoint":"log-lines","count":1,"seed":42,"params":{"logFormat":"json"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"line\":\"192.0.2.42 - - [25/Jul/2026:14:32:10 +0000] \\\"GET /api/items HTTP/1.1\\\" 200 1439 \\\"https://www.example.com/\\\" \\\"curl/8.7.1\\\"\",\"format\":\"apacheCombined\",\"parsed\":{\"host\":\"192.0.2.42\",\"ident\":null,\"authuser\":null,\"timestamp\":\"25/Jul/2026:14:32:10 +0000\",\"request\":\"GET /api/items HTTP/1.1\",\"method\":\"GET\",\"path\":\"/api/items\",\"protocol\":\"HTTP/1.1\",\"status\":200,\"bytes\":1439,\"referer\":\"https://www.example.com/\",\"userAgent\":\"curl/8.7.1\"},\"timestamp\":\"2026-07-25T14:32:10.482Z\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Sample Log Lines API","url":"https://randomapi.dev/apis/log-lines"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/log-lines/burst":{"get":{"operationId":"get_log_lines_burst","tags":["developer"],"summary":"One request's access, error and application lines","description":"The three lines a single request leaves behind, in the order the request produced them — received, mid-request, completed — with each entry's exact instant in `offsetMs` and `timestamp`. They share a client, a request line and a status; only the application line has a field for the request id.","parameters":[{"name":"status","in":"query","description":"Pin the HTTP status code of every generated request. Omit for a realistic mix weighted towards 200. An nginx error line has no status field: there the code instead selects the logged condition, and only 400, 401, 403, 404, 413, 429, 499, 500, 502, 503 and 504 have one — the rest share a generic buffering message, with a warning saying so.","required":false,"schema":{"type":"integer","minimum":100,"maximum":599},"example":404,"x-randomapi-param-group":"route"},{"name":"service","in":"query","description":"Application name, used verbatim as `service` in the JSON application line. 1–32 characters: a letter or digit, then letters, digits, '.', '_' or '-'. The access and nginx error lines of a burst have no field for it, so it appears in one of the three lines only.","required":false,"schema":{"type":"string","minLength":1,"maxLength":32},"example":"checkout","x-randomapi-param-group":"route"},{"name":"at","in":"query","description":"The instant the request was received — the timestamp of the access line. Defaults to now and is echoed in `meta.params`. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-25T14:32:10.482Z","x-randomapi-param-group":"route"},{"name":"seed","in":"query","description":"Reproducibility key for everything the request instant does not fix: path, client, user agent, duration and identifiers. Same seed and same `at` ⇒ byte-identical lines. Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer","minimum":0,"maximum":4294967295,"default":0},"example":42,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["requestId","service"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"requestId,service"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["lines"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"lines"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/LogLinesBurstEnvelope"},{"$ref":"#/components/schemas/LogLinesBurstRecord"}]},"example":{"data":{"requestId":"9f2c1a7b4e0d5386","service":"checkout","method":"POST","path":"/api/checkout","status":502,"clientIp":"192.0.2.42","host":"app.example.com","receivedAt":"2026-07-25T14:32:10.482Z","completedAt":"2026-07-25T14:32:11.021Z","durationMs":539,"lines":[{"stage":"access","format":"apacheCombined","offsetMs":0,"timestamp":"2026-07-25T14:32:10.482Z","line":"192.0.2.42 - - [25/Jul/2026:14:32:10 +0000] \"POST /api/checkout HTTP/1.1\" 502 210 \"-\" \"curl/8.7.1\"","parsed":{"status":502}}]},"meta":{"endpoint":"log-lines","route":"/burst","params":{"seed":0},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Sample Log Lines API","url":"https://randomapi.dev/apis/log-lines"},"x-randomapi-kind":"mock","x-randomapi-mode":"compute"}},"/api/lorem":{"get":{"operationId":"get_lorem_root","tags":["text"],"summary":"Generate lorem ipsum paragraphs, sentences or words","description":"Lorem ipsum placeholder text — one paragraph, sentence or word per record, each with a word count, optionally opening with 'Lorem ipsum dolor sit amet'.","parameters":[{"name":"type","in":"query","description":"Unit each record contains: one paragraph (3–7 sentences), one sentence (4–12 words) or one single word.","required":false,"schema":{"type":"string","enum":["paragraphs","sentences","words"],"default":"paragraphs"},"example":"sentences","x-randomapi-param-group":"route"},{"name":"startWithLorem","in":"query","description":"Open the first record with the classic phrase 'Lorem ipsum dolor sit amet'; all other records are unaffected. Ignored for type=words (a warning says so). Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["text","words"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"text,words"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["words"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"words"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/LoremRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/LoremRootRecord"}}]},"example":{"data":[{"text":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.","words":19}],"meta":{"endpoint":"lorem","count":1,"seed":42,"params":{"type":"paragraphs","startWithLorem":false},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"text\":\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\",\"words\":19}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Lorem ipsum","url":"https://randomapi.dev/apis/lorem"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/magnetic-declination":{"get":{"operationId":"get_magnetic_declination_root","tags":["geo"],"summary":"Declination, inclination, field intensity, X/Y/Z components and their annual rates of change at a point","description":"Evaluates WMM2025 at one geodetic coordinate, height and date. `date` defaults to today in UTC and must resolve inside 2025-01-01…2029-12-31 — outside it the answer is a 400, never an extrapolation. Authoritative sources: NOAA NCEI / BGS World Magnetic Model 2025 (WMM2025) coefficients; The US/UK World Magnetic Model for 2025–2030: Technical Report (NOAA NCEI, DOI 10.25923/prbc-s316); WMM accuracy, limitations and error model (NOAA NCEI).","parameters":[{"name":"lat","in":"query","description":"Geodetic (WGS 84) latitude in decimal degrees, positive north. ±90 is accepted: the East component's polar singularity is handled by the model's limiting series, so the poles answer a real value instead of NaN.","required":true,"schema":{"type":"number","minimum":-90,"maximum":90},"example":55.6761,"x-randomapi-param-group":"route"},{"name":"lng","in":"query","description":"Geodetic (WGS 84) longitude in decimal degrees, positive east. The antimeridian is not special — the expansion only ever uses cos/sin of multiples of the longitude.","required":true,"schema":{"type":"number","minimum":-180,"maximum":180},"example":12.5683,"x-randomapi-param-group":"route"},{"name":"date","in":"query","description":"Calendar date the field is evaluated for (YYYY-MM-DD), which **defaults to today in UTC** — the resolved value comes back in the `date` field and in `meta.params.date`. Must land inside 2025-01-01…2029-12-31; anything else is a 400 rather than an extrapolation. Internally the date becomes the model's decimal year, `year + (dayOfYear − 1) / (365 or 366)`. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-01","x-randomapi-param-group":"route"},{"name":"altitudeKm","in":"query","description":"Height above the WGS 84 ellipsoid in kilometres. WMM2025's documented envelope is −1 km to 850 km and both ends are inclusive; sea level (0) is the default.","required":false,"schema":{"type":"number","minimum":-1,"maximum":850,"default":0},"example":100,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["date","decimalYear"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"date,decimalYear"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["model"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"model"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/MagneticDeclinationRootEnvelope"},{"$ref":"#/components/schemas/MagneticDeclinationRootRecord"}]},"example":{"data":{"date":"2026-07-01","decimalYear":2026.49589,"latitude":55.6761,"longitude":12.5683,"altitudeKm":0,"declinationDegrees":5.23,"inclinationDegrees":70.31,"horizontalIntensityNt":17107.9,"totalIntensityNt":50765.6,"northComponentNt":17036.7,"eastComponentNt":1559,"verticalComponentNt":47796.1,"gridVariationDegrees":-7.34,"annualChange":{"declinationDegrees":0.16,"inclinationDegrees":0.02,"horizontalIntensityNt":-0.2,"totalIntensityNt":46.4,"northComponentNt":-4.5,"eastComponentNt":46.5,"verticalComponentNt":49.3},"uncertainty":{"declinationDegrees":0.41,"inclinationDegrees":0.2,"horizontalIntensityNt":133,"totalIntensityNt":138,"northComponentNt":137,"eastComponentNt":89,"verticalComponentNt":141},"compassZone":"normal","model":"WMM2025"},"meta":{"endpoint":"magnetic-declination","params":{"lat":55.6761,"lng":12.5683,"altitudeKm":0},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Magnetic declination (WMM2025)","url":"https://randomapi.dev/apis/magnetic-declination"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/magnetic-declination/true-heading":{"get":{"operationId":"get_magnetic_declination_true_heading","tags":["geo"],"summary":"Convert a magnetic compass heading to true, or a true heading to magnetic, at a point","description":"Supply exactly one of `magneticHeading` or `trueHeading`; supplying both is a 400 because the other one is the answer, not an input. Both headings come back normalised into [0, 360), so a heading that wraps past north does not print as 362°. Authoritative sources: NOAA NCEI / BGS World Magnetic Model 2025 (WMM2025) coefficients; The US/UK World Magnetic Model for 2025–2030: Technical Report (NOAA NCEI, DOI 10.25923/prbc-s316); WMM accuracy, limitations and error model (NOAA NCEI).","parameters":[{"name":"lat","in":"query","description":"Geodetic (WGS 84) latitude in decimal degrees, positive north. ±90 is accepted: the East component's polar singularity is handled by the model's limiting series, so the poles answer a real value instead of NaN.","required":true,"schema":{"type":"number","minimum":-90,"maximum":90},"example":55.6761,"x-randomapi-param-group":"route"},{"name":"lng","in":"query","description":"Geodetic (WGS 84) longitude in decimal degrees, positive east. The antimeridian is not special — the expansion only ever uses cos/sin of multiples of the longitude.","required":true,"schema":{"type":"number","minimum":-180,"maximum":180},"example":12.5683,"x-randomapi-param-group":"route"},{"name":"date","in":"query","description":"Calendar date the field is evaluated for (YYYY-MM-DD), which **defaults to today in UTC** — the resolved value comes back in the `date` field and in `meta.params.date`. Must land inside 2025-01-01…2029-12-31; anything else is a 400 rather than an extrapolation. Internally the date becomes the model's decimal year, `year + (dayOfYear − 1) / (365 or 366)`. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-01","x-randomapi-param-group":"route"},{"name":"altitudeKm","in":"query","description":"Height above the WGS 84 ellipsoid in kilometres. WMM2025's documented envelope is −1 km to 850 km and both ends are inclusive; sea level (0) is the default.","required":false,"schema":{"type":"number","minimum":-1,"maximum":850,"default":0},"example":100,"x-randomapi-param-group":"route"},{"name":"magneticHeading","in":"query","description":"Compass (magnetic) heading in degrees. Supply exactly one of `magneticHeading` or `trueHeading`. 360 is accepted and normalises to 0.","required":false,"schema":{"type":"number","minimum":0,"maximum":360},"example":45,"x-randomapi-param-group":"route"},{"name":"trueHeading","in":"query","description":"True (geographic) heading in degrees, for the inverse conversion. Supply exactly one of `magneticHeading` or `trueHeading`.","required":false,"schema":{"type":"number","minimum":0,"maximum":360},"example":90,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["date","decimalYear"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"date,decimalYear"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["declinationUncertaintyDegrees"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"declinationUncertaintyDegrees"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/MagneticDeclinationTrueHeadingEnvelope"},{"$ref":"#/components/schemas/MagneticDeclinationTrueHeadingRecord"}]},"example":{"data":{"date":"2026-07-01","decimalYear":2026.49589,"latitude":55.6761,"longitude":12.5683,"altitudeKm":0,"providedHeading":"magnetic","magneticHeading":45,"trueHeading":50.23,"declinationDegrees":5.23,"rule":"true = magnetic + declination (east declination positive); magnetic = true − declination","horizontalIntensityNt":17107.9,"compassZone":"normal","declinationUncertaintyDegrees":0.41},"meta":{"endpoint":"magnetic-declination","route":"/true-heading","params":{"lat":55.6761,"lng":12.5683,"altitudeKm":0},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Magnetic declination (WMM2025)","url":"https://randomapi.dev/apis/magnetic-declination"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/magnetic-declination/model":{"get":{"operationId":"get_magnetic_declination_model","tags":["geo"],"summary":"The pinned model: epoch, validity window, degree/order, coefficient counts and provenance","description":"The one route that never rejects a date. It exists so the other routes' refusal is discoverable and machine-checkable: `?date=2031-01-01` returns 200 with `withinValidity: false` and a negative `daysUntilExpiry`. Authoritative sources: NOAA NCEI / BGS World Magnetic Model 2025 (WMM2025) coefficients; The US/UK World Magnetic Model for 2025–2030: Technical Report (NOAA NCEI, DOI 10.25923/prbc-s316); WMM accuracy, limitations and error model (NOAA NCEI).","parameters":[{"name":"date","in":"query","description":"Date to test against the model's validity window; defaults to today in UTC. Unlike the other routes this one never rejects a date — reporting on out-of-window dates is its purpose. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2030-06-01","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["model","epoch"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"model,epoch"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["daysUntilExpiry"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"daysUntilExpiry"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/MagneticDeclinationModelEnvelope"},{"$ref":"#/components/schemas/MagneticDeclinationModelRecord"}]},"example":{"data":{"model":"WMM2025","epoch":2025,"validFrom":"2025-01-01","validUntil":"2029-12-31","releaseDate":"2024-12-17","degree":12,"order":12,"coefficientRows":90,"mainFieldCoefficients":168,"secularVariationCoefficients":168,"geomagneticReferenceRadiusKm":6371.2,"ellipsoid":"WGS 84","altitudeRangeKm":{"min":-1,"max":850},"producedBy":"Produced by the US National Geospatial-Intelligence Agency (NGA) and the UK Defence Geographic Centre (DGC); jointly developed by NOAA NCEI and the British Geological Survey (BGS).","coefficientFileSha256":"dfa8597825af4e0b87ff4198a5b4fb661b3c49f4cd090cd0164e0259b075582f","date":"2026-07-01","decimalYear":2026.49589,"withinValidity":true,"daysUntilExpiry":1279},"meta":{"endpoint":"magnetic-declination","route":"/model","params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Magnetic declination (WMM2025)","url":"https://randomapi.dev/apis/magnetic-declination"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/magnetic-declination/coefficients":{"get":{"operationId":"get_magnetic_declination_coefficients","tags":["geo"],"summary":"The 90 WMM2025 Gauss coefficient rows, the model NOAA ships only inside a zip","description":"The whole model as JSON, in the coefficient file's own canonical order (degree 1…12, and within each degree, order 0…degree). Filters narrow it; every valid `degree`/`order` pair matches at least one row, so an impossible combination is a 400 rather than a silently empty list. This route has no `date` param and no expiry behaviour. Authoritative sources: NOAA NCEI / BGS World Magnetic Model 2025 (WMM2025) coefficients; The US/UK World Magnetic Model for 2025–2030: Technical Report (NOAA NCEI, DOI 10.25923/prbc-s316); WMM accuracy, limitations and error model (NOAA NCEI).","parameters":[{"name":"degree","in":"query","description":"Spherical-harmonic degree n. Omit for all degrees.","required":false,"schema":{"type":"integer","minimum":1,"maximum":12},"example":1,"x-randomapi-param-group":"route"},{"name":"order","in":"query","description":"Spherical-harmonic order m. Omit for all orders. Must be ≤ `degree` when both are given.","required":false,"schema":{"type":"integer","minimum":0,"maximum":12},"example":0,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["degree","order"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"degree,order"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["hDotNtPerYear"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"hDotNtPerYear"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/MagneticDeclinationCoefficientsEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/MagneticDeclinationCoefficientsRecord"}}]},"example":{"data":[{"degree":1,"order":0,"gNt":-29351.8,"hNt":null,"gDotNtPerYear":12,"hDotNtPerYear":null}],"meta":{"endpoint":"magnetic-declination","route":"/coefficients","count":1,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"degree\":1,\"order\":0,\"gNt\":-29351.8,\"hNt\":null,\"gDotNtPerYear\":12,\"hDotNtPerYear\":null}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Magnetic declination (WMM2025)","url":"https://randomapi.dev/apis/magnetic-declination"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/map-tiles/from-point":{"get":{"operationId":"get_map_tiles_from_point","tags":["geo"],"summary":"Find the slippy map tile, quadkey and pixel position of a coordinate at one zoom level","description":"Exact floor() point query: bounds are half-open, so a coordinate on an internal edge belongs to the tile east and south of it. Authoritative sources: OGC Two Dimensional Tile Matrix Set and Tile Set Metadata 2.0 (OGC 17-083r4), Annex D.1 WebMercatorQuad; EPSG Geodetic Parameter Dataset — EPSG:3857 WGS 84 / Pseudo-Mercator; Bing Maps Tile System (Microsoft Learn).","parameters":[{"name":"lat","in":"query","description":"Latitude in decimal degrees, ±85.05112878 — Bing Maps' published clip constant, the exact projection edge arctan(sinh(π)) = 85.05112877980659° rounded up in the tenth decimal. Latitudes beyond it are a 400: Web Mercator has no tile rows there, and clamping would answer a different question than the one you asked.","required":true,"schema":{"type":"number","minimum":-85.05112878,"maximum":85.05112878},"example":55.6761,"x-randomapi-param-group":"route"},{"name":"lng","in":"query","description":"Longitude in decimal degrees, -180 to 180 inclusive. lng=180 lands in the easternmost column (2^zoom − 1) and is never normalized to -180 — the same closed-edge rule /api/geohash uses.","required":true,"schema":{"type":"number","minimum":-180,"maximum":180},"example":12.5683,"x-randomapi-param-group":"route"},{"name":"zoom","in":"query","description":"Zoom level (OGC tile matrix id), 0–24. Each level doubles the matrix: 2^zoom tiles per side. 24 is this API's documented ceiling because that is what OGC Annex D.1 tabulates for WebMercatorQuad — the standard itself allows an arbitrary number of levels, so it is not a universal limit.","required":true,"schema":{"type":"integer","minimum":0,"maximum":24},"example":14,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["zoom","x"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"zoom,x"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["pixelInTile"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"pixelInTile"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/MapTilesFromPointEnvelope"},{"$ref":"#/components/schemas/MapTilesFromPointRecord"}]},"example":{"data":{"zoom":14,"x":8763,"y":5128,"tmsY":11255,"quadkey":"12021000113011","zxy":"14/8763/5128","bounds":{"west":12.54638671875,"south":55.665193184436056,"east":12.568359375,"north":55.67758441108952},"boundsMercator":{"minX":1396657.3808267415,"minY":7492051.764399836,"maxX":1399103.3657318652,"maxY":7494497.749304961},"center":{"lat":55.67138928829547,"lng":12.557373046875},"groundResolution":{"atEquator":9.554628535647032,"atCenterLatitude":5.388222805829274},"scaleDenominator":{"atEquator":34123.67334159654,"atCenterLatitude":19243.652877961697,"atCenterLatitude96dpi":20364.936588961038},"parent":{"z":13,"x":4381,"y":2564,"quadkey":"1202100011301"},"children":[{"z":15,"x":17526,"y":10256,"quadkey":"120210001130110"},{"z":15,"x":17527,"y":10256,"quadkey":"120210001130111"},{"z":15,"x":17526,"y":10257,"quadkey":"120210001130112"},{"z":15,"x":17527,"y":10257,"quadkey":"120210001130113"}],"pixelX":2243583.308231111,"pixelY":1312798.6718793944,"pixelInTile":{"x":255.30823111115023,"y":30.67187939444557}},"meta":{"endpoint":"map-tiles","route":"/from-point","params":{"lat":55.6761,"lng":12.5683,"zoom":14},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Slippy map tiles & Web Mercator","url":"https://randomapi.dev/apis/map-tiles"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/map-tiles/tile":{"get":{"operationId":"get_map_tiles_tile","tags":["geo"],"summary":"Resolve a z/x/y tile to its bounds, quadkey, ground resolution and scale","description":"Convert lat/lng to slippy map tile z/x/y and Bing quadkeys, read tile bounds in degrees or EPSG:3857 metres, and list every tile covering a bounding box. Authoritative sources: OGC Two Dimensional Tile Matrix Set and Tile Set Metadata 2.0 (OGC 17-083r4), Annex D.1 WebMercatorQuad; EPSG Geodetic Parameter Dataset — EPSG:3857 WGS 84 / Pseudo-Mercator; Bing Maps Tile System (Microsoft Learn).","parameters":[{"name":"z","in":"query","description":"Zoom level (OGC tile matrix id), 0–24. The matrix is 2^z tiles per side, which is what bounds 'x' and 'y' at this level.","required":true,"schema":{"type":"integer","minimum":0,"maximum":24},"example":14,"x-randomapi-param-group":"route"},{"name":"x","in":"query","description":"Tile column, 0 at 180° W and increasing east. 16777215 is the absolute ceiling (2^24 − 1); the per-zoom bound 0..2^z − 1 is enforced against the 'z' you sent and a value past it is a 400 naming the matrix size.","required":true,"schema":{"type":"integer","minimum":0,"maximum":16777215},"example":8763,"x-randomapi-param-group":"route"},{"name":"y","in":"query","description":"Tile row, read according to 'scheme'. The response always reports both the topLeft row and tmsY, so the answer is unambiguous whichever convention you sent.","required":true,"schema":{"type":"integer","minimum":0,"maximum":16777215},"example":5128,"x-randomapi-param-group":"route"},{"name":"scheme","in":"query","description":"How to read the 'y' you supplied: xyz = OGC cornerOfOrigin topLeft (Google, OpenStreetMap, Bing, Leaflet, MapLibre), tms = OSGeo Tile Map Service, bottomLeft. 'x' is identical in both schemes.","required":false,"schema":{"type":"string","enum":["xyz","tms"],"default":"xyz"},"example":"xyz","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["zoom","x"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"zoom,x"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["children"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"children"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/MapTilesTileEnvelope"},{"$ref":"#/components/schemas/MapTilesTileRecord"}]},"example":{"data":{"zoom":14,"x":8763,"y":5128,"tmsY":11255,"quadkey":"12021000113011","zxy":"14/8763/5128","bounds":{"west":12.54638671875,"south":55.665193184436056,"east":12.568359375,"north":55.67758441108952},"boundsMercator":{"minX":1396657.3808267415,"minY":7492051.764399836,"maxX":1399103.3657318652,"maxY":7494497.749304961},"center":{"lat":55.67138928829547,"lng":12.557373046875},"groundResolution":{"atEquator":9.554628535647032,"atCenterLatitude":5.388222805829274},"scaleDenominator":{"atEquator":34123.67334159654,"atCenterLatitude":19243.652877961697,"atCenterLatitude96dpi":20364.936588961038},"parent":{"z":13,"x":4381,"y":2564,"quadkey":"1202100011301"},"children":[{"z":15,"x":17526,"y":10256,"quadkey":"120210001130110"},{"z":15,"x":17527,"y":10256,"quadkey":"120210001130111"},{"z":15,"x":17526,"y":10257,"quadkey":"120210001130112"},{"z":15,"x":17527,"y":10257,"quadkey":"120210001130113"}]},"meta":{"endpoint":"map-tiles","route":"/tile","params":{"z":14,"x":8763,"y":5128,"scheme":"xyz"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Slippy map tiles & Web Mercator","url":"https://randomapi.dev/apis/map-tiles"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/map-tiles/quadkey":{"get":{"operationId":"get_map_tiles_quadkey","tags":["geo"],"summary":"Decode a Bing Maps quadkey into its tile, bounds and neighbours in the pyramid","description":"The quadkey's length is its zoom level, so one string carries the whole address. Nothing is coerced: a non-base-4 character or a stray space is a 400 naming the character and its position. Authoritative sources: OGC Two Dimensional Tile Matrix Set and Tile Set Metadata 2.0 (OGC 17-083r4), Annex D.1 WebMercatorQuad; EPSG Geodetic Parameter Dataset — EPSG:3857 WGS 84 / Pseudo-Mercator; Bing Maps Tile System (Microsoft Learn).","parameters":[{"name":"value","in":"query","description":"Bing Maps quadkey: 1–24 characters from the digits 0, 1, 2 and 3 (0 = NW, 1 = NE, 2 = SW, 3 = SE). Its length is the zoom level, so 24 characters is the ceiling. Whitespace is not stripped and invalid characters are a 400, never repaired.","required":true,"schema":{"type":"string","minLength":1,"maxLength":24},"example":"12021000113011","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["zoom","x"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"zoom,x"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["children"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"children"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/MapTilesQuadkeyEnvelope"},{"$ref":"#/components/schemas/MapTilesQuadkeyRecord"}]},"example":{"data":{"zoom":14,"x":8763,"y":5128,"tmsY":11255,"quadkey":"12021000113011","zxy":"14/8763/5128","bounds":{"west":12.54638671875,"south":55.665193184436056,"east":12.568359375,"north":55.67758441108952},"boundsMercator":{"minX":1396657.3808267415,"minY":7492051.764399836,"maxX":1399103.3657318652,"maxY":7494497.749304961},"center":{"lat":55.67138928829547,"lng":12.557373046875},"groundResolution":{"atEquator":9.554628535647032,"atCenterLatitude":5.388222805829274},"scaleDenominator":{"atEquator":34123.67334159654,"atCenterLatitude":19243.652877961697,"atCenterLatitude96dpi":20364.936588961038},"parent":{"z":13,"x":4381,"y":2564,"quadkey":"1202100011301"},"children":[{"z":15,"x":17526,"y":10256,"quadkey":"120210001130110"},{"z":15,"x":17527,"y":10256,"quadkey":"120210001130111"},{"z":15,"x":17526,"y":10257,"quadkey":"120210001130112"},{"z":15,"x":17527,"y":10257,"quadkey":"120210001130113"}]},"meta":{"endpoint":"map-tiles","route":"/quadkey","params":{"value":"12021000113011"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Slippy map tiles & Web Mercator","url":"https://randomapi.dev/apis/map-tiles"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/map-tiles/cover":{"get":{"operationId":"get_map_tiles_cover","tags":["geo"],"summary":"List every tile covering a bounding box at one zoom, with the exact count and no truncation","description":"Implements OGC 17-083r4 Annex I.1. The count is always exact; the enumerated list is capped by maxTiles and the cap refuses rather than truncating. Authoritative sources: OGC Two Dimensional Tile Matrix Set and Tile Set Metadata 2.0 (OGC 17-083r4), Annex D.1 WebMercatorQuad; EPSG Geodetic Parameter Dataset — EPSG:3857 WGS 84 / Pseudo-Mercator; Bing Maps Tile System (Microsoft Learn).","parameters":[{"name":"minLat","in":"query","description":"South edge of the box in decimal degrees, ±85.05112878. Must be ≤ 'maxLat'.","required":true,"schema":{"type":"number","minimum":-85.05112878,"maximum":85.05112878},"example":55.6,"x-randomapi-param-group":"route"},{"name":"minLng","in":"query","description":"West edge of the box in decimal degrees, -180 to 180. Must be ≤ 'maxLng': the tile matrix does not wrap, so an antimeridian-crossing box is a 400 asking you to split it.","required":true,"schema":{"type":"number","minimum":-180,"maximum":180},"example":12.4,"x-randomapi-param-group":"route"},{"name":"maxLat","in":"query","description":"North edge of the box in decimal degrees, ±85.05112878. Must be ≥ 'minLat'.","required":true,"schema":{"type":"number","minimum":-85.05112878,"maximum":85.05112878},"example":55.8,"x-randomapi-param-group":"route"},{"name":"maxLng","in":"query","description":"East edge of the box in decimal degrees, -180 to 180. Must be ≥ 'minLng'.","required":true,"schema":{"type":"number","minimum":-180,"maximum":180},"example":12.7,"x-randomapi-param-group":"route"},{"name":"zoom","in":"query","description":"Zoom level (OGC tile matrix id), 0–24. Each level doubles the matrix: 2^zoom tiles per side. 24 is this API's documented ceiling because that is what OGC Annex D.1 tabulates for WebMercatorQuad — the standard itself allows an arbitrary number of levels, so it is not a universal limit.","required":true,"schema":{"type":"integer","minimum":0,"maximum":24},"example":12,"x-randomapi-param-group":"route"},{"name":"includeTiles","in":"query","description":"Whether to enumerate the covering tiles. Set false to get 'tileRange' and the exact 'tileCount' for any box at any zoom with no cap at all — the escape hatch for \"how many tiles would this be?\". Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"maxTiles","in":"query","description":"Ceiling on the enumerated list, 256 by default and 1024 at most. A box needing more returns 400 with the real count — results are never truncated. It does not affect 'tileCount', and 'includeTiles=false' ignores it entirely.","required":false,"schema":{"type":"integer","minimum":1,"maximum":1024,"default":256},"example":1024,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["zoom","bbox"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"zoom,bbox"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["tiles"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"tiles"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/MapTilesCoverEnvelope"},{"$ref":"#/components/schemas/MapTilesCoverRecord"}]},"example":{"data":{"zoom":12,"bbox":{"west":12.4,"south":55.6,"east":12.7,"north":55.8},"tileRange":{"minX":2189,"minY":1279,"maxX":2192,"maxY":1283},"columns":4,"rows":5,"tileCount":20,"tilesIncluded":true,"tiles":[{"z":12,"x":2189,"y":1279,"tmsY":2816,"quadkey":"120032223323"},{"z":12,"x":2190,"y":1279,"tmsY":2816,"quadkey":"120032223332"}]},"meta":{"endpoint":"map-tiles","route":"/cover","params":{"minLat":55.6,"minLng":12.4,"maxLat":55.8,"maxLng":12.7,"zoom":12,"includeTiles":true,"maxTiles":256},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Slippy map tiles & Web Mercator","url":"https://randomapi.dev/apis/map-tiles"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/map-tiles/mercator":{"get":{"operationId":"get_map_tiles_mercator","tags":["geo"],"summary":"Project a coordinate to EPSG:3857 metres, or invert EPSG:3857 metres back to WGS 84","description":"Supply exactly one pair: lat+lng for the forward direction, or x+y for the inverse. Nothing is clamped in either direction. Authoritative sources: OGC Two Dimensional Tile Matrix Set and Tile Set Metadata 2.0 (OGC 17-083r4), Annex D.1 WebMercatorQuad; EPSG Geodetic Parameter Dataset — EPSG:3857 WGS 84 / Pseudo-Mercator; Bing Maps Tile System (Microsoft Learn).","parameters":[{"name":"lat","in":"query","description":"Latitude in decimal degrees for the forward direction, ±85.05112878 (Bing's published clip constant; the exact edge is 85.05112877980659°). Requires 'lng'.","required":false,"schema":{"type":"number","minimum":-85.05112878,"maximum":85.05112878},"example":55.6761,"x-randomapi-param-group":"route"},{"name":"lng","in":"query","description":"Longitude in decimal degrees for the forward direction, -180 to 180. Requires 'lat'. lng=180 projects to exactly R·π = 20037508.342789244 m.","required":false,"schema":{"type":"number","minimum":-180,"maximum":180},"example":12.5683,"x-randomapi-param-group":"route"},{"name":"x","in":"query","description":"EPSG:3857 easting in metres for the inverse direction. Requires 'y'. ±20037508.344 is one symmetric limit shared with 'y', deliberately a hair wider than the projection's exact half-extent R·π = 20037508.342789244. The forward easting never exceeds R·π (lng=180 lands exactly on it) — it is the forward northing that overshoots, reaching ±20037508.343038857 at the extreme accepted latitude, and a tighter shared bound would reject this route's own output. The price on this axis, stated rather than hidden: x = ±20037508.344 inverts to longitude ±180.00000001087642°, about 1.1e-8° (1.2 mm) outside the 'lng' bound — the same closed-edge artefact as y and 'lat'.","required":false,"schema":{"type":"number","minimum":-20037508.344,"maximum":20037508.344},"example":1399096.7561371,"x-randomapi-param-group":"route"},{"name":"y","in":"query","description":"EPSG:3857 northing in metres for the inverse direction. Requires 'x'. Inverted with atan(sinh(y/R)), the form that returns exactly the projection edge at y = R·π. This is the axis the wider bound exists for: the forward northing reaches ±20037508.343038857 at the extreme accepted latitude. The outermost y inverts to ±85.05112878074486°, about 7.4e-10° (0.08 mm) outside the 'lat' bound — the same closed-edge artefact as x and 'lng'.","required":false,"schema":{"type":"number","minimum":-20037508.344,"maximum":20037508.344},"example":7494204.690890856,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["direction","latitude"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"direction,latitude"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["northing"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"northing"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/MapTilesMercatorEnvelope"},{"$ref":"#/components/schemas/MapTilesMercatorRecord"}]},"example":{"data":{"direction":"forward","latitude":55.6761,"longitude":12.5683,"easting":1399096.7561371003,"northing":7494204.690890856},"meta":{"endpoint":"map-tiles","route":"/mercator","params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Slippy map tiles & Web Mercator","url":"https://randomapi.dev/apis/map-tiles"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/markdown":{"get":{"operationId":"get_markdown_root","tags":["text"],"summary":"Generate Markdown documents with strictly-honored feature flags","description":"Multi-section Markdown documents where every feature flag is a hard guarantee — code blocks, tables, lists, links and images appear when on, never when off.","parameters":[{"name":"sections","in":"query","description":"Number of H2 sections after the intro. Each has 1–2 paragraphs plus its share of the enabled features.","required":false,"schema":{"type":"integer","minimum":1,"maximum":10,"default":3},"example":4,"x-randomapi-param-group":"route"},{"name":"codeBlocks","in":"query","description":"Include fenced code blocks tagged js, ts, python or bash. true ⇒ at least one per document; false ⇒ no backticks anywhere. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"tables","in":"query","description":"Include 3-column pipe tables (header + separator + 3 rows). true ⇒ at least one per document; false ⇒ no table syntax anywhere. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"lists","in":"query","description":"Include unordered lists of 3–5 dash items. true ⇒ at least one per document; false ⇒ no list syntax anywhere. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"links","in":"query","description":"Weave inline [text](https://example.com/…) links into paragraphs. true ⇒ at least one per document; false ⇒ no link syntax anywhere. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"images","in":"query","description":"Include a ![figure](…) image from this platform's placeholder API. true ⇒ at least one per document; false (default) ⇒ no image syntax. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":1},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["markdown","wordCount"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"markdown,wordCount"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["sections"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"sections"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/MarkdownRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/MarkdownRootRecord"}}]},"example":{"data":[{"markdown":"# Practical Cache Strategies\n\nVeniam consequatur voluptas nihil tempora.\n\n## Getting Started\n\nQuia sequi rerum aut facilis. See [the deploy guide](https://example.com/docs/deploy) for the full reference.\n\n- Voluptas nihil tempora\n- Quia sequi rerum\n- Aut facilis numquam","wordCount":214,"sections":3}],"meta":{"endpoint":"markdown","count":1,"seed":42,"params":{"sections":3,"codeBlocks":true,"tables":true,"lists":true,"links":true,"images":false},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"markdown\":\"# Practical Cache Strategies\\n\\nVeniam consequatur voluptas nihil tempora.\\n\\n## Getting Started\\n\\nQuia sequi rerum aut facilis. See [the deploy guide](https://example.com/docs/deploy) for the full reference.\\n\\n- Voluptas nihil tempora\\n- Quia sequi rerum\\n- Aut facilis numquam\",\"wordCount\":214,\"sections\":3}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Markdown documents","url":"https://randomapi.dev/apis/markdown"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/mime-types":{"get":{"operationId":"get_mime_types_root","tags":["developer"],"summary":"List media types (filter by category, search, registration or extension)","description":"Filters are ANDed and results stay in registry order (alphabetical by media type). With no filters this returns the whole table — every filter genuinely narrows it, and no match is an empty list with a warning, never a substituted row. Authoritative sources: IANA Media Types registry (complete snapshot, registry updated 2026-07-22); mime-db 1.54.0 (MIT) — file extensions and compressibility; Curated for this API: the one-line descriptions, a short list of de-facto types absent from both upstreams, and the pinned winner for each extension two types claim.","parameters":[{"name":"category","in":"query","description":"Only return types under this top-level type.","required":false,"schema":{"type":"string","enum":["application","audio","chemical","font","haptics","image","message","model","multipart","text","video","x-conference","x-shader","any"],"default":"any"},"example":"font","x-randomapi-param-group":"route"},{"name":"search","in":"query","description":"Case-insensitive substring match against the media type or any of its extensions (a leading dot is ignored, so 'search=.md' works).","required":false,"schema":{"type":"string"},"example":"json","x-randomapi-param-group":"route"},{"name":"registered","in":"query","description":"'yes' keeps only types in the IANA registry; 'no' keeps only the de-facto types that were never registered.","required":false,"schema":{"type":"string","enum":["any","yes","no"],"default":"any"},"example":"no","x-randomapi-param-group":"route"},{"name":"hasExtension","in":"query","description":"'yes' keeps only types with at least one known file extension — most of the registry has none.","required":false,"schema":{"type":"string","enum":["any","yes","no"],"default":"any"},"example":"yes","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["mimeType","extensions"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"mimeType,extensions"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["note"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"note"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/MimeTypesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/MimeTypesRootRecord"}}]},"example":{"data":[{"mimeType":"application/pdf","extensions":["pdf"],"category":"application","description":"Portable Document Format (RFC 8118).","compressible":false,"registered":true,"reference":"[RFC8118]","note":"OBSOLETED in favor of text/javascript"}],"meta":{"endpoint":"mime-types","count":1,"params":{"category":"any","registered":"any","hasExtension":"any"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"mimeType\":\"application/pdf\",\"extensions\":[\"pdf\"],\"category\":\"application\",\"description\":\"Portable Document Format (RFC 8118).\",\"compressible\":false,\"registered\":true,\"reference\":\"[RFC8118]\",\"note\":\"OBSOLETED in favor of text/javascript\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for MIME types","url":"https://randomapi.dev/apis/mime-types"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/mime-types/lookup":{"get":{"operationId":"get_mime_types_lookup","tags":["developer"],"summary":"Resolve one entry by file extension or exact media type","description":"Provide `ext` **or** `type`. When both are given, `ext` wins and a warning is added. An extension claimed by several types resolves to a pinned winner and warns with the alternatives. Unknown values return a 404 with the closest real matches — never a substitute type. Authoritative sources: IANA Media Types registry (complete snapshot, registry updated 2026-07-22); mime-db 1.54.0 (MIT) — file extensions and compressibility; Curated for this API: the one-line descriptions, a short list of de-facto types absent from both upstreams, and the pinned winner for each extension two types claim.","parameters":[{"name":"ext","in":"query","description":"File extension to resolve (case-insensitive; a leading dot is fine: 'pdf' or '.pdf').","required":false,"schema":{"type":"string"},"example":"pdf","x-randomapi-param-group":"route"},{"name":"type","in":"query","description":"Exact media type to look up (case-insensitive), e.g. to find its extensions.","required":false,"schema":{"type":"string"},"example":"application/pdf","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["mimeType","extensions"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"mimeType,extensions"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["note"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"note"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/MimeTypesLookupEnvelope"},{"$ref":"#/components/schemas/MimeTypesLookupRecord"}]},"example":{"data":{"mimeType":"application/pdf","extensions":["pdf"],"category":"application","description":"Portable Document Format (RFC 8118).","compressible":false,"registered":true,"reference":"[RFC8118]","note":"OBSOLETED in favor of text/javascript"},"meta":{"endpoint":"mime-types","route":"/lookup","params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"No bundled media-type row matches the requested extension or exact type.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?ext=zzz"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for MIME types","url":"https://randomapi.dev/apis/mime-types"},"x-randomapi-kind":"real","x-randomapi-mode":"lookup"}},"/api/mime-types/parse":{"get":{"operationId":"get_mime_types_parse","tags":["developer"],"summary":"Parse and canonicalize one RFC 9110 Content-Type value","description":"Parses a singleton concrete media type. Unknown-but-valid types return known=false; malformed syntax, wildcards, duplicate parameters and CR/LF injection return 400. Authoritative sources: IANA Media Types registry (complete snapshot, registry updated 2026-07-22); mime-db 1.54.0 (MIT) — file extensions and compressibility; Curated for this API: the one-line descriptions, a short list of de-facto types absent from both upstreams, and the pinned winner for each extension two types claim.","parameters":[{"name":"value","in":"query","description":"One Content-Type field value, limited to 2048 characters and 32 ordered parameters.","required":true,"schema":{"type":"string","minLength":3,"maxLength":2048},"example":"Application/Problem+JSON; Charset=\"utf-8\"; profile=\"https://example.test/problem\"","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["contentType","mimeType"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"contentType,mimeType"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["note"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"note"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/MimeTypesParseEnvelope"},{"$ref":"#/components/schemas/MimeTypesParseRecord"}]},"example":{"data":{"contentType":"application/problem+json;charset=utf-8;profile=\"https://example.test/problem\"","mimeType":"application/problem+json","type":"application","subtype":"problem+json","suffix":"json","parameters":[{"name":"charset","value":"utf-8"}],"known":true,"registered":true,"extensions":["json"],"category":"application","description":"JSON data (RFC 8259); .map covers JavaScript source maps.","compressible":true,"reference":"[RFC8259]","note":"OBSOLETED in favor of text/javascript"},"meta":{"endpoint":"mime-types","route":"/parse","params":{"value":"Application/Problem+JSON; Charset=\"utf-8\"; profile=\"https://example.test/problem\""},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for MIME types","url":"https://randomapi.dev/apis/mime-types"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/money/to-minor":{"get":{"operationId":"get_money_to_minor","tags":["commerce"],"summary":"Convert an exact major-unit decimal string to integer minor units","description":"Exact ISO 4217 major/minor-unit conversion and weighted allocation using decimal strings and integer arithmetic — no floats, rounding or FX rates. Authoritative source: ISO 4217 minor-unit exponents maintained by SIX on behalf of ISO.","parameters":[{"name":"amount","in":"query","description":"Canonical decimal amount string (no exponent, separators or leading zeroes). It must already fit the currency's minor-unit precision; no rounding occurs.","required":true,"schema":{"type":"string","minLength":1,"maxLength":72},"example":"123.45","x-randomapi-param-group":"route"},{"name":"currency","in":"query","description":"Active ISO 4217 currency code, case-insensitive. XDR is rejected because ISO defines no minor unit for it.","required":true,"schema":{"type":"string","minLength":3,"maxLength":3},"example":"DKK","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["currency","decimalDigits"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"currency,decimalDigits"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["minorUnits"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"minorUnits"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/MoneyToMinorEnvelope"},{"$ref":"#/components/schemas/MoneyToMinorRecord"}]},"example":{"data":{"currency":"DKK","decimalDigits":2,"amount":"123.45","minorUnits":"12345"},"meta":{"endpoint":"money","route":"/to-minor","params":{"amount":"123.45","currency":"DKK"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Exact money arithmetic","url":"https://randomapi.dev/apis/money"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/money/from-minor":{"get":{"operationId":"get_money_from_minor","tags":["commerce"],"summary":"Convert an integer minor-unit string to an exact major-unit amount","description":"Exact ISO 4217 major/minor-unit conversion and weighted allocation using decimal strings and integer arithmetic — no floats, rounding or FX rates. Authoritative source: ISO 4217 minor-unit exponents maintained by SIX on behalf of ISO.","parameters":[{"name":"minor","in":"query","description":"Canonical signed integer minor-unit string without decimal point, exponent or leading zeroes.","required":true,"schema":{"type":"string","minLength":1,"maxLength":72},"example":"12345","x-randomapi-param-group":"route"},{"name":"currency","in":"query","description":"Active ISO 4217 currency code, case-insensitive. XDR is rejected because ISO defines no minor unit for it.","required":true,"schema":{"type":"string","minLength":3,"maxLength":3},"example":"DKK","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["currency","decimalDigits"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"currency,decimalDigits"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["amount"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"amount"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/MoneyFromMinorEnvelope"},{"$ref":"#/components/schemas/MoneyFromMinorRecord"}]},"example":{"data":{"currency":"DKK","decimalDigits":2,"minorUnits":"12345","amount":"123.45"},"meta":{"endpoint":"money","route":"/from-minor","params":{"minor":"12345","currency":"DKK"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Exact money arithmetic","url":"https://randomapi.dev/apis/money"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/money/allocate":{"get":{"operationId":"get_money_allocate","tags":["commerce"],"summary":"Split an exact amount by positive integer weights without losing a minor unit","description":"Exact ISO 4217 major/minor-unit conversion and weighted allocation using decimal strings and integer arithmetic — no floats, rounding or FX rates. Authoritative source: ISO 4217 minor-unit exponents maintained by SIX on behalf of ISO.","parameters":[{"name":"amount","in":"query","description":"Canonical decimal amount string (no exponent, separators or leading zeroes). It must already fit the currency's minor-unit precision; no rounding occurs.","required":true,"schema":{"type":"string","minLength":1,"maxLength":72},"example":"123.45","x-randomapi-param-group":"route"},{"name":"currency","in":"query","description":"Active ISO 4217 currency code, case-insensitive. XDR is rejected because ISO defines no minor unit for it.","required":true,"schema":{"type":"string","minLength":3,"maxLength":3},"example":"DKK","x-randomapi-param-group":"route"},{"name":"weights","in":"query","description":"Comma-separated positive integer weights (1–20 entries, each at most 999999999).","required":true,"schema":{"type":"string","minLength":1,"maxLength":199},"example":"1,1,1","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["currency","decimalDigits"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"currency,decimalDigits"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["allocations"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"allocations"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/MoneyAllocateEnvelope"},{"$ref":"#/components/schemas/MoneyAllocateRecord"}]},"example":{"data":{"currency":"DKK","decimalDigits":2,"amount":"10.00","minorUnits":"1000","totalWeight":"3","allocations":[{"index":0,"weight":"1","minorUnits":"334","amount":"3.34"},{"index":1,"weight":"1","minorUnits":"333","amount":"3.33"},{"index":2,"weight":"1","minorUnits":"333","amount":"3.33"}]},"meta":{"endpoint":"money","route":"/allocate","params":{"amount":"123.45","currency":"DKK","weights":"1,1,1"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Exact money arithmetic","url":"https://randomapi.dev/apis/money"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/moon/phase":{"get":{"operationId":"get_moon_phase","tags":["datetime"],"summary":"Illuminated fraction, phase angle, lunar age, distance and the surrounding primary phases","description":"`at` is an absolute instant (a bare date means UTC midnight); omit it for now. Every value is geocentric — a topocentric observer's illuminated fraction differs by up to about 0.7 percentage points near the horizon, and that difference is not modelled. Authoritative sources: ELP-2000/82B lunar solution — Chapront-Touzé & Chapront (A&A 124, 50, 1983; series A&A 190, 342, 1988), machine-readable series and reference subroutine as published by the CDS; VSOP87D planetary solution — Bretagnon & Francou (A&A 202, 309, 1988), Earth series used for the Sun's apparent longitude; IAU 1980 nutation series as published by the IERS Earth Orientation Centre; U.S. Naval Observatory Astronomical Applications Department — published phase, rise, set and transit times used to verify the series; JPL Horizons (DE441) — topocentric and geometric lunar ephemeris used to verify the series.","parameters":[{"name":"at","in":"query","description":"Absolute instant: YYYY-MM-DD (UTC midnight) or RFC 3339 with Z or an explicit offset, resolved year 1900–2100. Defaults to now. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-29T14:36:00Z","x-randomapi-param-group":"route"},{"name":"tz","in":"query","description":"IANA zone used to render `localTime` and every `local` inside the phase objects, case-insensitive. It never moves the instant; unknown ids return a 400.","required":false,"schema":{"type":"string","default":"UTC"},"example":"Europe/Copenhagen","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["at","timezone"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"at,timezone"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["nextFullMoon"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"nextFullMoon"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/MoonPhaseEnvelope"},{"$ref":"#/components/schemas/MoonPhaseRecord"}]},"example":{"data":{"at":"2026-07-29T14:36:00.000Z","timezone":"Europe/Copenhagen","localTime":"2026-07-29T16:36:00","illuminatedFraction":0.99967,"phaseAngleDegrees":2.073,"elongationDegrees":180.0031,"phaseName":"full","waxing":false,"ageDays":15.20313,"lunationNumber":1281,"distanceKm":399616.1,"apparentDiameterDegrees":0.4982,"previousNewMoon":{"instant":"2026-07-14T09:43:30.000Z","local":"2026-07-14T11:43:30","deltaTSeconds":75.4},"nextPrimaryPhase":{"phase":"last-quarter","instant":"2026-08-06T02:21:22.000Z","local":"2026-08-06T04:21:22","deltaTSeconds":75.5},"nextFullMoon":{"instant":"2026-08-28T04:18:25.000Z","local":"2026-08-28T06:18:25","deltaTSeconds":75.5}},"meta":{"endpoint":"moon","route":"/phase","params":{"tz":"UTC"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Moon Phase, Moonrise & Moonset API","url":"https://randomapi.dev/apis/moon"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/moon/times":{"get":{"operationId":"get_moon_times","tags":["datetime"],"summary":"Moonrise, moonset and lunar transit on one local civil date, with honest nulls","description":"`date` is a **local civil date** in `tz`; omit it for today in that zone. The route reports the events that actually fall inside that local date — it does not pair a rise with a set. Because the lunar day is about 24 h 50 min long, a civil date can contain a moonset with no moonrise (or the reverse), and `moonset` can precede `moonrise`. Authoritative sources: ELP-2000/82B lunar solution — Chapront-Touzé & Chapront (A&A 124, 50, 1983; series A&A 190, 342, 1988), machine-readable series and reference subroutine as published by the CDS; VSOP87D planetary solution — Bretagnon & Francou (A&A 202, 309, 1988), Earth series used for the Sun's apparent longitude; IAU 1980 nutation series as published by the IERS Earth Orientation Centre; U.S. Naval Observatory Astronomical Applications Department — published phase, rise, set and transit times used to verify the series; JPL Horizons (DE441) — topocentric and geometric lunar ephemeris used to verify the series.","parameters":[{"name":"lat","in":"query","description":"Observer latitude in WGS 84 decimal degrees, positive north (−90 to 90).","required":true,"schema":{"type":"number","minimum":-90,"maximum":90},"example":55.6761,"x-randomapi-param-group":"route"},{"name":"lng","in":"query","description":"Observer longitude in WGS 84 decimal degrees, positive east (−180 to 180).","required":true,"schema":{"type":"number","minimum":-180,"maximum":180},"example":12.5683,"x-randomapi-param-group":"route"},{"name":"date","in":"query","description":"Local civil date (YYYY-MM-DD) in the resolved zone, years 1900–2100. Defaults to today in that zone. An RFC 3339 timestamp is accepted too and is reduced to the local civil date that instant falls on in `tz` — except at exactly 00:00 UTC, which is indistinguishable from the bare date and is read as that calendar date. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-29","x-randomapi-param-group":"route"},{"name":"tz","in":"query","description":"IANA zone used to resolve the local civil date, its start and end instants, and every `local` wall clock, case-insensitive. Unknown ids return a 400 — browse them at /api/timezones.","required":false,"schema":{"type":"string","default":"UTC"},"example":"Europe/Copenhagen","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["date","timezone"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"date,timezone"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["extraEvents"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"extraEvents"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/MoonTimesEnvelope"},{"$ref":"#/components/schemas/MoonTimesRecord"}]},"example":{"data":{"date":"2026-07-29","timezone":"Europe/Copenhagen","latitude":55.6761,"longitude":12.5683,"moonrise":{"instant":"2026-07-29T19:35:56.000Z","local":"2026-07-29T21:35:56","azimuthDegrees":127.07,"reason":null},"moonset":{"instant":"2026-07-29T02:23:54.000Z","local":"2026-07-29T04:23:54","azimuthDegrees":226.84,"reason":null},"upperTransit":{"instant":"2026-07-28T22:48:09.000Z","local":"2026-07-29T00:48:09","altitudeDegrees":10.3,"reason":null},"aboveHorizonSeconds":24478,"illuminatedFractionAtTransit":0.99533,"extraEvents":[]},"meta":{"endpoint":"moon","route":"/times","params":{"lat":55.6761,"lng":12.5683,"tz":"UTC"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Moon Phase, Moonrise & Moonset API","url":"https://randomapi.dev/apis/moon"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/moon/position":{"get":{"operationId":"get_moon_position","tags":["datetime"],"summary":"Topocentric altitude, azimuth, apparent right ascension, declination and distance at an instant","description":"`at` is an absolute instant; omit it for now. Altitude is topocentric and geometric — parallax for the observer's position on the WGS 84 ellipsoid is applied, atmospheric refraction is not. Authoritative sources: ELP-2000/82B lunar solution — Chapront-Touzé & Chapront (A&A 124, 50, 1983; series A&A 190, 342, 1988), machine-readable series and reference subroutine as published by the CDS; VSOP87D planetary solution — Bretagnon & Francou (A&A 202, 309, 1988), Earth series used for the Sun's apparent longitude; IAU 1980 nutation series as published by the IERS Earth Orientation Centre; U.S. Naval Observatory Astronomical Applications Department — published phase, rise, set and transit times used to verify the series; JPL Horizons (DE441) — topocentric and geometric lunar ephemeris used to verify the series.","parameters":[{"name":"lat","in":"query","description":"Observer latitude in WGS 84 decimal degrees, positive north (−90 to 90).","required":true,"schema":{"type":"number","minimum":-90,"maximum":90},"example":55.6761,"x-randomapi-param-group":"route"},{"name":"lng","in":"query","description":"Observer longitude in WGS 84 decimal degrees, positive east (−180 to 180).","required":true,"schema":{"type":"number","minimum":-180,"maximum":180},"example":12.5683,"x-randomapi-param-group":"route"},{"name":"at","in":"query","description":"Absolute instant: YYYY-MM-DD (UTC midnight) or RFC 3339 with Z or an explicit offset, resolved year 1900–2100. Defaults to now. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-29T00:00:00Z","x-randomapi-param-group":"route"},{"name":"tz","in":"query","description":"IANA zone used only to render `localTime`, case-insensitive. It does not move the instant; unknown ids return a 400.","required":false,"schema":{"type":"string","default":"UTC"},"example":"Europe/Copenhagen","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["at","timezone"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"at,timezone"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["aboveHorizon"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"aboveHorizon"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/MoonPositionEnvelope"},{"$ref":"#/components/schemas/MoonPositionRecord"}]},"example":{"data":{"at":"2026-07-29T00:00:00.000Z","timezone":"Europe/Copenhagen","localTime":"2026-07-29T02:00:00","latitude":55.6761,"longitude":12.5683,"altitudeDegrees":9.0873,"azimuthDegrees":196.2188,"rightAscensionDegrees":301.6825,"declinationDegrees":-23.8409,"distanceKm":400076.5,"horizontalParallaxDegrees":0.911,"apparentDiameterDegrees":0.4976,"parallacticAngleDegrees":9.9148,"hourAngleDegrees":17.5494,"aboveHorizon":true},"meta":{"endpoint":"moon","route":"/position","params":{"lat":55.6761,"lng":12.5683,"tz":"UTC"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Moon Phase, Moonrise & Moonset API","url":"https://randomapi.dev/apis/moon"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/moon/phases":{"get":{"operationId":"get_moon_phases","tags":["datetime"],"summary":"Every new moon, first quarter, full moon and last quarter of a year","description":"`year` selects by the **local civil year in `tz`**, so `tz` genuinely changes which instants are in scope near 1 January. Omit `year` for the current year in that zone. `count` acts as a limit only — a year holds 49 or 50 primary phases. Authoritative sources: ELP-2000/82B lunar solution — Chapront-Touzé & Chapront (A&A 124, 50, 1983; series A&A 190, 342, 1988), machine-readable series and reference subroutine as published by the CDS; VSOP87D planetary solution — Bretagnon & Francou (A&A 202, 309, 1988), Earth series used for the Sun's apparent longitude; IAU 1980 nutation series as published by the IERS Earth Orientation Centre; U.S. Naval Observatory Astronomical Applications Department — published phase, rise, set and transit times used to verify the series; JPL Horizons (DE441) — topocentric and geometric lunar ephemeris used to verify the series.","parameters":[{"name":"year","in":"query","description":"Local civil year in the resolved zone (1900–2100). Defaults to the current year in that zone.","required":false,"schema":{"type":"integer","minimum":1900,"maximum":2100},"example":2026,"x-randomapi-param-group":"route"},{"name":"phase","in":"query","description":"Keep only one of the four primary phases, matched case-insensitively. Omit for all four.","required":false,"schema":{"type":"string","enum":["new","first-quarter","full","last-quarter"]},"example":"full","x-randomapi-param-group":"route"},{"name":"tz","in":"query","description":"IANA zone that selects the civil year and renders every `local` wall clock, case-insensitive. Unknown ids return a 400.","required":false,"schema":{"type":"string","default":"UTC"},"example":"Europe/Copenhagen","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["phase","instant"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"phase,instant"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["deltaTSeconds"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"deltaTSeconds"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/MoonPhasesEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/MoonPhasesRecord"}}]},"example":{"data":[{"phase":"full","instant":"2026-07-29T14:35:36.000Z","local":"2026-07-29T16:35:36","localDate":"2026-07-29","lunationNumber":1281,"deltaTSeconds":75.4}],"meta":{"endpoint":"moon","route":"/phases","count":1,"params":{"tz":"UTC"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"phase\":\"full\",\"instant\":\"2026-07-29T14:35:36.000Z\",\"local\":\"2026-07-29T16:35:36\",\"localDate\":\"2026-07-29\",\"lunationNumber\":1281,\"deltaTSeconds\":75.4}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Moon Phase, Moonrise & Moonset API","url":"https://randomapi.dev/apis/moon"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/mrz":{"get":{"operationId":"get_mrz_root","tags":["people"],"summary":"Generate MRZ test fixtures with correct check digits","description":"Each record is one complete machine readable zone plus the fields it encodes. Issuing State and nationality are always UTO and the document number is always SPECIMEN plus a digit.","parameters":[{"name":"type","in":"query","description":"MRZ document format. td1 = 3 lines of 30, td2 = 2 lines of 36, td3 = 2 lines of 44 (the passport layout), mrva = 2 lines of 44 and mrvb = 2 lines of 36 (machine readable visas).","required":false,"schema":{"type":"string","enum":["td1","td2","td3","mrva","mrvb"],"default":"td3"},"example":"td1","x-randomapi-param-group":"route"},{"name":"sex","in":"query","description":"Sex written to the MRZ. M and F are written verbatim; X writes the filler '<', which is what Doc 9303 requires in the MRZ when the printed page shows X. Omit for a mix.","required":false,"schema":{"type":"string","enum":["M","F","X"]},"example":"F","x-randomapi-param-group":"route"},{"name":"expired","in":"query","description":"true forces an expiry date strictly before the asOf anchor, false forces one strictly after. Omit for a realistic mix of roughly one expired document in sixteen. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean"},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"longName","in":"query","description":"true builds a name long enough to overflow the field, forcing the Doc 9303-4 Section 4.2.3 truncation path (the field is filled to the last position and ends with a letter). Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"minAge","in":"query","description":"Youngest holder age in completed years at the asOf anchor. Must be ≤ maxAge.","required":false,"schema":{"type":"integer","minimum":0,"maximum":120,"default":18},"example":25,"x-randomapi-param-group":"route"},{"name":"maxAge","in":"query","description":"Oldest holder age in completed years at the asOf anchor. Must be ≥ minAge.","required":false,"schema":{"type":"integer","minimum":0,"maximum":120,"default":80},"example":40,"x-randomapi-param-group":"route"},{"name":"asOf","in":"query","description":"Replayable evaluation anchor (UTC midnight) for ageYears and for expired. Defaults to today; must be between 1970-01-01 and 2099-12-31. The resolved anchor is echoed in meta.params. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-01","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"locale","in":"query","description":"Locale for the generated data (names, addresses, …).","required":false,"schema":{"type":"string","enum":["en","da","de","fr","es","it","pt","ja"],"default":"en"},"example":"da","x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["type","mrz"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"type,mrz"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["checkDigits"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"checkDigits"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/MrzRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/MrzRootRecord"}}]},"example":{"data":[{"type":"td3","mrz":"PPUTOKLOCKO<<ADALINE<<<<<<<<<<<<<<<<<<<<<<<<\nSPECIMEN91UTO9607011F2907022<<<<<<<<<<<<<<02","lines":["PPUTOKLOCKO<<ADALINE<<<<<<<<<<<<<<<<<<<<<<<<","SPECIMEN91UTO9607011F2907022<<<<<<<<<<<<<<02"],"lineLength":44,"documentCode":"PP","issuingState":"UTO","nationality":"UTO","documentNumber":"SPECIMEN9","primaryIdentifier":"KLOCKO","secondaryIdentifier":"ADALINE","nameField":"KLOCKO<<ADALINE<<<<<<<<<<<<<<<<<<<<<<<<","nameTruncated":false,"sex":"F","dateOfBirth":"1996-07-01","dateOfExpiry":"2029-07-02","ageYears":30,"expired":false,"optionalData":["<<<<<<<<<<<<<<"],"checkDigits":{"documentNumber":"1","dateOfBirth":"1","dateOfExpiry":"2","optionalData":"0","composite":"2"}}],"meta":{"endpoint":"mrz","count":1,"seed":42,"locale":"en","params":{"type":"td3","longName":false,"minAge":18,"maxAge":80},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"type\":\"td3\",\"mrz\":\"PPUTOKLOCKO<<ADALINE<<<<<<<<<<<<<<<<<<<<<<<<\\nSPECIMEN91UTO9607011F2907022<<<<<<<<<<<<<<02\",\"lines\":[\"PPUTOKLOCKO<<ADALINE<<<<<<<<<<<<<<<<<<<<<<<<\",\"SPECIMEN91UTO9607011F2907022<<<<<<<<<<<<<<02\"],\"lineLength\":44,\"documentCode\":\"PP\",\"issuingState\":\"UTO\",\"nationality\":\"UTO\",\"documentNumber\":\"SPECIMEN9\",\"primaryIdentifier\":\"KLOCKO\",\"secondaryIdentifier\":\"ADALINE\",\"nameField\":\"KLOCKO<<ADALINE<<<<<<<<<<<<<<<<<<<<<<<<\",\"nameTruncated\":false,\"sex\":\"F\",\"dateOfBirth\":\"1996-07-01\",\"dateOfExpiry\":\"2029-07-02\",\"ageYears\":30,\"expired\":false,\"optionalData\":[\"<<<<<<<<<<<<<<\"],\"checkDigits\":{\"documentNumber\":\"1\",\"dateOfBirth\":\"1\",\"dateOfExpiry\":\"2\",\"optionalData\":\"0\",\"composite\":\"2\"}}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Passport MRZ Generator & Validator API","url":"https://randomapi.dev/apis/mrz"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/mrz/validate":{"get":{"operationId":"get_mrz_validate","tags":["people"],"summary":"Recompute every ICAO 7-3-1 check digit of an MRZ","description":"Structural check only: geometry, MRZ alphabet, sex, date fields and every check digit. It never throws on malformed input and never claims a document is authentic.","parameters":[{"name":"mrz","in":"query","description":"The MRZ lines, separated by newlines (%0A) or by '|'. One unbroken 90, 88 or 72-character blob is split by the only geometry it can be. ASCII lower-case letters are upper-cased; anything else stays visible and invalid.","required":true,"schema":{"type":"string","minLength":1,"maxLength":200},"example":"PPUTOERIKSSON<<ANNA<MARIA<<<<<<<<<<<<<<<<<<<|L898902C36UTO7408122F1204159ZE184226B<<<<<10","x-randomapi-param-group":"route"},{"name":"type","in":"query","description":"MRZ document format. td1 = 3 lines of 30, td2 = 2 lines of 36, td3 = 2 lines of 44 (the passport layout), mrva = 2 lines of 44 and mrvb = 2 lines of 36 (machine readable visas). Omit to detect the format from the line count, the line length and the leading V of a visa.","required":false,"schema":{"type":"string","enum":["td1","td2","td3","mrva","mrvb"]},"example":"td3","x-randomapi-param-group":"route"},{"name":"locale","in":"query","description":"Locale for the generated data (names, addresses, …).","required":false,"schema":{"type":"string","enum":["en","da","de","fr","es","it","pt","ja"],"default":"en"},"example":"da","x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["input","normalized"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"input,normalized"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["reasons"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"reasons"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/MrzValidateEnvelope"},{"$ref":"#/components/schemas/MrzValidateRecord"}]},"example":{"data":{"input":"ppUTOERIKSSON<<ANNA<MARIA<<<<<<<<<<<<<<<<<<<|L898902C36UTO7408122F1204159ZE184226B<<<<<10","normalized":"PPUTOERIKSSON<<ANNA<MARIA<<<<<<<<<<<<<<<<<<<\nL898902C36UTO7408122F1204159ZE184226B<<<<<10","type":"td3","lines":["PPUTOERIKSSON<<ANNA<MARIA<<<<<<<<<<<<<<<<<<<","L898902C36UTO7408122F1204159ZE184226B<<<<<10"],"lineLengths":[44,44],"expectedLineCount":2,"expectedLineLength":44,"geometryValid":true,"characterSetValid":true,"parsed":{"documentCode":"PP","issuingState":"UTO","documentNumber":"L898902C3","documentNumberCheckDigit":"6","nationality":"UTO","dateOfBirth":"740812","dateOfBirthCheckDigit":"2","sex":"F","dateOfExpiry":"120415","dateOfExpiryCheckDigit":"9","optionalData":["ZE184226B<<<<<"],"optionalDataCheckDigit":"1","compositeCheckDigit":"0","nameField":"ERIKSSON<<ANNA<MARIA<<<<<<<<<<<<<<<<<<<","primaryIdentifier":"ERIKSSON","secondaryIdentifier":"ANNA MARIA"},"checkDigits":[{"field":"documentNumber","covers":"line 2, positions 1-9","expected":"6","found":"6","valid":true}],"valid":true,"reasons":[]},"meta":{"endpoint":"mrz","route":"/validate","locale":"en","params":{"mrz":"PPUTOERIKSSON<<ANNA<MARIA<<<<<<<<<<<<<<<<<<<|L898902C36UTO7408122F1204159ZE184226B<<<<<10"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Passport MRZ Generator & Validator API","url":"https://randomapi.dev/apis/mrz"},"x-randomapi-kind":"mock","x-randomapi-mode":"compute"}},"/api/names":{"get":{"operationId":"get_names_root","tags":["people"],"summary":"Generate random person names","description":"Random person names — first, last and full — with a strict gender filter, locale-aware name pools in 8 languages and seed-reproducible output.","parameters":[{"name":"gender","in":"query","description":"Only generate names of this gender — constrains both the first-name pool and the gender field of every record. Omit for a random per-record mix.","required":false,"schema":{"type":"string","enum":["male","female"]},"example":"female","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"locale","in":"query","description":"Locale for the generated data (names, addresses, …).","required":false,"schema":{"type":"string","enum":["en","da","de","fr","es","it","pt","ja"],"default":"en"},"example":"da","x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["firstName","lastName"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"firstName,lastName"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["gender"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"gender"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/NamesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/NamesRootRecord"}}]},"example":{"data":[{"firstName":"Emily","lastName":"Carter","fullName":"Emily Carter","gender":"female"}],"meta":{"endpoint":"names","count":1,"seed":42,"locale":"en","params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"firstName\":\"Emily\",\"lastName\":\"Carter\",\"fullName\":\"Emily Carter\",\"gender\":\"female\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Names","url":"https://randomapi.dev/apis/names"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/nato-alphabet":{"get":{"operationId":"get_nato_alphabet_root","tags":["developer"],"summary":"The official 36-entry spelling alphabet table","description":"The official ICAO/NATO phonetic alphabet — all 36 characters with code words and pronunciations, plus a /spell route that spells out any text. Authoritative source: ICAO/NATO radiotelephony spelling alphabet.","parameters":[{"name":"group","in":"query","description":"Only the 26 letters, only the 10 digits, or the full table.","required":false,"schema":{"type":"string","enum":["letters","digits","any"],"default":"any"},"example":"letters","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["character","code"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"character,code"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["pronunciation"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"pronunciation"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/NatoAlphabetRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/NatoAlphabetRootRecord"}}]},"example":{"data":[{"character":"A","code":"Alfa","pronunciation":"AL-FAH"}],"meta":{"endpoint":"nato-alphabet","count":1,"params":{"group":"any"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"character\":\"A\",\"code\":\"Alfa\",\"pronunciation\":\"AL-FAH\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for NATO alphabet","url":"https://randomapi.dev/apis/nato-alphabet"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/nato-alphabet/spell":{"get":{"operationId":"get_nato_alphabet_spell","tags":["developer"],"summary":"Spell a text in the NATO alphabet","description":"Letters are matched case-insensitively, digits use the number words, a space becomes `(space)`, any other character passes through unchanged. Authoritative source: ICAO/NATO radiotelephony spelling alphabet.","parameters":[{"name":"text","in":"query","description":"The text to spell (1–100 characters).","required":true,"schema":{"type":"string","minLength":1,"maxLength":100},"example":"hello","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["text","spelled"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"text,spelled"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["sentence"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"sentence"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/NatoAlphabetSpellEnvelope"},{"$ref":"#/components/schemas/NatoAlphabetSpellRecord"}]},"example":{"data":{"text":"hello","spelled":[{"character":"h","code":"Hotel"},{"character":"i","code":"India"}],"sentence":"Hotel India"},"meta":{"endpoint":"nato-alphabet","route":"/spell","params":{"text":"hello"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for NATO alphabet","url":"https://randomapi.dev/apis/nato-alphabet"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/notifications":{"get":{"operationId":"get_notifications_root","tags":["developer"],"summary":"Generate bounded fictional notification lifecycles","description":"Generate channel-specific notifications with safe recipients, bounded send attempts and exact sent/delivered/read/failure dates.","parameters":[{"name":"channel","in":"query","description":"Pin email, SMS, push or in-app recipient/content shape.","required":false,"schema":{"type":"string","enum":["email","sms","push","inApp"]},"example":"push","x-randomapi-param-group":"route"},{"name":"status","in":"query","description":"Pin queued, sent, delivered, read or terminal failed state.","required":false,"schema":{"type":"string","enum":["queued","sent","delivered","read","failed"]},"example":"delivered","x-randomapi-param-group":"route"},{"name":"template","in":"query","description":"Pin one synthetic content template.","required":false,"schema":{"type":"string","enum":["welcome","receipt","securityAlert","reminder"]},"example":"securityAlert","x-randomapi-param-group":"route"},{"name":"attemptCount","in":"query","description":"Exact attempts for non-queued states; failed must equal maxAttempts.","required":false,"schema":{"type":"integer","minimum":1,"maximum":4},"example":2,"x-randomapi-param-group":"route"},{"name":"maxAttempts","in":"query","description":"Terminal retry limit, bounded to four.","required":false,"schema":{"type":"integer","minimum":1,"maximum":4,"default":3},"example":4,"x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Earliest creation time. With only from, to resolves 30 elapsed days later; with neither, defaults 30 UTC days before today. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Latest creation time. With only to, from resolves 30 elapsed days earlier; with neither, defaults to today's UTC end. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-31T23:59:59.999Z","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","channel"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,channel"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["attempts"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"attempts"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/NotificationsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/NotificationsRootRecord"}}]},"example":{"data":[{"id":"ntf_91a3dc7200_00","channel":"push","template":"securityAlert","recipient":{"type":"push","value":"push_test_0123456789abcdef"},"status":"delivered","createdAt":"2026-07-10T08:00:00.000Z","updatedAt":"2026-07-10T08:05:00.000Z","sentAt":"2026-07-10T08:00:02.000Z","deliveredAt":"2026-07-10T08:05:00.000Z","readAt":null,"attemptCount":2,"maxAttempts":4,"error":null,"content":{"subject":null,"title":"Example security alert","body":"A fictional sign-in was recorded for fixture testing.","data":{"template":"securityAlert","fixture":true}},"attempts":[{"number":1,"attemptedAt":"2026-07-10T08:00:01.000Z","durationMs":1000,"outcome":"accepted","response":"accepted for fixture delivery","error":null}]}],"meta":{"endpoint":"notifications","count":1,"seed":42,"params":{"maxAttempts":3},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"ntf_91a3dc7200_00\",\"channel\":\"push\",\"template\":\"securityAlert\",\"recipient\":{\"type\":\"push\",\"value\":\"push_test_0123456789abcdef\"},\"status\":\"delivered\",\"createdAt\":\"2026-07-10T08:00:00.000Z\",\"updatedAt\":\"2026-07-10T08:05:00.000Z\",\"sentAt\":\"2026-07-10T08:00:02.000Z\",\"deliveredAt\":\"2026-07-10T08:05:00.000Z\",\"readAt\":null,\"attemptCount\":2,\"maxAttempts\":4,\"error\":null,\"content\":{\"subject\":null,\"title\":\"Example security alert\",\"body\":\"A fictional sign-in was recorded for fixture testing.\",\"data\":{\"template\":\"securityAlert\",\"fixture\":true}},\"attempts\":[{\"number\":1,\"attemptedAt\":\"2026-07-10T08:00:01.000Z\",\"durationMs\":1000,\"outcome\":\"accepted\",\"response\":\"accepted for fixture delivery\",\"error\":null}]}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Notification fixtures","url":"https://randomapi.dev/apis/notifications"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/numbers":{"get":{"operationId":"get_numbers_root","tags":["chance"],"summary":"Generate random numbers in a range","description":"Random integers or floats in any range — control decimal precision, draw guaranteed-unique values, and pin a seed for reproducible sequences.","parameters":[{"name":"min","in":"query","description":"Lower bound, inclusive (between -1e9 and 1e9). Must be ≤ max. With type=int the effective lower bound is ceil(min).","required":false,"schema":{"type":"number","minimum":-1000000000,"maximum":1000000000,"default":0},"example":1,"x-randomapi-param-group":"route"},{"name":"max","in":"query","description":"Upper bound, inclusive (between -1e9 and 1e9). Must be ≥ min. With type=int the effective upper bound is floor(max).","required":false,"schema":{"type":"number","minimum":-1000000000,"maximum":1000000000,"default":100},"example":50,"x-randomapi-param-group":"route"},{"name":"type","in":"query","description":"int → whole numbers; float → decimals rounded to `precision` places.","required":false,"schema":{"type":"string","enum":["int","float"],"default":"int"},"example":"int","x-randomapi-param-group":"route"},{"name":"precision","in":"query","description":"Decimal places for type=float values (0–10). Defaults to 2. Ignored — with a warning — when type=int.","required":false,"schema":{"type":"integer","minimum":0,"maximum":10},"example":4,"x-randomapi-param-group":"route"},{"name":"unique","in":"query","description":"Guarantee all returned values are distinct (type=int only). Values come from a seeded affine permutation of the integer range, so they are evenly spread, not clustered-random, and seed-stable. The range must hold at least `count` integers; combining unique with type=float is a 400 (floats are effectively always unique). Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/NumbersRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/NumbersRootRecord"}}]},"example":{"data":[{"value":42}],"meta":{"endpoint":"numbers","count":1,"seed":42,"params":{"min":0,"max":100,"type":"int","unique":false},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"value\":42}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Random numbers","url":"https://randomapi.dev/apis/numbers"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/orders":{"get":{"operationId":"get_orders_root","tags":["commerce"],"summary":"Generate coherent fake commerce orders","description":"Internally consistent fake orders with exact line-item totals, currency precision, lifecycle dates, payment state and generic tracking fixtures.","parameters":[{"name":"status","in":"query","description":"Pin every generated order to this lifecycle status. Omit for a weighted mix.","required":false,"schema":{"type":"string","enum":["pending","processing","shipped","delivered","cancelled"]},"example":"shipped","x-randomapi-param-group":"route"},{"name":"currency","in":"query","description":"Active ISO 4217 currency code. Case-insensitive; output is canonical uppercase and amounts use its 0, 2 or 3 minor-unit digits.","required":false,"schema":{"type":"string","default":"USD"},"example":"KWD","x-randomapi-param-group":"route"},{"name":"minItems","in":"query","description":"Minimum number of distinct line items per order (inclusive).","required":false,"schema":{"type":"integer","minimum":1,"maximum":10,"default":1},"example":2,"x-randomapi-param-group":"route"},{"name":"maxItems","in":"query","description":"Maximum number of distinct line items per order (inclusive). Must be ≥ minItems.","required":false,"schema":{"type":"integer","minimum":1,"maximum":10,"default":4},"example":5,"x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Earliest placedAt timestamp. Defaults to 365 days before the resolved to date. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2025-01-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Latest placedAt timestamp (through 9998-12-31). Defaults to the current UTC-day boundary. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2025-12-31","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","orderNumber"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,orderNumber"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["trackingNumber"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"trackingNumber"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/OrdersRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/OrdersRootRecord"}}]},"example":{"data":[{"id":"ord_4c8a6e209d54e2340000","orderNumber":"ORD-2025-X8FQ-001","status":"shipped","currency":"USD","customer":{"id":"cus_123","name":"Avery Chen","email":"avery.chen@example.com"},"shippingAddress":{"recipient":"Avery Chen","street":"42 Market Street","city":"Portland","postalCode":"97205","country":"United States","countryCode":"US"},"lineItems":[{"sku":"SKU-A8F2","name":"Soft Cotton Chair","quantity":2,"unitPrice":24.5,"lineTotal":49}],"subtotal":98,"discount":9.8,"shipping":5,"tax":18.64,"total":111.84,"paymentStatus":"paid","placedAt":"2025-05-10T12:30:00.000Z","shippedAt":"2025-05-12T12:30:00.000Z","deliveredAt":null,"cancelledAt":null,"trackingNumber":"TRK-8QL7M2NP9X"}],"meta":{"endpoint":"orders","count":1,"seed":42,"params":{"currency":"USD","minItems":1,"maxItems":4},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"ord_4c8a6e209d54e2340000\",\"orderNumber\":\"ORD-2025-X8FQ-001\",\"status\":\"shipped\",\"currency\":\"USD\",\"customer\":{\"id\":\"cus_123\",\"name\":\"Avery Chen\",\"email\":\"avery.chen@example.com\"},\"shippingAddress\":{\"recipient\":\"Avery Chen\",\"street\":\"42 Market Street\",\"city\":\"Portland\",\"postalCode\":\"97205\",\"country\":\"United States\",\"countryCode\":\"US\"},\"lineItems\":[{\"sku\":\"SKU-A8F2\",\"name\":\"Soft Cotton Chair\",\"quantity\":2,\"unitPrice\":24.5,\"lineTotal\":49}],\"subtotal\":98,\"discount\":9.8,\"shipping\":5,\"tax\":18.64,\"total\":111.84,\"paymentStatus\":\"paid\",\"placedAt\":\"2025-05-10T12:30:00.000Z\",\"shippedAt\":\"2025-05-12T12:30:00.000Z\",\"deliveredAt\":null,\"cancelledAt\":null,\"trackingNumber\":\"TRK-8QL7M2NP9X\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Orders","url":"https://randomapi.dev/apis/orders"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/pagination/offset":{"get":{"operationId":"get_pagination_offset","tags":["developer"],"summary":"Return one deterministic page with offset/page-number metadata","description":"Deterministic offset and opaque-cursor pagination fixtures with exact totals, stable sorting and no duplicated or skipped records.","parameters":[{"name":"total","in":"query","description":"Total size of the deterministic fixture dataset (0–10,000).","required":false,"schema":{"type":"integer","minimum":0,"maximum":10000,"default":137},"example":137,"x-randomapi-param-group":"route"},{"name":"sort","in":"query","description":"Stable ordering key. name and rank are independent deterministic permutations of id.","required":false,"schema":{"type":"string","enum":["id","name","rank"],"default":"id"},"example":"rank","x-randomapi-param-group":"route"},{"name":"order","in":"query","description":"Ascending or descending order for the selected sort key.","required":false,"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"example":"desc","x-randomapi-param-group":"route"},{"name":"datasetKey","in":"query","description":"Stable dataset namespace. Changing it changes the id/name/rank relationships and invalidates old cursors.","required":false,"schema":{"type":"string","minLength":1,"maxLength":64,"default":"demo"},"example":"catalog-demo","x-randomapi-param-group":"route"},{"name":"page","in":"query","description":"One-based page number. Pages beyond the end return an honest empty items array.","required":false,"schema":{"type":"integer","minimum":1,"maximum":10000,"default":1},"example":3,"x-randomapi-param-group":"route"},{"name":"pageSize","in":"query","description":"Maximum records in this page (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":20},"example":20,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["items","total"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"items,total"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["pageInfo"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"pageInfo"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaginationOffsetEnvelope"},{"$ref":"#/components/schemas/PaginationOffsetRecord"}]},"example":{"data":{"items":[{"id":"item_000041","name":"Item 000087","rank":12}],"total":137,"sort":"id","order":"asc","datasetKey":"demo","pageInfo":{"page":3,"pageSize":20,"totalPages":7,"hasNextPage":true}},"meta":{"endpoint":"pagination","route":"/offset","params":{"total":137,"sort":"id","order":"asc","datasetKey":"demo","page":1,"pageSize":20},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Pagination fixtures","url":"https://randomapi.dev/apis/pagination"},"x-randomapi-kind":"mock","x-randomapi-mode":"compute"}},"/api/pagination/cursor":{"get":{"operationId":"get_pagination_cursor","tags":["developer"],"summary":"Return one deterministic page with opaque cursor metadata","description":"Deterministic offset and opaque-cursor pagination fixtures with exact totals, stable sorting and no duplicated or skipped records.","parameters":[{"name":"total","in":"query","description":"Total size of the deterministic fixture dataset (0–10,000).","required":false,"schema":{"type":"integer","minimum":0,"maximum":10000,"default":137},"example":137,"x-randomapi-param-group":"route"},{"name":"sort","in":"query","description":"Stable ordering key. name and rank are independent deterministic permutations of id.","required":false,"schema":{"type":"string","enum":["id","name","rank"],"default":"id"},"example":"rank","x-randomapi-param-group":"route"},{"name":"order","in":"query","description":"Ascending or descending order for the selected sort key.","required":false,"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"example":"desc","x-randomapi-param-group":"route"},{"name":"datasetKey","in":"query","description":"Stable dataset namespace. Changing it changes the id/name/rank relationships and invalidates old cursors.","required":false,"schema":{"type":"string","minLength":1,"maxLength":64,"default":"demo"},"example":"catalog-demo","x-randomapi-param-group":"route"},{"name":"first","in":"query","description":"Maximum records after the supplied cursor (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":20},"example":20,"x-randomapi-param-group":"route"},{"name":"after","in":"query","description":"Canonical opaque endCursor from the previous page. Omit to start at the beginning; pass it back unchanged. The bound covers every cursor emitted for a valid 64-character Unicode datasetKey.","required":false,"schema":{"type":"string","minLength":1,"maxLength":1024},"example":"eyJ2IjoxLCJwIjoxOSwidCI6MTM3LCJzIjoiaWQiLCJvIjoiYXNjIiwiayI6ImRlbW8ifQ","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["items","total"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"items,total"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["pageInfo"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"pageInfo"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaginationCursorEnvelope"},{"$ref":"#/components/schemas/PaginationCursorRecord"}]},"example":{"data":{"items":[{"id":"item_000041","name":"Item 000087","rank":12}],"total":137,"sort":"id","order":"asc","datasetKey":"demo","pageInfo":{"page":3,"pageSize":20,"totalPages":7,"hasNextPage":true}},"meta":{"endpoint":"pagination","route":"/cursor","params":{"total":137,"sort":"id","order":"asc","datasetKey":"demo","first":20},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Pagination fixtures","url":"https://randomapi.dev/apis/pagination"},"x-randomapi-kind":"mock","x-randomapi-mode":"compute"}},"/api/passphrases":{"get":{"operationId":"get_passphrases_root","tags":["internet"],"summary":"Generate random word-based passphrases","description":"Diceware-style random passphrases from a curated 895-word English list — pick word count, separator and capitalization, with an honest entropy estimate.","parameters":[{"name":"words","in":"query","description":"Number of words per passphrase (3–10). More words = more entropy (~9.8 bits each).","required":false,"schema":{"type":"integer","minimum":3,"maximum":10,"default":4},"example":5,"x-randomapi-param-group":"route"},{"name":"separator","in":"query","description":"String placed between words, up to 3 characters (e.g. '.', '_', '--'). An empty value falls back to the default '-'.","required":false,"schema":{"type":"string","minLength":0,"maxLength":3,"default":"-"},"example":".","x-randomapi-param-group":"route"},{"name":"capitalize","in":"query","description":"Title Case every word (Correct-Horse-Battery). Formatting only — entropy is unchanged. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["passphrase","words"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"passphrase,words"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["entropyBits"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"entropyBits"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PassphrasesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/PassphrasesRootRecord"}}]},"example":{"data":[{"passphrase":"ember-lagoon-violin-frost","words":["ember","lagoon","violin","frost"],"entropyBits":39}],"meta":{"endpoint":"passphrases","count":1,"seed":42,"params":{"words":4,"separator":"-","capitalize":false},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"passphrase\":\"ember-lagoon-violin-frost\",\"words\":[\"ember\",\"lagoon\",\"violin\",\"frost\"],\"entropyBits\":39}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Passphrases","url":"https://randomapi.dev/apis/passphrases"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/passwords":{"get":{"operationId":"get_passwords_root","tags":["internet"],"summary":"Generate random passwords","description":"Random password generator with length, uppercase/digit/symbol toggles, look-alike exclusion, and an honest entropy estimate with a strength rating.","parameters":[{"name":"length","in":"query","description":"Password length in characters (4–128).","required":false,"schema":{"type":"integer","minimum":4,"maximum":128,"default":16},"example":24,"x-randomapi-param-group":"route"},{"name":"uppercase","in":"query","description":"Include uppercase letters A–Z. Lowercase a–z is always included. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"digits","in":"query","description":"Include digits 0–9. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"symbols","in":"query","description":"Include symbols from the pool !@#$%^&*()-_=+[]{};:,.?/ (24 characters). Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":false,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"excludeSimilar","in":"query","description":"Remove the easily-confused characters 0, O, 1, l, I and | from every pool — for passwords humans read or type. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["password","length"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"password,length"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["strength"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"strength"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PasswordsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/PasswordsRootRecord"}}]},"example":{"data":[{"password":"g7#Vqx!2Lm@9pZ.t","length":16,"entropyBits":103,"strength":"very-strong"}],"meta":{"endpoint":"passwords","count":1,"seed":42,"params":{"length":16,"uppercase":true,"digits":true,"symbols":true,"excludeSimilar":false},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"password\":\"g7#Vqx!2Lm@9pZ.t\",\"length\":16,\"entropyBits\":103,\"strength\":\"very-strong\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Passwords","url":"https://randomapi.dev/apis/passwords"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/phone-numbers/parse":{"get":{"operationId":"get_phone_numbers_parse","tags":["developer"],"summary":"Parse one phone number: region, national number, possible-vs-valid verdict and type","description":"Everything is decided from the pinned numbering-plan metadata. Nothing here contacts a network, an operator or a database, so a valid verdict means the number is inside a published range — never that it is assigned, in service or reachable. Authoritative sources: Google libphonenumber — PhoneNumberMetadata.xml, release v9.0.35 (2026-07-17), Apache-2.0; ITU-T Recommendation E.164 — international numbering plan and the 15-digit maximum; Unicode CLDR territory codes — the region identifiers libphonenumber keys its metadata by.","parameters":[{"name":"value","in":"query","description":"The number as written: international (+45 32 12 34 56), national (0151 12345678 with country=DE), or a tel: URI. A literal plus sign must be sent as %2B, because a query string decodes + as a space. The accepted separators are space, TAB, NO-BREAK SPACE, - . ( ) / \\, the U+2010–U+2015 dashes and the full-width forms ＋ － （ ）; every Unicode decimal digit is accepted and mapped to ASCII. Any other character is reported as NOT_A_NUMBER and named. The 32-character cap is this endpoint's own and is stricter than libphonenumber's 250 on purpose.","required":true,"schema":{"type":"string","minLength":1,"maxLength":32},"example":"+45 32 12 34 56","x-randomapi-param-group":"route"},{"name":"country","in":"query","description":"Default region for a number written in national form, as a CLDR two-letter region code (case-insensitive; these are ISO 3166-1 alpha-2 plus the exceptionally reserved AC and TA and the user-assigned XK). Ignored with a warning when value already carries its own plus-prefixed calling code. 001 is accepted as input only so that it can be rejected with an explanation: it is the non-geographical pseudo-region, not a place you dial from.","required":false,"schema":{"type":"string","minLength":2,"maxLength":3},"example":"DE","x-randomapi-param-group":"route"},{"name":"validateForType","in":"query","description":"Additionally report whether the number is valid for this specific type, in validForType. Left null when omitted.","required":false,"schema":{"type":"string","enum":["fixedLine","mobile","fixedLineOrMobile","tollFree","premiumRate","sharedCost","voip","personalNumber","pager","uan","voicemail"]},"example":"mobile","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["input","parsed"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"input,parsed"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["metadataUpdated"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"metadataUpdated"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PhoneNumbersParseEnvelope"},{"$ref":"#/components/schemas/PhoneNumbersParseRecord"}]},"example":{"data":{"input":"+45 32 12 34 56","parsed":true,"failureReason":null,"failureDetail":null,"countryCallingCode":"+45","region":"DK","regionCandidates":["DK"],"nationalNumber":"32123456","nationalPrefixStripped":null,"carrierCode":null,"extension":null,"isPossible":true,"possibleReason":"IS_POSSIBLE","isValid":true,"numberType":"fixedLineOrMobile","validForType":null,"canBeInternationallyDialled":true,"mobileNumberPortableRegion":true,"lengths":{"actual":8,"possible":[8],"localOnly":[]},"e164":"+4532123456","international":"+45 32 12 34 56","national":"32 12 34 56","rfc3966":"tel:+4532123456","notes":["Denmark's fixed-line and mobile ranges both cover this number, so its type is reported as fixedLineOrMobile rather than guessing between them."],"metadataVersion":"v9.0.35","metadataUpdated":"2026-07-17"},"meta":{"endpoint":"phone-numbers","route":"/parse","params":{"value":"+45 32 12 34 56"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Phone number parsing & validation","url":"https://randomapi.dev/apis/phone-numbers"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/phone-numbers/format":{"get":{"operationId":"get_phone_numbers_format","tags":["developer"],"summary":"Format one number as E.164, international, national or RFC 3966 — plus how to dial it from abroad","description":"Formatting is not validation: a possible-but-unassigned number formats perfectly, and isValid is the only field here that speaks to validity. fromRegion implements libphonenumber's formatOutOfCountryCallingNumber, and formatRuleUsed exposes which published rule produced the grouping. Authoritative sources: Google libphonenumber — PhoneNumberMetadata.xml, release v9.0.35 (2026-07-17), Apache-2.0; ITU-T Recommendation E.164 — international numbering plan and the 15-digit maximum; Unicode CLDR territory codes — the region identifiers libphonenumber keys its metadata by.","parameters":[{"name":"value","in":"query","description":"The number as written: international (+45 32 12 34 56), national (0151 12345678 with country=DE), or a tel: URI. A literal plus sign must be sent as %2B, because a query string decodes + as a space. The accepted separators are space, TAB, NO-BREAK SPACE, - . ( ) / \\, the U+2010–U+2015 dashes and the full-width forms ＋ － （ ）; every Unicode decimal digit is accepted and mapped to ASCII. Any other character is reported as NOT_A_NUMBER and named. The 32-character cap is this endpoint's own and is stricter than libphonenumber's 250 on purpose.","required":true,"schema":{"type":"string","minLength":1,"maxLength":32},"example":"+4532123456","x-randomapi-param-group":"route"},{"name":"country","in":"query","description":"Default region for a number written in national form, as a CLDR two-letter region code (case-insensitive; these are ISO 3166-1 alpha-2 plus the exceptionally reserved AC and TA and the user-assigned XK). Ignored with a warning when value already carries its own plus-prefixed calling code. 001 is accepted as input only so that it can be rejected with an explanation: it is the non-geographical pseudo-region, not a place you dial from.","required":false,"schema":{"type":"string","minLength":2,"maxLength":3},"example":"DE","x-randomapi-param-group":"route"},{"name":"style","in":"query","description":"Which of the four canonical presentations lands in formatted. All four are always returned in their own fields.","required":false,"schema":{"type":"string","enum":["e164","international","national","rfc3966"],"default":"e164"},"example":"national","x-randomapi-param-group":"route"},{"name":"fromRegion","in":"query","description":"Produce outOfCountry: how a caller in this region dials the number, using that region's own IDD prefix. A two-letter region code with numbering metadata; 001 is rejected with an explanation rather than silently ignored, because nobody dials from a non-geographical calling code.","required":false,"schema":{"type":"string","minLength":2,"maxLength":3},"example":"US","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["input","parsed"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"input,parsed"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["metadataUpdated"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"metadataUpdated"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PhoneNumbersFormatEnvelope"},{"$ref":"#/components/schemas/PhoneNumbersFormatRecord"}]},"example":{"data":{"input":"+45 32 12 34 56","parsed":true,"failureReason":null,"failureDetail":null,"countryCallingCode":"+45","region":"DK","nationalNumber":"32123456","extension":null,"e164":"+4532123456","international":"+45 32 12 34 56","national":"32 12 34 56","rfc3966":"tel:+4532123456","formatted":"+4532123456","style":"e164","outOfCountry":null,"internationalPrefixUsed":null,"formatSourceRegion":"DK","formatRuleUsed":"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","isPossible":true,"isValid":true,"notes":["Denmark's fixed-line and mobile ranges both cover this number, so its type is reported as fixedLineOrMobile rather than guessing between them."],"metadataVersion":"v9.0.35","metadataUpdated":"2026-07-17"},"meta":{"endpoint":"phone-numbers","route":"/format","params":{"value":"+4532123456","style":"e164"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Phone number parsing & validation","url":"https://randomapi.dev/apis/phone-numbers"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/phone-numbers/countries":{"get":{"operationId":"get_phone_numbers_countries","tags":["developer"],"summary":"Every numbering plan: calling code, trunk prefix, lengths per number type and example numbers","description":"All 254 territories in the snapshot, including the nine non-geographical 001 rows, in (region, callingCode) order. A row carries every published range with its own lengths and example number, so at most 100 rows come back per request — use 'offset' to page and a warning reports the total. Filters are filters: an unmatched calling code returns an empty list with a warning, never a substitute row. Authoritative sources: Google libphonenumber — PhoneNumberMetadata.xml, release v9.0.35 (2026-07-17), Apache-2.0; ITU-T Recommendation E.164 — international numbering plan and the 15-digit maximum; Unicode CLDR territory codes — the region identifiers libphonenumber keys its metadata by.","parameters":[{"name":"country","in":"query","description":"Keep only this CLDR region (case-insensitive), or 001 for the non-geographical rows. An unknown code is a 400, because a silent empty list would look like a data gap.","required":false,"schema":{"type":"string","minLength":2,"maxLength":3},"example":"DK","x-randomapi-param-group":"route"},{"name":"callingCode","in":"query","description":"Keep only rows on this calling code, with or without a leading plus sign. An unassigned code returns an empty list — this is a filter, not a lookup; use /calling-code for the honest 404.","required":false,"schema":{"type":"string","minLength":1,"maxLength":4},"example":"+1","x-randomapi-param-group":"route"},{"name":"type","in":"query","description":"Keep only regions that publish a range of this kind. The eleventh id, noInternationalDialling, is a dialling restriction rather than a number type.","required":false,"schema":{"type":"string","enum":["fixedLine","mobile","pager","tollFree","premiumRate","sharedCost","personalNumber","voip","uan","voicemail","noInternationalDialling"]},"example":"voip","x-randomapi-param-group":"route"},{"name":"mobileNumberPortable","in":"query","description":"Keep only regions where upstream flags mobile number portability (true) or does not (false). Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean"},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"search","in":"query","description":"Case- and diacritic-insensitive substring match over countryName and region. Rows with a null countryName are matched on their region code alone.","required":false,"schema":{"type":"string","minLength":1,"maxLength":40},"example":"united","x-randomapi-param-group":"route"},{"name":"offset","in":"query","description":"Skip this many matches before returning rows. The snapshot holds more plans than one page can carry, so ?offset=100 continues where the first page stopped.","required":false,"schema":{"type":"integer","minimum":0,"maximum":300,"default":0},"example":100,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to 100.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["region","countryName"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"region,countryName"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["formatRuleCount"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"formatRuleCount"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PhoneNumbersCountriesEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/PhoneNumbersCountriesRecord"}}]},"example":{"data":[{"region":"DK","countryName":"Denmark","callingCode":"+45","zone":4,"mainCountryForCallingCode":true,"regionsSharingCallingCode":1,"internationalPrefix":"00","nationalPrefix":null,"mobileNumberPortable":true,"possibleLengths":[8],"numberTypes":[{"type":"fixedLine","possibleLengths":[8],"localOnlyLengths":[],"exampleNumber":"32123456","exampleE164":"+4532123456"}],"formatSourceRegion":"DK","formatRuleCount":1}],"meta":{"endpoint":"phone-numbers","route":"/countries","count":1,"params":{"offset":0},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"region\":\"DK\",\"countryName\":\"Denmark\",\"callingCode\":\"+45\",\"zone\":4,\"mainCountryForCallingCode\":true,\"regionsSharingCallingCode\":1,\"internationalPrefix\":\"00\",\"nationalPrefix\":null,\"mobileNumberPortable\":true,\"possibleLengths\":[8],\"numberTypes\":[{\"type\":\"fixedLine\",\"possibleLengths\":[8],\"localOnlyLengths\":[],\"exampleNumber\":\"32123456\",\"exampleE164\":\"+4532123456\"}],\"formatSourceRegion\":\"DK\",\"formatRuleCount\":1}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Phone number parsing & validation","url":"https://randomapi.dev/apis/phone-numbers"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/phone-numbers/calling-code":{"get":{"operationId":"get_phone_numbers_calling_code","tags":["developer"],"summary":"One country calling code: which regions share it, in resolution order","description":"Parse and validate phone numbers from libphonenumber's numbering-plan metadata: E.164, national and RFC 3966 forms, number type, possible vs valid. No key. Authoritative sources: Google libphonenumber — PhoneNumberMetadata.xml, release v9.0.35 (2026-07-17), Apache-2.0; ITU-T Recommendation E.164 — international numbering plan and the 15-digit maximum; Unicode CLDR territory codes — the region identifiers libphonenumber keys its metadata by.","parameters":[{"name":"code","in":"query","description":"A country calling code, with or without a leading plus sign (45, +45, 1, 800). One to three digits; an unassigned code is an honest 404.","required":true,"schema":{"type":"string","minLength":1,"maxLength":4},"example":"+1","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["callingCode","zone"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"callingCode,zone"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["metadataUpdated"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"metadataUpdated"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PhoneNumbersCallingCodeEnvelope"},{"$ref":"#/components/schemas/PhoneNumbersCallingCodeRecord"}]},"example":{"data":{"callingCode":"+1","zone":1,"regionCount":25,"mainRegion":"US","isNonGeographic":false,"regions":[{"region":"US","countryName":"United States","main":true,"leadingDigits":null}],"resolutionOrder":["US","AG","AI"],"possibleLengths":[7,10],"metadataVersion":"v9.0.35","metadataUpdated":"2026-07-17"},"meta":{"endpoint":"phone-numbers","route":"/calling-code","params":{"code":"+1"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"The requested well-formed country calling code is not assigned in the pinned metadata.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?code=%2B999"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Phone number parsing & validation","url":"https://randomapi.dev/apis/phone-numbers"},"x-randomapi-kind":"real","x-randomapi-mode":"lookup"}},"/api/phones":{"get":{"operationId":"get_phones_root","tags":["people"],"summary":"Generate fake phone numbers in every representation","description":"Fake, correctly formatted phone numbers in E.164, international and national forms of the same number, using real country codes and lengths across 8 locales.","parameters":[{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"locale","in":"query","description":"Locale for the generated data (names, addresses, …).","required":false,"schema":{"type":"string","enum":["en","da","de","fr","es","it","pt","ja"],"default":"en"},"example":"da","x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["e164","international"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"e164,international"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["countryCode"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"countryCode"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PhonesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/PhonesRootRecord"}}]},"example":{"data":[{"e164":"+12125550134","international":"+1 212 555 0134","national":"212 555 0134","countryCallingCode":"+1","countryCode":"US"}],"meta":{"endpoint":"phones","count":1,"seed":42,"locale":"en","params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"e164\":\"+12125550134\",\"international\":\"+1 212 555 0134\",\"national\":\"212 555 0134\",\"countryCallingCode\":\"+1\",\"countryCode\":\"US\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Phone numbers","url":"https://randomapi.dev/apis/phones"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/plural-rules/select":{"get":{"operationId":"get_plural_rules_select","tags":["text"],"summary":"Select the cardinal or ordinal plural category for one numeric value","description":"Select real cardinal or ordinal plural categories for a BCP 47 locale with runtime ECMA-402/CLDR rules and explicit locale validation. Authoritative source: ECMA-402 Intl.PluralRules evaluated with the runtime's Unicode CLDR data.","parameters":[{"name":"locale","in":"query","description":"Unicode BCP 47 locale identifier. It is canonicalized, then explicitly checked against the runtime's plural-rule data; unsupported locales are a 400, never a silent default-locale fallback.","required":true,"schema":{"type":"string","minLength":2,"maxLength":64},"example":"en-US","x-randomapi-param-group":"route"},{"name":"type","in":"query","description":"cardinal selects quantity forms (one item, two items); ordinal selects ordering forms (1st, 2nd, 3rd).","required":false,"schema":{"type":"string","enum":["cardinal","ordinal"],"default":"cardinal"},"example":"ordinal","x-randomapi-param-group":"route"},{"name":"value","in":"query","description":"Finite numeric operand to classify, between -10^15 and 10^15 inclusive.","required":true,"schema":{"type":"number","minimum":-1000000000000000,"maximum":1000000000000000},"example":2,"x-randomapi-param-group":"route"},{"name":"minimumFractionDigits","in":"query","description":"Minimum visible fraction digits used before plural selection. Must be no greater than maximumFractionDigits.","required":false,"schema":{"type":"integer","minimum":0,"maximum":20,"default":0},"example":0,"x-randomapi-param-group":"route"},{"name":"maximumFractionDigits","in":"query","description":"Maximum fraction digits used to round the operand before plural selection (0–20).","required":false,"schema":{"type":"integer","minimum":0,"maximum":20,"default":3},"example":3,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["value","locale"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"value,locale"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["maximumFractionDigits"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"maximumFractionDigits"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PluralRulesSelectEnvelope"},{"$ref":"#/components/schemas/PluralRulesSelectRecord"}]},"example":{"data":{"value":2,"locale":"en-US","type":"ordinal","category":"two","categories":["one","two","few","other"],"minimumFractionDigits":0,"maximumFractionDigits":3},"meta":{"endpoint":"plural-rules","route":"/select","params":{"locale":"en-US","type":"cardinal","value":2,"minimumFractionDigits":0,"maximumFractionDigits":3},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Locale plural rules","url":"https://randomapi.dev/apis/plural-rules"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/plural-rules/categories":{"get":{"operationId":"get_plural_rules_categories","tags":["text"],"summary":"List every plural category available for a locale and rule type","description":"Returns the runtime locale/type vocabulary. Fraction-digit options are intentionally /select-only because ECMA-402 pluralCategories is not narrowed by them. Authoritative source: ECMA-402 Intl.PluralRules evaluated with the runtime's Unicode CLDR data.","parameters":[{"name":"locale","in":"query","description":"Unicode BCP 47 locale identifier. It is canonicalized, then explicitly checked against the runtime's plural-rule data; unsupported locales are a 400, never a silent default-locale fallback.","required":true,"schema":{"type":"string","minLength":2,"maxLength":64},"example":"en-US","x-randomapi-param-group":"route"},{"name":"type","in":"query","description":"cardinal selects quantity forms (one item, two items); ordinal selects ordering forms (1st, 2nd, 3rd).","required":false,"schema":{"type":"string","enum":["cardinal","ordinal"],"default":"cardinal"},"example":"ordinal","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["locale","type"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"locale,type"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["categories"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"categories"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PluralRulesCategoriesEnvelope"},{"$ref":"#/components/schemas/PluralRulesCategoriesRecord"}]},"example":{"data":{"locale":"ru","type":"cardinal","categories":["one","few","many","other"]},"meta":{"endpoint":"plural-rules","route":"/categories","params":{"locale":"en-US","type":"cardinal"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Locale plural rules","url":"https://randomapi.dev/apis/plural-rules"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/polyline/decode":{"get":{"operationId":"get_polyline_decode","tags":["geo"],"summary":"Decode an encoded polyline into WGS 84 coordinates, GeoJSON and its great-circle length","description":"Decode and encode Google/OSRM encoded polylines at precision 5 or 6 with GeoJSON output, great-circle length, Douglas-Peucker simplify and a decode trace. Authoritative sources: Google Maps Platform — Encoded Polyline Algorithm Format; OSRM HTTP API — geometries=polyline (precision 5) and polyline6 (precision 6); Valhalla — decoding the encoded shape (six digits of decimal precision); RFC 7946 — The GeoJSON Format.","parameters":[{"name":"value","in":"query","description":"The encoded polyline, exactly as your routing provider returned it. Percent-encode the eight characters a URI query forbids ([ \\ ] ^ ` { | }); ~, _, ? and @ are safe raw. Surrounding whitespace is trimmed — it is below the alphabet's ASCII 63 floor, so it can never be meaningful. Maximum 8,000 characters.","required":true,"schema":{"type":"string","maxLength":8000},"example":"_p~iF~ps|U_ulLnnqC_mqNvxq`@","x-randomapi-param-group":"route"},{"name":"precision","in":"query","description":"Decimal places the integers are scaled by. 5 = Google Directions/Routes overview_polyline, @mapbox/polyline default, GraphHopper. 6 = OSRM geometries=polyline6, Valhalla shape. No other precision is accepted.","required":false,"schema":{"type":"integer","minimum":5,"maximum":6,"default":5},"example":6,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["precision","pointCount"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"precision,pointCount"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["radiusMeters"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"radiusMeters"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PolylineDecodeEnvelope"},{"$ref":"#/components/schemas/PolylineDecodeRecord"}]},"example":{"data":{"precision":5,"pointCount":3,"encodedLength":27,"coordinates":[{"latitude":38.5,"longitude":-120.2}],"geojson":{"type":"LineString","bbox":[-126.453,38.5,-120.2,43.252],"coordinates":[[-120.2,38.5],[-120.95,40.7],[-126.453,43.252]]},"bounds":{"west":-126.453,"south":38.5,"east":-120.2,"north":43.252},"lengthMeters":788906.96,"lengthKilometers":788.90696,"canonical":true,"model":"mean-earth-sphere","radiusMeters":6371008.8},"meta":{"endpoint":"polyline","route":"/decode","params":{"value":"_p~iF~ps|U_ulLnnqC_mqNvxq`@","precision":5},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Encoded polyline decoder & encoder","url":"https://randomapi.dev/apis/polyline"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/polyline/encode":{"get":{"operationId":"get_polyline_encode","tags":["geo"],"summary":"Encode WGS 84 coordinates into a Google/OSRM encoded polyline, reporting the rounding applied","description":"Decode and encode Google/OSRM encoded polylines at precision 5 or 6 with GeoJSON output, great-circle length, Douglas-Peucker simplify and a decode trace. Authoritative sources: Google Maps Platform — Encoded Polyline Algorithm Format; OSRM HTTP API — geometries=polyline (precision 5) and polyline6 (precision 6); Valhalla — decoding the encoded shape (six digits of decimal precision); RFC 7946 — The GeoJSON Format.","parameters":[{"name":"coordinates","in":"query","description":"'lat,lon' pairs separated by ';', for example 38.5,-120.2;40.7,-120.95. Whitespace around numbers and separators is ignored, as are empty segments. At most 1000 pairs.","required":true,"schema":{"type":"string","maxLength":8000},"example":"42.225139,-8.670911;42.225224,-8.670718","x-randomapi-param-group":"route"},{"name":"precision","in":"query","description":"Decimal places the integers are scaled by. 5 = Google Directions/Routes overview_polyline, @mapbox/polyline default, GraphHopper. 6 = OSRM geometries=polyline6, Valhalla shape. No other precision is accepted.","required":false,"schema":{"type":"integer","minimum":5,"maximum":6,"default":5},"example":6,"x-randomapi-param-group":"route"},{"name":"order","in":"query","description":"Axis order of the INPUT text only. 'lonlat' accepts GeoJSON-order pairs. The encoded output is always latitude-first, as the format requires.","required":false,"schema":{"type":"string","enum":["latlon","lonlat"],"default":"latlon"},"example":"lonlat","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["precision","pointCount"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"precision,pointCount"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["radiusMeters"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"radiusMeters"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PolylineEncodeEnvelope"},{"$ref":"#/components/schemas/PolylineEncodeRecord"}]},"example":{"data":{"precision":5,"pointCount":3,"encoded":"_p~iF~ps|U_ulLnnqC_mqNvxq`@","encodedLength":27,"urlEncoded":"_p~iF~ps%7CU_ulLnnqC_mqNvxq%60%40","points":[{"index":0,"latitude":38.5,"longitude":-120.2,"encodedLatitude":38.5,"encodedLongitude":-120.2,"offsetMeters":0}],"lossyPointCount":0,"maxOffsetMeters":0,"roundTripsExactly":true,"model":"mean-earth-sphere","radiusMeters":6371008.8},"meta":{"endpoint":"polyline","route":"/encode","params":{"coordinates":"42.225139,-8.670911;42.225224,-8.670718","precision":5,"order":"latlon"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Encoded polyline decoder & encoder","url":"https://randomapi.dev/apis/polyline"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/polyline/simplify":{"get":{"operationId":"get_polyline_simplify","tags":["geo"],"summary":"Reduce an encoded polyline with Ramer–Douglas–Peucker and re-encode it, with the measured deviation","description":"Decode and encode Google/OSRM encoded polylines at precision 5 or 6 with GeoJSON output, great-circle length, Douglas-Peucker simplify and a decode trace. Authoritative sources: Google Maps Platform — Encoded Polyline Algorithm Format; OSRM HTTP API — geometries=polyline (precision 5) and polyline6 (precision 6); Valhalla — decoding the encoded shape (six digits of decimal precision); RFC 7946 — The GeoJSON Format.","parameters":[{"name":"value","in":"query","description":"The encoded polyline, exactly as your routing provider returned it. Percent-encode the eight characters a URI query forbids ([ \\ ] ^ ` { | }); ~, _, ? and @ are safe raw. Surrounding whitespace is trimmed — it is below the alphabet's ASCII 63 floor, so it can never be meaningful. Maximum 8,000 characters.","required":true,"schema":{"type":"string","maxLength":8000},"example":"_p~iF~ps|U_ulLnnqC_mqNvxq`@","x-randomapi-param-group":"route"},{"name":"precision","in":"query","description":"Decimal places the integers are scaled by. 5 = Google Directions/Routes overview_polyline, @mapbox/polyline default, GraphHopper. 6 = OSRM geometries=polyline6, Valhalla shape. No other precision is accepted.","required":false,"schema":{"type":"integer","minimum":5,"maximum":6,"default":5},"example":6,"x-randomapi-param-group":"route"},{"name":"toleranceMeters","in":"query","description":"Maximum distance any dropped point may sit from the retained line, in metres on the exposed sphere. 0 drops only points whose distance to their chord is exactly 0 (duplicates and exactly collinear points).","required":true,"schema":{"type":"number","minimum":0,"maximum":100000},"example":10,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["precision","toleranceMeters"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"precision,toleranceMeters"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["radiusMeters"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"radiusMeters"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PolylineSimplifyEnvelope"},{"$ref":"#/components/schemas/PolylineSimplifyRecord"}]},"example":{"data":{"precision":6,"toleranceMeters":10,"algorithm":"ramer-douglas-peucker/spherical-cross-track","pointCountBefore":8,"pointCountAfter":5,"removedPointCount":3,"maxDeviationMeters":8.276,"keptIndexes":[0,1,2,6,7],"coordinates":[{"latitude":52.435858,"longitude":10.743689}],"encoded":"cxl_cBqwvnS|Dy@ogFyxmAn`O{|Bhi@ljL","urlEncoded":"cxl_cBqwvnS%7CDy%40ogFyxmAn%60O%7B%7CBhi%40ljL","lengthMetersBefore":4178.287,"lengthMetersAfter":4170.459,"geojson":{"type":"LineString","bbox":[10.743689,52.43059,10.786081,52.439483],"coordinates":[[10.743689,52.435858],[10.743718,52.435763],[10.784067,52.439483],[10.786081,52.431267],[10.779242,52.43059]]},"model":"mean-earth-sphere","radiusMeters":6371008.8},"meta":{"endpoint":"polyline","route":"/simplify","params":{"value":"_p~iF~ps|U_ulLnnqC_mqNvxq`@","precision":5,"toleranceMeters":10},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Encoded polyline decoder & encoder","url":"https://randomapi.dev/apis/polyline"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/polyline/inspect":{"get":{"operationId":"get_polyline_inspect","tags":["geo"],"summary":"Diagnose an encoded polyline: validity, which precision it is consistent with, and a per-chunk decode trace","description":"Returns 200 with a stable diagnostic record even for a string /decode rejects. It only fails on parameter validation and on the 2,000-point cap. Authoritative sources: Google Maps Platform — Encoded Polyline Algorithm Format; OSRM HTTP API — geometries=polyline (precision 5) and polyline6 (precision 6); Valhalla — decoding the encoded shape (six digits of decimal precision); RFC 7946 — The GeoJSON Format.","parameters":[{"name":"value","in":"query","description":"The encoded polyline, exactly as your routing provider returned it. Percent-encode the eight characters a URI query forbids ([ \\ ] ^ ` { | }); ~, _, ? and @ are safe raw. Surrounding whitespace is trimmed — it is below the alphabet's ASCII 63 floor, so it can never be meaningful. Maximum 8,000 characters.","required":true,"schema":{"type":"string","maxLength":8000},"example":"_p~iF~ps|U_ulLnnqC_mqNvxq`@","x-randomapi-param-group":"route"},{"name":"traceGroups","in":"query","description":"How many varint groups to include in 'trace'. Each coordinate pair is two groups (latitude then longitude), so the default traces four points. 0 omits the trace.","required":false,"schema":{"type":"integer","minimum":0,"maximum":100,"default":8},"example":6,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["valueLength","decodable"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"valueLength,decodable"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["trace"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"trace"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PolylineInspectEnvelope"},{"$ref":"#/components/schemas/PolylineInspectRecord"}]},"example":{"data":{"valueLength":15,"decodable":true,"problem":null,"groupCount":4,"pointCount":2,"canonical":true,"nonCanonicalGroupIndexes":[],"likelyPrecision":6,"likelyPrecisionBasis":"Only precision 6 keeps every coordinate inside latitude ±90 and longitude ±180; at precision 5 latitude reaches 422.25139 at point 0.","precisionHypotheses":[{"precision":5,"verdict":"out-of-range","firstCoordinate":{"latitude":422.25139,"longitude":-86.70911},"lastCoordinate":{"latitude":422.25224,"longitude":-86.70718},"latitudeRange":{"minimum":422.25139,"maximum":422.25224},"longitudeRange":{"minimum":-86.70911,"maximum":-86.70718},"outOfRangeAtPoint":0,"note":"Point 0 reads as latitude 422.25139 at precision 5, outside -90 to 90, so the string cannot be precision 5."}],"disallowedInQueryCharacters":["|"],"urlEncoded":"e~epoA%7CjfpOiDaK","trace":[{"groupIndex":0,"pointIndex":0,"axis":"latitude","characters":"e~epoA","characterCodes":[101,126,101,112,111,65],"fiveBitChunks":[6,31,6,17,16,2],"zigZagValue":84450278,"delta":42225139,"accumulated":42225139,"atPrecision5":422.25139,"atPrecision6":42.225139}]},"meta":{"endpoint":"polyline","route":"/inspect","params":{"value":"_p~iF~ps|U_ulLnnqC_mqNvxq`@","traceGroups":8},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Encoded polyline decoder & encoder","url":"https://randomapi.dev/apis/polyline"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/ports":{"get":{"operationId":"get_ports_root","tags":["internet"],"summary":"Browse the whole registry by port range, protocol or service","description":"Every filter genuinely narrows the rows; combined filters are ANDed. Results stay in registry order (ascending port), and `count` caps them — on this route it defaults to 20, not to all matches. No match returns an empty list plus a warning, never a substituted row; when the window falls inside a port-range row the warning names the block. A range assignment (`assignedRange` set) matches a port window whenever the window overlaps its span. Authoritative source: IANA Service Name and Transport Protocol Port Number Registry (complete snapshot of ports 0-49151, updated 2026-07-23).","parameters":[{"name":"portFrom","in":"query","description":"Lowest port number to include (inclusive). Must be ≤ portTo when both are given.","required":false,"schema":{"type":"integer","minimum":0,"maximum":65535},"example":8000,"x-randomapi-param-group":"route"},{"name":"portTo","in":"query","description":"Highest port number to include (inclusive).","required":false,"schema":{"type":"integer","minimum":0,"maximum":65535},"example":8999,"x-randomapi-param-group":"route"},{"name":"protocol","in":"query","description":"Keep only registrations for this transport protocol. Rows the registry leaves without a protocol never match.","required":false,"schema":{"type":"string","enum":["tcp","udp","sctp","dccp"]},"example":"tcp","x-randomapi-param-group":"route"},{"name":"service","in":"query","description":"Exact registered service name, matched case-insensitively (`XmlIpcRegSvc` = `xmlipcregsvc`). Use `search` for partial matches.","required":false,"schema":{"type":"string","minLength":1,"maxLength":64},"example":"mysql","x-randomapi-param-group":"route"},{"name":"search","in":"query","description":"Case-insensitive substring match against the service name and the registry description. Does not search notes or references.","required":false,"schema":{"type":"string","minLength":1,"maxLength":64},"example":"database","x-randomapi-param-group":"route"},{"name":"range","in":"query","description":"`system` = the Well Known Ports 0-1023; `registered` = the User Ports 1024-49151 (RFC 6335 §6). Both ranges ship complete.","required":false,"schema":{"type":"string","enum":["system","registered"]},"example":"system","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to 20.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":20},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["port","protocol"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"port,protocol"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["unauthorizedUse"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"unauthorizedUse"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PortsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/PortsRootRecord"}}]},"example":{"data":[{"port":22,"protocol":"tcp","serviceName":"ssh","description":"The Secure Shell (SSH) Protocol","registrationDate":"2015-04-23","reference":"[RFC4251]","range":"system","assignedRange":null,"note":"Defined TXT keys: u=<username> p=<password>","unauthorizedUse":"PORT 90 also being used unofficially by Pointcast"}],"meta":{"endpoint":"ports","count":1,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"port\":22,\"protocol\":\"tcp\",\"serviceName\":\"ssh\",\"description\":\"The Secure Shell (SSH) Protocol\",\"registrationDate\":\"2015-04-23\",\"reference\":\"[RFC4251]\",\"range\":\"system\",\"assignedRange\":null,\"note\":\"Defined TXT keys: u=<username> p=<password>\",\"unauthorizedUse\":\"PORT 90 also being used unofficially by Pointcast\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Port Number & Service Lookup API","url":"https://randomapi.dev/apis/ports"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/ports/lookup":{"get":{"operationId":"get_ports_lookup","tags":["internet"],"summary":"Every registration for one port, or every port for one service name","description":"Give exactly one of `port` or `name`. Either way you get the whole `registrations[]` array rather than one row, because most ports carry several and picking one would silently hide the rest. Both directions are complete: a `port` lookup returns every row IANA holds for that number (including the range assignment covering it, if that is how the registry files it), and a `name` lookup returns every port that name holds anywhere in 0-49151. Authoritative source: IANA Service Name and Transport Protocol Port Number Registry (complete snapshot of ports 0-49151, updated 2026-07-23).","parameters":[{"name":"port","in":"query","description":"Port number to look up. Mutually exclusive with `name`; outside 0-65535 is a 400.","required":false,"schema":{"type":"integer","minimum":0,"maximum":65535},"example":22,"x-randomapi-param-group":"route"},{"name":"name","in":"query","description":"Registered service name to look up, matched case-insensitively. Mutually exclusive with `port`.","required":false,"schema":{"type":"string","minLength":1,"maxLength":64},"example":"ssh","x-randomapi-param-group":"route"},{"name":"protocol","in":"query","description":"Narrow the returned registrations to one transport protocol. A port with no row for it answers 404 listing the protocols it does have.","required":false,"schema":{"type":"string","enum":["tcp","udp","sctp","dccp"]},"example":"tcp","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["port","name"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"port,name"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["registrations"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"registrations"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PortsLookupEnvelope"},{"$ref":"#/components/schemas/PortsLookupRecord"}]},"example":{"data":{"port":22,"name":null,"protocol":null,"ports":[22],"registrationCount":3,"registrations":[{"port":22,"protocol":"tcp","serviceName":"ssh","description":"The Secure Shell (SSH) Protocol","registrationDate":null,"reference":"[RFC4251]","range":"system","assignedRange":null,"note":"Defined TXT keys: u=<username> p=<password>","unauthorizedUse":null}]},"meta":{"endpoint":"ports","route":"/lookup","params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"IANA has no matching port assignment for the requested port/name and optional protocol.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?port=230"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Port Number & Service Lookup API","url":"https://randomapi.dev/apis/ports"},"x-randomapi-kind":"real","x-randomapi-mode":"lookup"}},"/api/postal-code-formats":{"get":{"operationId":"get_postal_code_formats_root","tags":["geo"],"summary":"List every country's postal code format (or the countries that have none)","description":"All 249 entries, alphabetical by country name, 100 per request — page with `offset`. Filters genuinely filter; `separators` only changes which derived regex each pattern exposes. Authoritative sources: GeoNames countryInfo.txt — Postal Code Format column (snapshot 2026-07-30, CC BY 4.0); Google libaddressinput — RegionDataConstants.java (Apache-2.0), cross-check for postal-code presence, requirement, field name and display prefix; National postal operators, cited per country by the officialSource field of GET /api/postal-code-formats.","parameters":[{"name":"system","in":"query","description":"Only return entries with this `postalCodeSystem`: `national`, `limited`, `none` or `unverified`.","required":false,"schema":{"type":"string","enum":["national","limited","none","unverified","any"],"default":"any"},"example":"none","x-randomapi-param-group":"route"},{"name":"search","in":"query","description":"Case- and diacritic-insensitive substring of the English country name (so `aland` finds Åland Islands), or an exact ISO 3166-1 alpha-2 or alpha-3 code.","required":false,"schema":{"type":"string","minLength":1,"maxLength":60},"example":"nether","x-randomapi-param-group":"route"},{"name":"required","in":"query","description":"Only return entries where a postal code is (or is not) required in a complete address. The entries where the source records no requirement either way have `requiredInAddress: null` and match neither value. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean"},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"precision","in":"query","description":"Only return entries whose patterns encode the operator's published rule (`national-rule`) or only a character shape (`shape-only`). Entries with no patterns have `precision: null` and are excluded by either value.","required":false,"schema":{"type":"string","enum":["national-rule","shape-only","any"],"default":"any"},"example":"national-rule","x-randomapi-param-group":"route"},{"name":"separators","in":"query","description":"Which derived regex each pattern exposes: `optional` accepts one optional separator character wherever the mask writes a space or hyphen (so `1012AB` and `1012 AB` both pass); `exact` requires the mask's separators verbatim. Transforms the output, never filters it.","required":false,"schema":{"type":"string","enum":["optional","exact"],"default":"optional"},"example":"exact","x-randomapi-param-group":"route"},{"name":"offset","in":"query","description":"Skip this many matches before returning records, for paging past the first 100.","required":false,"schema":{"type":"integer","minimum":0,"maximum":248,"default":0},"example":100,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to 100.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["country","countryCode"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"country,countryCode"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["officialSource"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"officialSource"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PostalCodeFormatsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/PostalCodeFormatsRootRecord"}}]},"example":{"data":[{"country":"Netherlands","countryCode":"NL","postalCodeSystem":"national","patterns":[{"mask":"#### @@","regex":"^[1-9]\\d{3}[ -]?(?:[A-RT-Za-rt-z][A-Za-z]|[Ss][BCE-RT-Zbce-rt-z])$","example":"1012 AB"}],"precision":"national-rule","postalCodeName":"postal code","requiredInAddress":true,"countryPrefix":null,"note":"PostNL does not assign the letter combinations SA, SD or SS, and the numeric part never starts with 0. GeoNames' mask encodes neither restriction.","officialSource":"https://www.postnl.nl/en/find-a-postcode/"}],"meta":{"endpoint":"postal-code-formats","count":1,"params":{"system":"any","precision":"any","separators":"optional","offset":0},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"country\":\"Netherlands\",\"countryCode\":\"NL\",\"postalCodeSystem\":\"national\",\"patterns\":[{\"mask\":\"#### @@\",\"regex\":\"^[1-9]\\\\d{3}[ -]?(?:[A-RT-Za-rt-z][A-Za-z]|[Ss][BCE-RT-Zbce-rt-z])$\",\"example\":\"1012 AB\"}],\"precision\":\"national-rule\",\"postalCodeName\":\"postal code\",\"requiredInAddress\":true,\"countryPrefix\":null,\"note\":\"PostNL does not assign the letter combinations SA, SD or SS, and the numeric part never starts with 0. GeoNames' mask encodes neither restriction.\",\"officialSource\":\"https://www.postnl.nl/en/find-a-postcode/\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Postal code formats","url":"https://randomapi.dev/apis/postal-code-formats"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/postal-code-formats/lookup":{"get":{"operationId":"get_postal_code_formats_lookup","tags":["geo"],"summary":"Look up one country's postal code format, regex and display prefix","description":"Accepts an ISO 3166-1 alpha-2 or alpha-3 code, case-insensitively. Countries with no postal code system return a real record with `postalCodeSystem: \"none\"` — only unassigned codes are 404s, including GeoNames' withdrawn `CS` and the user-assigned `XK`. Authoritative sources: GeoNames countryInfo.txt — Postal Code Format column (snapshot 2026-07-30, CC BY 4.0); Google libaddressinput — RegionDataConstants.java (Apache-2.0), cross-check for postal-code presence, requirement, field name and display prefix; National postal operators, cited per country by the officialSource field of GET /api/postal-code-formats.","parameters":[{"name":"country","in":"query","description":"ISO 3166-1 alpha-2 or alpha-3 code, case-insensitive (NL or NLD).","required":true,"schema":{"type":"string","minLength":2,"maxLength":3},"example":"NL","x-randomapi-param-group":"route"},{"name":"separators","in":"query","description":"Which derived regex each pattern exposes: `optional` accepts one optional separator character wherever the mask writes a space or hyphen (so `1012AB` and `1012 AB` both pass); `exact` requires the mask's separators verbatim. Transforms the output, never filters it.","required":false,"schema":{"type":"string","enum":["optional","exact"],"default":"optional"},"example":"exact","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["country","countryCode"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"country,countryCode"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["officialSource"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"officialSource"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PostalCodeFormatsLookupEnvelope"},{"$ref":"#/components/schemas/PostalCodeFormatsLookupRecord"}]},"example":{"data":{"country":"Netherlands","countryCode":"NL","postalCodeSystem":"national","patterns":[{"mask":"#### @@","regex":"^[1-9]\\d{3}[ -]?(?:[A-RT-Za-rt-z][A-Za-z]|[Ss][BCE-RT-Zbce-rt-z])$","example":"1012 AB"}],"precision":"national-rule","postalCodeName":"postal code","requiredInAddress":true,"countryPrefix":null,"note":"PostNL does not assign the letter combinations SA, SD or SS, and the numeric part never starts with 0. GeoNames' mask encodes neither restriction.","officialSource":"https://www.postnl.nl/en/find-a-postcode/"},"meta":{"endpoint":"postal-code-formats","route":"/lookup","params":{"country":"NL","separators":"optional"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"The requested well-formed country code is unassigned and has no postal-format row.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?country=ZZ"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Postal code formats","url":"https://randomapi.dev/apis/postal-code-formats"},"x-randomapi-kind":"real","x-randomapi-mode":"lookup"}},"/api/postal-code-formats/validate":{"get":{"operationId":"get_postal_code_formats_validate","tags":["geo"],"summary":"Normalise a postal code and check its shape against the country's format","description":"Shape checking only: a `true` verdict means the code matches a written form the country uses, never that it has been assigned or is deliverable. `valid` is `null` — with a reason — for the countries where no format could be verified. Authoritative sources: GeoNames countryInfo.txt — Postal Code Format column (snapshot 2026-07-30, CC BY 4.0); Google libaddressinput — RegionDataConstants.java (Apache-2.0), cross-check for postal-code presence, requirement, field name and display prefix; National postal operators, cited per country by the officialSource field of GET /api/postal-code-formats.","parameters":[{"name":"country","in":"query","description":"ISO 3166-1 alpha-2 or alpha-3 code, case-insensitive (NL or NLD).","required":true,"schema":{"type":"string","minLength":2,"maxLength":3},"example":"NL","x-randomapi-param-group":"route"},{"name":"code","in":"query","description":"The postal code to check, exactly as your user typed it — whitespace is preserved so `input` can echo it back. Up to 16 characters.","required":true,"schema":{"type":"string","minLength":1,"maxLength":16},"example":"1012ab","x-randomapi-param-group":"route"},{"name":"separators","in":"query","description":"Which derived regex each pattern exposes: `optional` accepts one optional separator character wherever the mask writes a space or hyphen (so `1012AB` and `1012 AB` both pass); `exact` requires the mask's separators verbatim. Transforms the output, never filters it.","required":false,"schema":{"type":"string","enum":["optional","exact"],"default":"optional"},"example":"exact","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["country","input"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"country,input"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["precision"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"precision"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PostalCodeFormatsValidateEnvelope"},{"$ref":"#/components/schemas/PostalCodeFormatsValidateRecord"}]},"example":{"data":{"country":"NL","input":"1012ab","normalized":"1012 AB","prefixStripped":false,"postalCodeSystem":"national","checkable":true,"valid":true,"reasons":[],"matchedMask":"#### @@","matchedRegex":"^[1-9]\\d{3}[ -]?(?:[A-RT-Za-rt-z][A-Za-z]|[Ss][BCE-RT-Zbce-rt-z])$","expectedMasks":["#### @@"],"precision":"national-rule"},"meta":{"endpoint":"postal-code-formats","route":"/validate","params":{"country":"NL","code":"1012ab","separators":"optional"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Postal code formats","url":"https://randomapi.dev/apis/postal-code-formats"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/postal-codes":{"get":{"operationId":"get_postal_codes_root","tags":["geo"],"summary":"Look up one postal code","description":"The code's place, administrative hierarchy, estimated coordinates and GeoNames accuracy. The code is matched in normalised form, so the spacing and hyphens are up to you. Authoritative sources: GeoNames postal code files (per-country dumps, snapshot 2026-09-14, CC BY 4.0); GeoNames postal-code readme — column definitions, licence and the per-country truncation notes.","parameters":[{"name":"country","in":"query","description":"ISO 3166-1 alpha-2 code of a supported country. 21 are bundled — any other code is a 400 listing them all, never another country's codes. `GET /api/postal-codes/countries` returns each one's coverage.","required":true,"schema":{"type":"string","enum":["AT","AU","BE","CA","CH","CZ","DE","DK","ES","FI","FR","GB","IT","JP","MX","NL","NO","NZ","PL","SE","US"]},"example":"US","x-randomapi-param-group":"route"},{"name":"postalCode","in":"query","description":"The postal code. Case, spaces and hyphens are ignored when matching (`624 66` = `62466`, `100-0001` = `1000001`).","required":true,"schema":{"type":"string","minLength":1,"maxLength":24},"example":"94103","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["country","countryName"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"country,countryName"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["accuracy"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"accuracy"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PostalCodesRootEnvelope"},{"$ref":"#/components/schemas/PostalCodesRootRecord"}]},"example":{"data":{"country":"US","countryName":"United States","postalCode":"94103","place":"San Francisco","placeCount":1,"admin1":"California","admin1Code":"CA","admin2":"City and County of San Francisco","admin2Code":"075","admin3":null,"admin3Code":null,"latitude":37.7725,"longitude":-122.4147,"accuracy":4},"meta":{"endpoint":"postal-codes","params":{"country":"US","postalCode":"94103"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"No such postal code in the pinned GeoNames file for that country. It means the snapshot does not carry the code — not that the operator has never issued it.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?country=US&postalCode=00000"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Postal codes","url":"https://randomapi.dev/apis/postal-codes"},"x-randomapi-kind":"real","x-randomapi-mode":"lookup"}},"/api/postal-codes/search":{"get":{"operationId":"get_postal_codes_search","tags":["geo"],"summary":"Search a country's postal codes by prefix, place or region","description":"Codes in ascending order, at most 100 per request — page with `offset`. Filters combine; with none of them the route returns the country's first codes. Authoritative sources: GeoNames postal code files (per-country dumps, snapshot 2026-09-14, CC BY 4.0); GeoNames postal-code readme — column definitions, licence and the per-country truncation notes.","parameters":[{"name":"country","in":"query","description":"ISO 3166-1 alpha-2 code of a supported country. 21 are bundled — any other code is a 400 listing them all, never another country's codes. `GET /api/postal-codes/countries` returns each one's coverage.","required":true,"schema":{"type":"string","enum":["AT","AU","BE","CA","CH","CZ","DE","DK","ES","FI","FR","GB","IT","JP","MX","NL","NO","NZ","PL","SE","US"]},"example":"US","x-randomapi-param-group":"route"},{"name":"startsWith","in":"query","description":"Only codes whose normalised form starts with this. `941` matches 94101–94199; `sw` matches every UK outward code in the SW district.","required":false,"schema":{"type":"string","minLength":1,"maxLength":24},"example":"941","x-randomapi-param-group":"route"},{"name":"place","in":"query","description":"Only codes whose place name starts with this text, case-insensitively. Diacritics are matched as GeoNames spells them.","required":false,"schema":{"type":"string","minLength":2,"maxLength":60},"example":"San Fran","x-randomapi-param-group":"route"},{"name":"admin1","in":"query","description":"Only codes in this first-order division, matched by its code or its name, case-insensitively. Unknown values are a 400. `GET /api/postal-codes/regions` lists them.","required":false,"schema":{"type":"string","minLength":1,"maxLength":60},"example":"CA","x-randomapi-param-group":"route"},{"name":"offset","in":"query","description":"Skip this many matches before returning records, for paging past the first 100.","required":false,"schema":{"type":"integer","minimum":0,"maximum":142576,"default":0},"example":100,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to 25.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["country","countryName"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"country,countryName"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["accuracy"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"accuracy"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PostalCodesSearchEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/PostalCodesSearchRecord"}}]},"example":{"data":[{"country":"US","countryName":"United States","postalCode":"94103","place":"San Francisco","placeCount":1,"admin1":"California","admin1Code":"CA","admin2":"City and County of San Francisco","admin2Code":"075","admin3":null,"admin3Code":null,"latitude":37.7725,"longitude":-122.4147,"accuracy":4}],"meta":{"endpoint":"postal-codes","route":"/search","count":1,"params":{"country":"US","offset":0},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"country\":\"US\",\"countryName\":\"United States\",\"postalCode\":\"94103\",\"place\":\"San Francisco\",\"placeCount\":1,\"admin1\":\"California\",\"admin1Code\":\"CA\",\"admin2\":\"City and County of San Francisco\",\"admin2Code\":\"075\",\"admin3\":null,\"admin3Code\":null,\"latitude\":37.7725,\"longitude\":-122.4147,\"accuracy\":4}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Postal codes","url":"https://randomapi.dev/apis/postal-codes"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/postal-codes/regions":{"get":{"operationId":"get_postal_codes_regions","tags":["geo"],"summary":"The first-order divisions a country's postal codes fall in","description":"Every state, region or prefecture that appears in the country's codes, largest first, with how many codes sit in it — the values the `admin1` filter on /search accepts. Codes whose upstream row names no division are not counted here; `/countries` reports how many of those a country has. Authoritative sources: GeoNames postal code files (per-country dumps, snapshot 2026-09-14, CC BY 4.0); GeoNames postal-code readme — column definitions, licence and the per-country truncation notes.","parameters":[{"name":"country","in":"query","description":"ISO 3166-1 alpha-2 code of a supported country. 21 are bundled — any other code is a 400 listing them all, never another country's codes. `GET /api/postal-codes/countries` returns each one's coverage.","required":true,"schema":{"type":"string","enum":["AT","AU","BE","CA","CH","CZ","DE","DK","ES","FI","FR","GB","IT","JP","MX","NL","NO","NZ","PL","SE","US"]},"example":"US","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["country","countryName"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"country,countryName"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["postalCodes"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"postalCodes"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PostalCodesRegionsEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/PostalCodesRegionsRecord"}}]},"example":{"data":[{"country":"US","countryName":"United States","admin1Code":"CA","admin1":"California","postalCodes":2600}],"meta":{"endpoint":"postal-codes","route":"/regions","count":1,"params":{"country":"US"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"country\":\"US\",\"countryName\":\"United States\",\"admin1Code\":\"CA\",\"admin1\":\"California\",\"postalCodes\":2600}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Postal codes","url":"https://randomapi.dev/apis/postal-codes"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/postal-codes/countries":{"get":{"operationId":"get_postal_codes_countries","tags":["geo"],"summary":"Every supported country with its coverage, counts and pinned source","description":"The auditable index of the dataset: how many codes each country carries, how many upstream rows they were deduplicated from, whether the coverage is complete or a documented subset, and the SHA-256 of the file it came from. Authoritative sources: GeoNames postal code files (per-country dumps, snapshot 2026-09-14, CC BY 4.0); GeoNames postal-code readme — column definitions, licence and the per-country truncation notes.","parameters":[{"name":"coverage","in":"query","description":"Filter by coverage: 'full' = every code the country's published file carries; 'partial' = a documented subset, named in coverageNote.","required":false,"schema":{"type":"string","enum":["any","full","partial"],"default":"any"},"example":"partial","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["country","countryName"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"country,countryName"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["sourceSha256"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"sourceSha256"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PostalCodesCountriesEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/PostalCodesCountriesRecord"}}]},"example":{"data":[{"country":"GB","countryName":"United Kingdom","postalCodes":3002,"upstreamRows":27450,"places":2588,"regions":5,"codesWithoutRegion":21,"coverage":"partial","coverageNote":"Outward codes only (`SW1`, `M9`, `ZE2`) …","withAccuracy":2986,"sharedCodes":2227,"maxPlaceCount":162,"sourceFile":"https://download.geonames.org/export/zip/GB.zip","sourceSha256":"8cfd9136650053f28df3ca6d5a94b285411f9f6eb1542ac7746c883734303594"}],"meta":{"endpoint":"postal-codes","route":"/countries","count":1,"params":{"coverage":"any"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"country\":\"GB\",\"countryName\":\"United Kingdom\",\"postalCodes\":3002,\"upstreamRows\":27450,\"places\":2588,\"regions\":5,\"codesWithoutRegion\":21,\"coverage\":\"partial\",\"coverageNote\":\"Outward codes only (`SW1`, `M9`, `ZE2`) …\",\"withAccuracy\":2986,\"sharedCodes\":2227,\"maxPlaceCount\":162,\"sourceFile\":\"https://download.geonames.org/export/zip/GB.zip\",\"sourceSha256\":\"8cfd9136650053f28df3ca6d5a94b285411f9f6eb1542ac7746c883734303594\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Postal codes","url":"https://randomapi.dev/apis/postal-codes"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/posts":{"get":{"operationId":"get_posts_root","tags":["text"],"summary":"Generate blog posts with tag-coherent text and status-consistent dates","description":"Each record is an independent post: its own topic vocabulary, an exact `wordCount`, an excerpt derived from the body, and a date/metrics mask that matches its `status`.","parameters":[{"name":"tag","in":"query","description":"Pin tags[0] AND the vocabulary the title, excerpt and body are drawn from. Omit for a mix of all six topics.","required":false,"schema":{"type":"string","enum":["engineering","design","product","security","data","career"]},"example":"security","x-randomapi-param-group":"route"},{"name":"status","in":"query","description":"Pin status on every record, and therefore its whole date and metrics mask. Omitted, you get a weighted mix: published 60%, archived 15%, draft 15%, scheduled 10%.","required":false,"schema":{"type":"string","enum":["draft","scheduled","published","archived"]},"example":"published","x-randomapi-param-group":"route"},{"name":"tagCount","in":"query","description":"Exact number of entries in tags. Omit for a per-post mix of 1–3 (not echoed in meta.params, because it varies per record).","required":false,"schema":{"type":"integer","minimum":1,"maximum":3},"example":1,"x-randomapi-param-group":"route"},{"name":"minWords","in":"query","description":"Inclusive lower bound on wordCount.","required":false,"schema":{"type":"integer","minimum":20,"maximum":160,"default":60},"example":120,"x-randomapi-param-group":"route"},{"name":"maxWords","in":"query","description":"Inclusive upper bound on wordCount. Must be ≥ minWords. The 160 ceiling is what keeps count=100 inside the 256 KiB response budget.","required":false,"schema":{"type":"integer","minimum":20,"maximum":160,"default":140},"example":160,"x-randomapi-param-group":"route"},{"name":"excerptChars","in":"query","description":"Maximum length of excerpt in UTF-16 code units, the trailing … included. The excerpt is always a word-boundary prefix of the body's plain text.","required":false,"schema":{"type":"integer","minimum":40,"maximum":200,"default":160},"example":200,"x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Earliest createdAt, inclusive (YYYY-MM-DD = midnight UTC, or a full ISO 8601 timestamp). Defaults to 180 days before the resolved 'to', clamped to 0001-01-01. Must be ≤ to. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Latest createdAt/updatedAt, inclusive, and the publish boundary: published/archived posts publish at or before it, scheduled posts after it. Defaults to the final millisecond of the current UTC day. Must be ≤ 9998-12-31. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-03-31","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","slug"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,slug"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["coverImageUrl"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"coverImageUrl"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PostsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/PostsRootRecord"}}]},"example":{"data":[{"id":"post_9f3a2c018d3104","slug":"notes-on-hardening-the-default-path-3104","title":"Notes on hardening the default path","excerpt":"We drew the threat model on one page. The team agreed to keep it simple. Hardening the default saved every later argument. The exploit chain was three boring…","body":"We drew the threat model on one page. The team agreed to keep it simple. Hardening the default saved every later argument. The exploit chain was three boring steps.\n\n## Hardening steps\n\n- rotate every long lived credential\n- fix the boring vulnerability first\n- log what the sandbox blocks\n\nThe vulnerability had been open for months. Least privilege broke two internal tools first. We wrote it down so the next person could follow. It took longer than we expected. Rotation is easy once nothing depends on a secret.","tags":["security","appsec"],"author":{"name":"Maria Ortiz","username":"maria.ortiz","avatarUrl":"https://randomapi.dev/api/avatars/image?style=initials&seed=maria.ortiz&name=Maria%20Ortiz"},"status":"published","createdAt":"2026-02-11T08:14:02.311Z","publishedAt":"2026-02-12T09:00:00.000Z","updatedAt":"2026-03-02T16:45:10.004Z","wordCount":85,"metrics":{"views":18420,"likes":640,"commentCount":71},"coverImageUrl":"https://randomapi.dev/api/images/placeholder?width=1200&height=630&text=security"}],"meta":{"endpoint":"posts","count":1,"seed":42,"params":{"minWords":60,"maxWords":140,"excerptChars":160},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"post_9f3a2c018d3104\",\"slug\":\"notes-on-hardening-the-default-path-3104\",\"title\":\"Notes on hardening the default path\",\"excerpt\":\"We drew the threat model on one page. The team agreed to keep it simple. Hardening the default saved every later argument. The exploit chain was three boring…\",\"body\":\"We drew the threat model on one page. The team agreed to keep it simple. Hardening the default saved every later argument. The exploit chain was three boring steps.\\n\\n## Hardening steps\\n\\n- rotate every long lived credential\\n- fix the boring vulnerability first\\n- log what the sandbox blocks\\n\\nThe vulnerability had been open for months. Least privilege broke two internal tools first. We wrote it down so the next person could follow. It took longer than we expected. Rotation is easy once nothing depends on a secret.\",\"tags\":[\"security\",\"appsec\"],\"author\":{\"name\":\"Maria Ortiz\",\"username\":\"maria.ortiz\",\"avatarUrl\":\"https://randomapi.dev/api/avatars/image?style=initials&seed=maria.ortiz&name=Maria%20Ortiz\"},\"status\":\"published\",\"createdAt\":\"2026-02-11T08:14:02.311Z\",\"publishedAt\":\"2026-02-12T09:00:00.000Z\",\"updatedAt\":\"2026-03-02T16:45:10.004Z\",\"wordCount\":85,\"metrics\":{\"views\":18420,\"likes\":640,\"commentCount\":71},\"coverImageUrl\":\"https://randomapi.dev/api/images/placeholder?width=1200&height=630&text=security\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Blog posts and comments","url":"https://randomapi.dev/apis/posts"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/posts/comments":{"get":{"operationId":"get_posts_comments","tags":["text"],"summary":"Threaded comments whose every parentId resolves inside the page","description":"One pool of 100 rows built parent-first; `count` returns a prefix of it. Row 0 is always a root, and every non-null `parentId` names a row printed earlier in the same response.","parameters":[{"name":"postId","in":"query","description":"Pin postId on every row so you can attach a comment page to a post id you already hold. Letters, digits, '.', '_', ':' and '-' only. Supplying it resolves postCount to 1.","required":false,"schema":{"type":"string","minLength":1,"maxLength":64},"example":"post_9f3a2c018d3104","x-randomapi-param-group":"route"},{"name":"postCount","in":"query","description":"Number of distinct synthetic post ids the pool is spread across. Resolves to 3, or to 1 when postId is supplied (in which case an explicit value is ignored with a warning). The resolved value is echoed in meta.params.","required":false,"schema":{"type":"integer","minimum":1,"maximum":10},"example":6,"x-randomapi-param-group":"route"},{"name":"maxDepth","in":"query","description":"Maximum depth of the reply tree. 0 gives a flat list: every parentId null, every depth 0.","required":false,"schema":{"type":"integer","minimum":0,"maximum":4,"default":2},"example":4,"x-randomapi-param-group":"route"},{"name":"status","in":"query","description":"Pin the moderation status on every row. Omitted, you get published 75%, pending 15%, spam 10%. Status never affects tree structure. Note this enum differs from the post route's status.","required":false,"schema":{"type":"string","enum":["published","pending","spam"]},"example":"pending","x-randomapi-param-group":"route"},{"name":"minWords","in":"query","description":"Inclusive lower bound on wordCount.","required":false,"schema":{"type":"integer","minimum":3,"maximum":60,"default":8},"example":20,"x-randomapi-param-group":"route"},{"name":"maxWords","in":"query","description":"Inclusive upper bound on wordCount. Must be ≥ minWords.","required":false,"schema":{"type":"integer","minimum":3,"maximum":60,"default":30},"example":60,"x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Earliest createdAt, inclusive (YYYY-MM-DD = midnight UTC, or a full ISO 8601 timestamp). Defaults to 90 days before the resolved 'to', clamped to 0001-01-01. Must be ≤ to. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Latest createdAt/updatedAt, inclusive. Defaults to the final millisecond of the current UTC day. Must be ≤ 9998-12-31. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-31","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to 20.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":20},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","postId"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,postId"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["status"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"status"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PostsCommentsEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/PostsCommentsRecord"}}]},"example":{"data":[{"id":"comment_4c81be02a71d05","postId":"post_9f3a2c018d3104","parentId":"comment_4c81be02a71d02","depth":1,"author":{"name":"Jonas Weber","email":"jonas.weber@example.net","avatarUrl":"https://randomapi.dev/api/avatars/image?style=initials&seed=jonas.weber&name=Jonas%20Weber"},"body":"This matches what we saw in staging. We hit the same thing again.","wordCount":13,"createdAt":"2026-01-18T11:02:44.918Z","updatedAt":"2026-01-18T11:02:44.918Z","edited":false,"likes":4,"status":"published"}],"meta":{"endpoint":"posts","route":"/comments","count":1,"seed":42,"params":{"maxDepth":2,"minWords":8,"maxWords":30},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"comment_4c81be02a71d05\",\"postId\":\"post_9f3a2c018d3104\",\"parentId\":\"comment_4c81be02a71d02\",\"depth\":1,\"author\":{\"name\":\"Jonas Weber\",\"email\":\"jonas.weber@example.net\",\"avatarUrl\":\"https://randomapi.dev/api/avatars/image?style=initials&seed=jonas.weber&name=Jonas%20Weber\"},\"body\":\"This matches what we saw in staging. We hit the same thing again.\",\"wordCount\":13,\"createdAt\":\"2026-01-18T11:02:44.918Z\",\"updatedAt\":\"2026-01-18T11:02:44.918Z\",\"edited\":false,\"likes\":4,\"status\":\"published\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Blog posts and comments","url":"https://randomapi.dev/apis/posts"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/products":{"get":{"operationId":"get_products_root","tags":["commerce"],"summary":"Generate fake products","description":"Fake e-commerce products with category-themed names, prices in real currencies (whole yen for JPY), valid EAN-13 barcodes, SKUs, ratings and image URLs.","parameters":[{"name":"category","in":"query","description":"Only generate products in this category — names, descriptions, SKU prefix and image label all follow it. Omit for a random mix.","required":false,"schema":{"type":"string","enum":["electronics","clothing","home","beauty","sports","toys","books","food","automotive","garden"]},"example":"electronics","x-randomapi-param-group":"route"},{"name":"minPrice","in":"query","description":"Minimum price (inclusive). Must be ≤ maxPrice.","required":false,"schema":{"type":"number","minimum":0,"maximum":1000000,"default":1},"example":10,"x-randomapi-param-group":"route"},{"name":"maxPrice","in":"query","description":"Maximum price (inclusive). Must be ≥ minPrice.","required":false,"schema":{"type":"number","minimum":0,"maximum":1000000,"default":999.99},"example":500,"x-randomapi-param-group":"route"},{"name":"currency","in":"query","description":"ISO 4217 currency code (3 letters, case-insensitive). Prices are rounded to the currency's minor unit — JPY/KRW give whole numbers, KWD three decimals. Supported: USD, EUR, GBP, JPY, CNY, CHF, CAD, AUD, NZD, SEK, NOK, DKK, PLN, CZK, SGD, HKD, KRW, INR, BRL, MXN, ZAR, TRY, KWD.","required":false,"schema":{"type":"string","default":"USD"},"example":"EUR","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["name","description"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"name,description"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["imageUrl"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"imageUrl"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProductsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/ProductsRootRecord"}}]},"example":{"data":[{"name":"Wireless Aluminum Headphones","description":"Meet the wireless aluminum headphones — a customer favorite from the electronics range.","category":"electronics","price":129.99,"currency":"USD","sku":"ELE-04821-QX","ean13":"4006381333931","rating":4.3,"inStock":true,"imageUrl":"https://randomapi.dev/api/images/placeholder?width=640&height=480&text=electronics"}],"meta":{"endpoint":"products","count":1,"seed":42,"params":{"minPrice":1,"maxPrice":999.99,"currency":"USD"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"name\":\"Wireless Aluminum Headphones\",\"description\":\"Meet the wireless aluminum headphones — a customer favorite from the electronics range.\",\"category\":\"electronics\",\"price\":129.99,\"currency\":\"USD\",\"sku\":\"ELE-04821-QX\",\"ean13\":\"4006381333931\",\"rating\":4.3,\"inStock\":true,\"imageUrl\":\"https://randomapi.dev/api/images/placeholder?width=640&height=480&text=electronics\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Products","url":"https://randomapi.dev/apis/products"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/punycode/encode":{"get":{"operationId":"get_punycode_encode","tags":["internet"],"summary":"Convert a Unicode domain or label to its ASCII A-label form","description":"Maps Unicode labels with UTS #46 — an xn-- label is validated without mapping, as the standard requires — then Punycode-encodes only the labels that need it. A label that breaks a rule but can still be converted keeps its A-label, alongside valid=false and a warning; ascii is null only when a label cannot be converted at all. Authoritative source: Unicode Character Database — DerivedBidiClass.txt (Unicode 17.0.0, 2025-07-24).","parameters":[{"name":"domain","in":"query","description":"Unicode domain or single label to convert, up to 1024 characters. The three UTS #46 label separators U+3002, U+FF0E and U+FF61 are folded to '.' before splitting.","required":true,"schema":{"type":"string","minLength":1,"maxLength":1024},"example":"münchen.de","x-randomapi-param-group":"route"},{"name":"mode","in":"query","description":"domain splits the input at dots and treats each part as a label; label treats the whole input as one label, so an embedded dot is reported as a rule violation instead of a separator.","required":false,"schema":{"type":"string","enum":["domain","label"],"default":"domain"},"example":"label","x-randomapi-param-group":"route"},{"name":"transitional","in":"query","description":"Apply UTS #46 transitional processing (deprecated) to the deviation characters: sharp s becomes ss, final sigma becomes sigma, and the zero-width joiner and non-joiner are removed. Existing xn-- labels are never remapped. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"useStd3AsciiRules","in":"query","description":"Require every ASCII code point in a label to be a lower-case letter, digit or hyphen. Turn it off to accept underscore labels such as _dmarc that DNS carries but IDNA does not permit. It cannot admit everything: '# % / : < > ? @ [ \\ ] ^ |', space, tab, newline and the other C0 controls are forbidden domain code points in the WHATWG URL host parser — the only UTS #46 entry point the runtime offers — and are reported as forbidden-character whatever this flag is set to. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":false,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["input","ascii"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"input,ascii"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["labels"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"labels"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PunycodeEncodeEnvelope"},{"$ref":"#/components/schemas/PunycodeEncodeRecord"}]},"example":{"data":{"input":"münchen.de","ascii":"xn--mnchen-3ya.de","unicode":"münchen.de","isIdn":true,"asciiLength":17,"valid":true,"labels":[{"index":0,"input":"münchen","unicode":"münchen","ascii":"xn--mnchen-3ya","isAce":false,"isIdn":true,"asciiLength":14,"valid":true}]},"meta":{"endpoint":"punycode","route":"/encode","params":{"domain":"münchen.de","mode":"domain","transitional":false,"useStd3AsciiRules":true},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Punycode & IDN converter","url":"https://randomapi.dev/apis/punycode"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/punycode/decode":{"get":{"operationId":"get_punycode_decode","tags":["internet"],"summary":"Convert xn-- A-labels back to Unicode and check the round trip","description":"Pure RFC 3492 decoding: no UTS #46 mapping beyond ASCII case folding, and no validity checking. roundTripsExactly is false when re-encoding the decoded label does not reproduce the supplied A-label byte for byte. Authoritative source: Unicode Character Database — DerivedBidiClass.txt (Unicode 17.0.0, 2025-07-24).","parameters":[{"name":"domain","in":"query","description":"ASCII domain or single label to decode, up to 1024 characters. Non-ASCII input is a 400 — use /encode for that.","required":true,"schema":{"type":"string","minLength":1,"maxLength":1024},"example":"xn--mnchen-3ya.de","x-randomapi-param-group":"route"},{"name":"mode","in":"query","description":"domain splits the input at dots and treats each part as a label; label treats the whole input as one label, so an embedded dot is reported as a rule violation instead of a separator.","required":false,"schema":{"type":"string","enum":["domain","label"],"default":"domain"},"example":"label","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["input","ascii"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"input,ascii"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["labels"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"labels"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PunycodeDecodeEnvelope"},{"$ref":"#/components/schemas/PunycodeDecodeRecord"}]},"example":{"data":{"input":"xn--mnchen-3ya.de","ascii":"xn--mnchen-3ya.de","unicode":"münchen.de","isIdn":true,"roundTripsExactly":true,"labels":[{"index":0,"ascii":"xn--mnchen-3ya","unicode":"münchen","isAce":true,"isIdn":true,"roundTripsExactly":true,"canonicalAscii":"xn--mnchen-3ya","error":null}]},"meta":{"endpoint":"punycode","route":"/decode","params":{"domain":"xn--mnchen-3ya.de","mode":"domain"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Punycode & IDN converter","url":"https://randomapi.dev/apis/punycode"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/punycode/analyze":{"get":{"operationId":"get_punycode_analyze","tags":["internet"],"summary":"Explain why a domain is or is not a valid IDN, naming every failing rule","description":"Runs every rule this API implements and returns one failure entry per violation, each citing the RFC or UTS #46 clause it comes from. Authoritative source: Unicode Character Database — DerivedBidiClass.txt (Unicode 17.0.0, 2025-07-24).","parameters":[{"name":"domain","in":"query","description":"Domain to analyze, up to 1024 characters. Unicode labels and xn-- labels may be mixed in the same name.","required":true,"schema":{"type":"string","minLength":1,"maxLength":1024},"example":"münchen.de","x-randomapi-param-group":"route"},{"name":"transitional","in":"query","description":"Apply UTS #46 transitional processing (deprecated) to the deviation characters: sharp s becomes ss, final sigma becomes sigma, and the zero-width joiner and non-joiner are removed. Existing xn-- labels are never remapped. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"useStd3AsciiRules","in":"query","description":"Require every ASCII code point in a label to be a lower-case letter, digit or hyphen. Turn it off to accept underscore labels such as _dmarc that DNS carries but IDNA does not permit. It cannot admit everything: '# % / : < > ? @ [ \\ ] ^ |', space, tab, newline and the other C0 controls are forbidden domain code points in the WHATWG URL host parser — the only UTS #46 entry point the runtime offers — and are reported as forbidden-character whatever this flag is set to. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":false,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["input","ascii"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"input,ascii"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["failures"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"failures"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PunycodeAnalyzeEnvelope"},{"$ref":"#/components/schemas/PunycodeAnalyzeRecord"}]},"example":{"data":{"input":"münchen.de","ascii":"xn--mnchen-3ya.de","unicode":"münchen.de","valid":true,"isIdn":true,"isBidiDomain":false,"asciiLength":17,"labels":[{"index":0,"input":"münchen","unicode":"münchen","ascii":"xn--mnchen-3ya","isAce":false,"isIdn":true,"asciiLength":14,"valid":true,"direction":"ltr"}],"failures":[{"label":"ab--cd","labelIndex":0,"rule":"hyphen-3-4","detail":"A label must not contain '--' in the third and fourth character positions; those positions are reserved for ACE prefixes such as 'xn--' (RFC 5891 section 4.2.3.1)."}]},"meta":{"endpoint":"punycode","route":"/analyze","params":{"domain":"münchen.de","transitional":false,"useStd3AsciiRules":true},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Punycode & IDN converter","url":"https://randomapi.dev/apis/punycode"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/qr-codes/image":{"get":{"operationId":"get_qr_codes_image","tags":["design"],"summary":"Render a scannable QR code as SVG","description":"Returns the symbol itself (`image/svg+xml`), not JSON. Modules are drawn in module coordinates with a viewBox, so the image stays crisp at any size. Authoritative source: ISO/IEC 18004 — QR Code bar code symbology specification.","parameters":[{"name":"data","in":"query","description":"Payload to encode, 1–900 characters. Encoded verbatim — leading and trailing spaces are preserved, and nothing is fetched, resolved or checked for where it points.","required":true,"schema":{"type":"string","minLength":1,"maxLength":900},"example":"https://randomapi.dev","x-randomapi-param-group":"route"},{"name":"ecc","in":"query","description":"Error-correction level: L recovers ~7% of codewords, M ~15%, Q ~25%, H ~30%. Higher levels survive more damage but need a larger symbol for the same payload.","required":false,"schema":{"type":"string","enum":["L","M","Q","H"],"default":"M"},"example":"H","x-randomapi-param-group":"route"},{"name":"scale","in":"query","description":"Pixels per module (1–16). The image is square: (modules + 2 × quietZone) × scale pixels.","required":false,"schema":{"type":"integer","minimum":1,"maximum":16,"default":4},"example":8,"x-randomapi-param-group":"route"},{"name":"quietZone","in":"query","description":"Light border in modules (0–8). ISO/IEC 18004 requires 4; smaller values are out of spec and may fail to scan.","required":false,"schema":{"type":"integer","minimum":0,"maximum":8,"default":4},"example":2,"x-randomapi-param-group":"route"},{"name":"fg","in":"query","description":"Module colour as 3- or 6-digit hex, with or without a leading '#'. Must differ from bg.","required":false,"schema":{"type":"string","maxLength":7,"default":"000000"},"example":"1a1a1a","x-randomapi-param-group":"route"},{"name":"bg","in":"query","description":"Background colour as 3- or 6-digit hex, with or without a leading '#'. Must differ from fg.","required":false,"schema":{"type":"string","maxLength":7,"default":"ffffff"},"example":"f5f5f4","x-randomapi-param-group":"route"},{"name":"mode","in":"query","description":"Encoding mode. 'auto' picks numeric when every character is a digit, alphanumeric when every character is in the 45-character QR set, otherwise byte. Forcing a mode the payload cannot use returns 400.","required":false,"schema":{"type":"string","enum":["auto","numeric","alphanumeric","byte"],"default":"auto"},"example":"byte","x-randomapi-param-group":"route"}],"responses":{"200":{"description":"SVG image generated from the validated query parameters.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"Cache-Control":{"$ref":"#/components/headers/ImageCacheControl"}},"content":{"image/svg+xml":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for QR Code API","url":"https://randomapi.dev/apis/qr-codes"},"x-randomapi-kind":"real","x-randomapi-mode":"image"}},"/api/qr-codes/info":{"get":{"operationId":"get_qr_codes_info","tags":["design"],"summary":"Version, capacity and mask a payload resolves to","description":"Runs the same encoder as /image and reports the chosen version, module count, mask pattern and the capacity left at every error-correction level — without transferring an image. Authoritative source: ISO/IEC 18004 — QR Code bar code symbology specification.","parameters":[{"name":"data","in":"query","description":"Payload to encode, 1–900 characters. Encoded verbatim — leading and trailing spaces are preserved, and nothing is fetched, resolved or checked for where it points.","required":true,"schema":{"type":"string","minLength":1,"maxLength":900},"example":"https://randomapi.dev","x-randomapi-param-group":"route"},{"name":"ecc","in":"query","description":"Error-correction level: L recovers ~7% of codewords, M ~15%, Q ~25%, H ~30%. Higher levels survive more damage but need a larger symbol for the same payload.","required":false,"schema":{"type":"string","enum":["L","M","Q","H"],"default":"M"},"example":"H","x-randomapi-param-group":"route"},{"name":"mode","in":"query","description":"Encoding mode. 'auto' picks numeric when every character is a digit, alphanumeric when every character is in the 45-character QR set, otherwise byte. Forcing a mode the payload cannot use returns 400.","required":false,"schema":{"type":"string","enum":["auto","numeric","alphanumeric","byte"],"default":"auto"},"example":"byte","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["version","modules"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"version,modules"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["svgHeight"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"svgHeight"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/QrCodesInfoEnvelope"},{"$ref":"#/components/schemas/QrCodesInfoRecord"}]},"example":{"data":{"version":2,"modules":25,"eccLevel":"M","mode":"byte","capacityBits":224,"dataBits":180,"remainderBits":7,"maskPattern":4,"capacityByLevel":{"L":32,"M":26,"Q":20,"H":14},"quietZoneModules":4,"svgWidth":132,"svgHeight":132},"meta":{"endpoint":"qr-codes","route":"/info","params":{"data":"https://randomapi.dev","ecc":"M","mode":"auto"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for QR Code API","url":"https://randomapi.dev/apis/qr-codes"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/quotes":{"get":{"operationId":"get_quotes_root","tags":["text"],"summary":"Random public-domain quotes (filtered, seed-reproducible)","description":"Public-domain quotes from authors who died before 1929 — every one traceable to a real work, filterable by author, tag and length, reproducible with a seed. Authoritative source: Public-domain works — authors deceased 95+ years, attributions verified.","parameters":[{"name":"author","in":"query","description":"Only quotes whose author contains this text, case-insensitive ('twain' → Mark Twain).","required":false,"schema":{"type":"string"},"example":"twain","x-randomapi-param-group":"route"},{"name":"tag","in":"query","description":"Only quotes tagged with this theme.","required":false,"schema":{"type":"string","enum":["wisdom","life","courage","work","happiness","time","truth","change","success","nature","love","art","any"],"default":"any"},"example":"courage","x-randomapi-param-group":"route"},{"name":"maxLength","in":"query","description":"Only quotes at most this many characters long.","required":false,"schema":{"type":"integer","minimum":20,"maximum":500},"example":120,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to 5.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":5},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["text","author"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"text,author"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["tags"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"tags"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/QuotesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/QuotesRootRecord"}}]},"example":{"data":[{"text":"When in doubt, tell the truth.","author":"Mark Twain","tags":["truth","wisdom"]}],"meta":{"endpoint":"quotes","count":1,"seed":42,"params":{"tag":"any"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"text\":\"When in doubt, tell the truth.\",\"author\":\"Mark Twain\",\"tags\":[\"truth\",\"wisdom\"]}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Quotes","url":"https://randomapi.dev/apis/quotes"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/random/pick":{"get":{"operationId":"get_random_pick","tags":["chance"],"summary":"Pick one of your options (optionally weighted)","description":"Uniform by default; pass `weights` (one positive number per option, any scale — `95,5` and `19,1` are equivalent) to bias the draw. `count` repeats the draw independently.","parameters":[{"name":"options","in":"query","description":"Comma-separated options to pick from: 1–100 items, each at most 100 characters. Whitespace around commas is trimmed and empty entries are dropped. Serialized as one comma-separated query value.","required":true,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["rock","paper","scissors"],"style":"form","explode":false,"x-randomapi-param-group":"route","x-randomapi-query-example":"rock,paper,scissors"},{"name":"weights","in":"query","description":"Relative weights, one per option in the same order. Each must be a number > 0 (the scale is arbitrary — only ratios matter). Length must equal 'options'. Omit for a uniform pick. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["5","3","2"],"style":"form","explode":false,"x-randomapi-param-group":"route","x-randomapi-query-example":"5,3,2"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":1},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["index","value"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"index,value"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["value"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"value"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/RandomPickEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/RandomPickRecord"}}]},"example":{"data":[{"index":0,"value":"rock"}],"meta":{"endpoint":"random","route":"/pick","count":1,"seed":42,"params":{"options":["rock","paper","scissors"]},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"index\":0,\"value\":\"rock\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Random picks","url":"https://randomapi.dev/apis/random"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/random/shuffle":{"get":{"operationId":"get_random_shuffle","tags":["chance"],"summary":"Shuffle a list into a random order","description":"An unbiased Fisher–Yates permutation of your items. `count` returns several independent shuffles of the same list.","parameters":[{"name":"items","in":"query","description":"Comma-separated items to shuffle: 2–100 items. Whitespace around commas is trimmed and empty entries are dropped. Serialized as one comma-separated query value.","required":true,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["alice","bob","carol","dave"],"style":"form","explode":false,"x-randomapi-param-group":"route","x-randomapi-query-example":"alice,bob,carol,dave"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":1},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["index","items"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"index,items"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["shuffled"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"shuffled"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/RandomShuffleEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/RandomShuffleRecord"}}]},"example":{"data":[{"index":0,"items":["alice","bob","carol","dave"],"shuffled":["carol","alice","dave","bob"]}],"meta":{"endpoint":"random","route":"/shuffle","count":1,"seed":42,"params":{"items":["alice","bob","carol","dave"]},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"index\":0,\"items\":[\"alice\",\"bob\",\"carol\",\"dave\"],\"shuffled\":[\"carol\",\"alice\",\"dave\",\"bob\"]}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Random picks","url":"https://randomapi.dev/apis/random"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/random/boolean":{"get":{"operationId":"get_random_boolean","tags":["chance"],"summary":"Flip a (possibly biased) coin","description":"Returns true with the given `probability` — 0 is never, 1 is always, 0.5 is a fair coin. `count` gives independent flips.","parameters":[{"name":"probability","in":"query","description":"Probability that the result is true, from 0 (never) to 1 (always).","required":false,"schema":{"type":"number","minimum":0,"maximum":1,"default":0.5},"example":0.7,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":1},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["index","value"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"index,value"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["probability"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"probability"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/RandomBooleanEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/RandomBooleanRecord"}}]},"example":{"data":[{"index":0,"value":true,"probability":0.7}],"meta":{"endpoint":"random","route":"/boolean","count":1,"seed":42,"params":{"probability":0.5},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"index\":0,\"value\":true,\"probability\":0.7}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Random picks","url":"https://randomapi.dev/apis/random"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/relational-seed":{"get":{"operationId":"get_relational_seed_root","tags":["developer"],"summary":"Generate a whole multi-table fixture with resolving foreign keys","description":"Returns the tables of one schema in topological order. Every non-null foreign-key value in `tables` is the primary key of a row in the referenced table of this same response.","parameters":[{"name":"schema","in":"query","description":"Which hand-designed fixture schema to generate: ecommerce (categories → products → customers → orders → order_items), saas (plans → accounts → users → invoices → invoice_items) or blog (tags → authors → posts → comments + post_tags).","required":false,"schema":{"type":"string","enum":["ecommerce","saas","blog"],"default":"ecommerce"},"example":"saas","x-randomapi-param-group":"route"},{"name":"customers","in":"query","description":"Number of parent rows: customers (ecommerce), accounts (saas) or authors (blog). Growing this never changes the rows that were already there.","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":10},"example":25,"x-randomapi-param-group":"route"},{"name":"ordersPerCustomer","in":"query","description":"Child rows per parent: orders, invoices or posts. 0 leaves every dependent table empty instead of inventing rows — two tables for ecommerce and saas, three for blog, and the warning names them.","required":false,"schema":{"type":"integer","minimum":0,"maximum":5,"default":2},"example":3,"x-randomapi-param-group":"route"},{"name":"itemsPerOrder","in":"query","description":"Grandchild rows per child row: order_items, invoice_items or comments. Ignored when ordersPerCustomer is 0.","required":false,"schema":{"type":"integer","minimum":1,"maximum":6,"default":3},"example":5,"x-randomapi-param-group":"route"},{"name":"idStyle","in":"query","description":"Primary/foreign key format: int (1..N per table), uuid (seeded RFC 9562 version-4 layout) or prefixed (cus_4f2a91c0d7b3). Only the identifier columns change.","required":false,"schema":{"type":"string","enum":["int","uuid","prefixed"],"default":"int"},"example":"uuid","x-randomapi-param-group":"route"},{"name":"currency","in":"query","description":"Active ISO 4217 code, case-insensitive. It fills the currency columns and scales every minor-unit amount by that currency's ISO minor-unit digits. XDR is refused (ISO defines no minor unit for it); no effect on schema=blog.","required":false,"schema":{"type":"string","minLength":3,"maxLength":3,"default":"USD"},"example":"JPY","x-randomapi-param-group":"route"},{"name":"seed","in":"query","description":"Determinism anchor. The same seed, parameters and asOf always return byte-identical rows and SQL. Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer","minimum":0,"maximum":4294967295,"default":1},"example":42,"x-randomapi-param-group":"route"},{"name":"asOf","in":"query","description":"Timestamp anchor: every generated row is dated at or before it (up to 900 days back). Defaults to the current time, so pin it to replay a bundle exactly. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-15T09:00:00Z","x-randomapi-param-group":"route"},{"name":"locale","in":"query","description":"Locale for the generated data (names, addresses, …).","required":false,"schema":{"type":"string","enum":["en","da","de","fr","es","it","pt","ja"],"default":"en"},"example":"da","x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["schema","asOf"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"schema,asOf"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["tables"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"tables"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/RelationalSeedRootEnvelope"},{"$ref":"#/components/schemas/RelationalSeedRootRecord"}]},"example":{"data":{"schema":"ecommerce","asOf":"2026-01-15T09:00:00Z","currency":"USD","idStyle":"int","rowCount":118,"tableOrder":["categories","products","customers","orders","order_items"],"foreignKeys":[{"table":"products","column":"category_id","nullable":false,"references":{"table":"categories","column":"id"}}],"tables":{"categories":[{"id":1,"slug":"home-kitchen","name":"Home & Kitchen"}],"customers":[{"id":1,"email":"emily.carter1@example.com","full_name":"Emily Carter","city":"Portland","country_code":"US","is_active":true,"created_at":"2025-04-18T07:31:44Z"}]}},"meta":{"endpoint":"relational-seed","locale":"en","params":{"schema":"ecommerce","customers":10,"ordersPerCustomer":2,"itemsPerOrder":3,"idStyle":"int","currency":"USD","seed":1},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Relational Seed Data API","url":"https://randomapi.dev/apis/relational-seed"},"x-randomapi-kind":"mock","x-randomapi-mode":"compute"}},"/api/relational-seed/sql":{"get":{"operationId":"get_relational_seed_sql","tags":["developer"],"summary":"Render the same bundle as a topologically ordered SQL seed script","description":"CREATE TABLE plus INSERT statements, parents first, for postgres, mysql or sqlite. The script is returned in the `sql` field — add `fields=sql&unwrap=true` to pipe it straight into a client.","parameters":[{"name":"schema","in":"query","description":"Which hand-designed fixture schema to generate: ecommerce (categories → products → customers → orders → order_items), saas (plans → accounts → users → invoices → invoice_items) or blog (tags → authors → posts → comments + post_tags).","required":false,"schema":{"type":"string","enum":["ecommerce","saas","blog"],"default":"ecommerce"},"example":"saas","x-randomapi-param-group":"route"},{"name":"dialect","in":"query","description":"SQL dialect to emit. Each one has its own identifier quoting, column types and literal syntax; nothing outside this list is supported.","required":false,"schema":{"type":"string","enum":["postgres","mysql","sqlite"],"default":"postgres"},"example":"sqlite","x-randomapi-param-group":"route"},{"name":"includeDdl","in":"query","description":"Emit CREATE TABLE statements before the INSERTs. Set false to get inserts only, for tables you already created. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":false,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"customers","in":"query","description":"Number of parent rows: customers (ecommerce), accounts (saas) or authors (blog). Growing this never changes the rows that were already there.","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":10},"example":25,"x-randomapi-param-group":"route"},{"name":"ordersPerCustomer","in":"query","description":"Child rows per parent: orders, invoices or posts. 0 leaves every dependent table empty instead of inventing rows — two tables for ecommerce and saas, three for blog, and the warning names them.","required":false,"schema":{"type":"integer","minimum":0,"maximum":5,"default":2},"example":3,"x-randomapi-param-group":"route"},{"name":"itemsPerOrder","in":"query","description":"Grandchild rows per child row: order_items, invoice_items or comments. Ignored when ordersPerCustomer is 0.","required":false,"schema":{"type":"integer","minimum":1,"maximum":6,"default":3},"example":5,"x-randomapi-param-group":"route"},{"name":"idStyle","in":"query","description":"Primary/foreign key format: int (1..N per table), uuid (seeded RFC 9562 version-4 layout) or prefixed (cus_4f2a91c0d7b3). Only the identifier columns change.","required":false,"schema":{"type":"string","enum":["int","uuid","prefixed"],"default":"int"},"example":"uuid","x-randomapi-param-group":"route"},{"name":"currency","in":"query","description":"Active ISO 4217 code, case-insensitive. It fills the currency columns and scales every minor-unit amount by that currency's ISO minor-unit digits. XDR is refused (ISO defines no minor unit for it); no effect on schema=blog.","required":false,"schema":{"type":"string","minLength":3,"maxLength":3,"default":"USD"},"example":"JPY","x-randomapi-param-group":"route"},{"name":"seed","in":"query","description":"Determinism anchor. The same seed, parameters and asOf always return byte-identical rows and SQL. Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer","minimum":0,"maximum":4294967295,"default":1},"example":42,"x-randomapi-param-group":"route"},{"name":"asOf","in":"query","description":"Timestamp anchor: every generated row is dated at or before it (up to 900 days back). Defaults to the current time, so pin it to replay a bundle exactly. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-15T09:00:00Z","x-randomapi-param-group":"route"},{"name":"locale","in":"query","description":"Locale for the generated data (names, addresses, …).","required":false,"schema":{"type":"string","enum":["en","da","de","fr","es","it","pt","ja"],"default":"en"},"example":"da","x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["schema","dialect"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"schema,dialect"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["sql"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"sql"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/RelationalSeedSqlEnvelope"},{"$ref":"#/components/schemas/RelationalSeedSqlRecord"}]},"example":{"data":{"schema":"ecommerce","dialect":"postgres","idStyle":"int","includeDdl":true,"tableOrder":["categories","products","customers","orders","order_items"],"rowCount":118,"statementCount":10,"byteLength":14820,"sql":"CREATE TABLE \"categories\" (\n  \"id\" BIGINT NOT NULL,\n  \"slug\" TEXT NOT NULL,\n  \"name\" TEXT NOT NULL,\n  PRIMARY KEY (\"id\")\n);\n\nINSERT INTO \"categories\" (\"id\", \"slug\", \"name\") VALUES\n  (1, 'home-kitchen', 'Home & Kitchen');"},"meta":{"endpoint":"relational-seed","route":"/sql","locale":"en","params":{"schema":"ecommerce","dialect":"postgres","includeDdl":true,"customers":10,"ordersPerCustomer":2,"itemsPerOrder":3,"idStyle":"int","currency":"USD","seed":1},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Relational Seed Data API","url":"https://randomapi.dev/apis/relational-seed"},"x-randomapi-kind":"mock","x-randomapi-mode":"compute"}},"/api/returns":{"get":{"operationId":"get_returns_root","tags":["commerce"],"summary":"Generate bounded fictional product-return lifecycles","description":"Generate coherent product returns with bounded line quantities, exact refund arithmetic, reverse shipments and status-specific timelines.","parameters":[{"name":"status","in":"query","description":"Pin the exact return/reverse-shipment lifecycle state.","required":false,"schema":{"type":"string","enum":["requested","approved","inTransit","received","refunded","rejected","cancelled"]},"example":"received","x-randomapi-param-group":"route"},{"name":"reason","in":"query","description":"Pin the fictional return reason.","required":false,"schema":{"type":"string","enum":["damaged","wrongItem","notAsDescribed","changedMind","duplicate"]},"example":"damaged","x-randomapi-param-group":"route"},{"name":"currency","in":"query","description":"Currency for all integer minor-unit amounts.","required":false,"schema":{"type":"string","enum":["USD","EUR","DKK","GBP"],"default":"USD"},"example":"DKK","x-randomapi-param-group":"route"},{"name":"minItems","in":"query","description":"Minimum distinct return lines.","required":false,"schema":{"type":"integer","minimum":1,"maximum":4,"default":1},"example":2,"x-randomapi-param-group":"route"},{"name":"maxItems","in":"query","description":"Maximum distinct return lines; must be ≥ minItems.","required":false,"schema":{"type":"integer","minimum":1,"maximum":4,"default":3},"example":4,"x-randomapi-param-group":"route"},{"name":"restockingFeeRate","in":"query","description":"Percentage fee, converted once to rounded integer minor units.","required":false,"schema":{"type":"number","minimum":0,"maximum":20,"default":0},"example":10,"x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Earliest creation time. With only from, to resolves 30 elapsed days later; with neither, defaults 30 UTC days before today. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-06-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Latest creation time. With only to, from resolves 30 elapsed days earlier; with neither, defaults to today's UTC end. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-06-30T23:59:59.999Z","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","returnNumber"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,returnNumber"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["events"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"events"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ReturnsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/ReturnsRootRecord"}}]},"example":{"data":[{"id":"ret_930ac8204f00_00","returnNumber":"RET-ABCD2345","orderId":"ord_demo","status":"received","reason":"damaged","currency":"DKK","createdAt":"2026-06-10T08:00:00.000Z","updatedAt":"2026-06-12T08:00:00.000Z","approvedAt":"2026-06-10T10:00:00.000Z","rejectedAt":null,"cancelledAt":null,"items":[{"orderLineId":"line_demo","productId":"prd_demo","name":"Demo USB Hub","orderedQuantity":2,"returnQuantity":1,"unitPriceMinor":10000,"lineRefundMinor":10000}],"refund":{"subtotalMinor":10000,"restockingFeeRate":10,"restockingFeeMinor":1000,"estimatedMinor":9000,"refundedMinor":0,"refundedAt":null},"reverseShipment":{"status":"inTransit","trackingNumber":"RET-ABCD2345","trackingUrl":"https://returns.example.com/track/RET-ABCD2345","shippedAt":"2026-06-11T08:00:00.000Z","receivedAt":null},"events":[{"status":"requested","message":"Fictional return request created","createdAt":"2026-06-10T08:00:00.000Z"}]}],"meta":{"endpoint":"returns","count":1,"seed":42,"params":{"currency":"USD","minItems":1,"maxItems":3,"restockingFeeRate":0},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"ret_930ac8204f00_00\",\"returnNumber\":\"RET-ABCD2345\",\"orderId\":\"ord_demo\",\"status\":\"received\",\"reason\":\"damaged\",\"currency\":\"DKK\",\"createdAt\":\"2026-06-10T08:00:00.000Z\",\"updatedAt\":\"2026-06-12T08:00:00.000Z\",\"approvedAt\":\"2026-06-10T10:00:00.000Z\",\"rejectedAt\":null,\"cancelledAt\":null,\"items\":[{\"orderLineId\":\"line_demo\",\"productId\":\"prd_demo\",\"name\":\"Demo USB Hub\",\"orderedQuantity\":2,\"returnQuantity\":1,\"unitPriceMinor\":10000,\"lineRefundMinor\":10000}],\"refund\":{\"subtotalMinor\":10000,\"restockingFeeRate\":10,\"restockingFeeMinor\":1000,\"estimatedMinor\":9000,\"refundedMinor\":0,\"refundedAt\":null},\"reverseShipment\":{\"status\":\"inTransit\",\"trackingNumber\":\"RET-ABCD2345\",\"trackingUrl\":\"https://returns.example.com/track/RET-ABCD2345\",\"shippedAt\":\"2026-06-11T08:00:00.000Z\",\"receivedAt\":null},\"events\":[{\"status\":\"requested\",\"message\":\"Fictional return request created\",\"createdAt\":\"2026-06-10T08:00:00.000Z\"}]}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Return fixtures","url":"https://randomapi.dev/apis/returns"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/reverse-dns/encode":{"get":{"operationId":"get_reverse_dns_encode","tags":["internet"],"summary":"Encode one IPv4 or IPv6 address as a PTR owner name","description":"Parses one strict IP address locally and returns its canonical family-specific reverse name; no DNS request occurs. Authoritative source: IETF reverse-DNS standards (RFC 1035 and RFC 3596).","parameters":[{"name":"ip","in":"query","description":"Strict IPv4 or IPv6 address. IPv6 may be compressed or end with an embedded dotted-decimal IPv4 address; brackets and zone identifiers are rejected.","required":true,"schema":{"type":"string","minLength":2,"maxLength":45},"example":"10.2.0.52","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["family","ip"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"family,ip"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["zone"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"zone"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ReverseDnsEncodeEnvelope"},{"$ref":"#/components/schemas/ReverseDnsEncodeRecord"}]},"example":{"data":{"family":4,"ip":"10.2.0.52","reverseName":"52.0.2.10.in-addr.arpa.","zone":"in-addr.arpa."},"meta":{"endpoint":"reverse-dns","route":"/encode","params":{"ip":"10.2.0.52"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Reverse DNS names","url":"https://randomapi.dev/apis/reverse-dns"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/reverse-dns/decode":{"get":{"operationId":"get_reverse_dns_decode","tags":["internet"],"summary":"Decode one complete IN-ADDR.ARPA or IP6.ARPA owner name","description":"Requires a full host reverse name, canonicalizes the optional root dot and reconstructs the exact IPv4 or IPv6 address. Authoritative source: IETF reverse-DNS standards (RFC 1035 and RFC 3596).","parameters":[{"name":"name","in":"query","description":"Complete in-addr.arpa or 32-nibble ip6.arpa name. The final root dot is optional; partial zones and ip6.int are rejected.","required":true,"schema":{"type":"string","minLength":12,"maxLength":80},"example":"52.0.2.10.in-addr.arpa.","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["family","ip"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"family,ip"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["zone"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"zone"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ReverseDnsDecodeEnvelope"},{"$ref":"#/components/schemas/ReverseDnsDecodeRecord"}]},"example":{"data":{"family":4,"ip":"10.2.0.52","reverseName":"52.0.2.10.in-addr.arpa.","zone":"in-addr.arpa."},"meta":{"endpoint":"reverse-dns","route":"/decode","params":{"name":"52.0.2.10.in-addr.arpa."},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Reverse DNS names","url":"https://randomapi.dev/apis/reverse-dns"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/reviews":{"get":{"operationId":"get_reviews_root","tags":["text"],"summary":"Generate sentiment-coherent product reviews","description":"Sentiment-coherent fake product reviews — 1–2★ complain, 3★ shrug, 4–5★ rave — with star-rating and date-range filters and full seed determinism.","parameters":[{"name":"minRating","in":"query","description":"Lowest star rating to generate (inclusive).","required":false,"schema":{"type":"integer","minimum":1,"maximum":5,"default":1},"example":4,"x-randomapi-param-group":"route"},{"name":"maxRating","in":"query","description":"Highest star rating to generate (inclusive). Must be ≥ minRating.","required":false,"schema":{"type":"integer","minimum":1,"maximum":5,"default":5},"example":5,"x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Earliest review date (YYYY-MM-DD, inclusive; times are truncated to the UTC day). Defaults to 365 days before today. Must be ≤ to. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Latest review date (YYYY-MM-DD, inclusive; times are truncated to the UTC day). Defaults to today (UTC). Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-03-31","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["rating","title"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"rating,title"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["helpfulCount"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"helpfulCount"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ReviewsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/ReviewsRootRecord"}}]},"example":{"data":[{"rating":5,"title":"Simply wonderful","body":"This kit is outstanding. The battery life is brilliant. Overall, I would recommend it to anyone.","author":"Emily Carter","date":"2026-03-14","verified":true,"helpfulCount":12}],"meta":{"endpoint":"reviews","count":1,"seed":42,"params":{"minRating":1,"maxRating":5},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"rating\":5,\"title\":\"Simply wonderful\",\"body\":\"This kit is outstanding. The battery life is brilliant. Overall, I would recommend it to anyone.\",\"author\":\"Emily Carter\",\"date\":\"2026-03-14\",\"verified\":true,\"helpfulCount\":12}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Product reviews","url":"https://randomapi.dev/apis/reviews"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/robots-txt/check":{"get":{"operationId":"get_robots_txt_check","tags":["internet"],"summary":"Decide whether a crawler may fetch a path, and show the winning rule","description":"Matches the path against the applying group's rules and returns the RFC 9309 verdict together with every competing rule and its octet length. Pass exactly one of `url` or `path`. Authoritative source: RFC 9309 — Robots Exclusion Protocol (IETF).","parameters":[{"name":"robots","in":"query","description":"The robots.txt file text itself — this endpoint never fetches it. Newlines travel as %0A. Capped at 8000 bytes and 500 lines because it has to fit in a query string; larger input is rejected, never truncated.","required":true,"schema":{"type":"string"},"example":"User-agent: *\nDisallow: /admin/\nAllow: /admin/public/\nCrawl-delay: 10\nSitemap: https://example.com/sitemap.xml","x-randomapi-param-group":"route"},{"name":"url","in":"query","description":"Absolute http(s) URL to test. Only the path and query are matched; the fragment is dropped and dot-segments are resolved, including their percent-encoded '%2e' spellings. A URL parser normalizes the rest too, so a literal space becomes '%20' and a backslash becomes '/'. Mutually exclusive with 'path'.","required":false,"schema":{"type":"string","minLength":1,"maxLength":2048},"example":"https://example.com/admin/public/logo.png","x-randomapi-param-group":"route"},{"name":"path","in":"query","description":"Path to test when you have no full URL. Must start with '/' and may include a query string; a fragment is dropped. Taken exactly as given — unlike 'url' it is never re-escaped by a URL parser, so a literal space stays a space instead of becoming '%20', and dot-segments are not resolved. Mutually exclusive with 'url'.","required":false,"schema":{"type":"string","minLength":1,"maxLength":2048},"example":"/admin/settings","x-randomapi-param-group":"route"},{"name":"userAgent","in":"query","description":"Crawler product token: '*' or letters, '-' and '_' only (RFC 9309 Section 2.2.1). Matched case-insensitively against the file's user-agent lines.","required":false,"schema":{"type":"string","minLength":1,"maxLength":64,"default":"*"},"example":"Googlebot","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["userAgent","matchedGroup"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"userAgent,matchedGroup"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["path"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"path"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/RobotsTxtCheckEnvelope"},{"$ref":"#/components/schemas/RobotsTxtCheckRecord"}]},"example":{"data":{"userAgent":"foobot","matchedGroup":"foobot","allowed":false,"matchedRule":{"type":"disallow","pattern":"/example/page/disallowed.gif","octetLength":28,"lineNumber":3},"competingRules":[{"type":"disallow","pattern":"/example/page/disallowed.gif","octetLength":28,"lineNumber":3},{"type":"allow","pattern":"/example/page/","octetLength":14,"lineNumber":2}],"path":"/example/page/disallowed.gif"},"meta":{"endpoint":"robots-txt","route":"/check","params":{"robots":"User-agent: *\nDisallow: /admin/\nAllow: /admin/public/\nCrawl-delay: 10\nSitemap: https://example.com/sitemap.xml","userAgent":"*"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for robots.txt Tester API (RFC 9309)","url":"https://randomapi.dev/apis/robots-txt"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/robots-txt/parse":{"get":{"operationId":"get_robots_txt_parse","tags":["internet"],"summary":"Parse robots.txt into groups, rules, sitemaps and unusable lines","description":"Reads the file exactly as /check does, but returns the structure instead of a verdict: every group with its product tokens and rules, plus sitemaps, non-standard records and the lines that could not be used. Authoritative source: RFC 9309 — Robots Exclusion Protocol (IETF).","parameters":[{"name":"robots","in":"query","description":"The robots.txt file text itself — this endpoint never fetches it. Newlines travel as %0A. Capped at 8000 bytes and 500 lines because it has to fit in a query string; larger input is rejected, never truncated.","required":true,"schema":{"type":"string"},"example":"User-agent: *\nDisallow: /admin/\nAllow: /admin/public/\nCrawl-delay: 10\nSitemap: https://example.com/sitemap.xml","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["groups","sitemaps"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"groups,sitemaps"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["lineCount"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"lineCount"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/RobotsTxtParseEnvelope"},{"$ref":"#/components/schemas/RobotsTxtParseRecord"}]},"example":{"data":{"groups":[{"userAgents":["*"],"rules":[{"type":"disallow","pattern":"/admin/","lineNumber":2},{"type":"allow","pattern":"/admin/public/","lineNumber":3}]}],"sitemaps":["https://example.com/sitemap.xml"],"otherRecords":[{"field":"crawl-delay","value":"10","lineNumber":4}],"invalidLines":[{"lineNumber":1,"text":"Disallow: /oops","reason":"rule precedes the first user-agent line, so RFC 9309 Section 2.2.2 requires it to be ignored"}],"byteLength":110,"lineCount":5},"meta":{"endpoint":"robots-txt","route":"/parse","params":{"robots":"User-agent: *\nDisallow: /admin/\nAllow: /admin/public/\nCrawl-delay: 10\nSitemap: https://example.com/sitemap.xml"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for robots.txt Tester API (RFC 9309)","url":"https://randomapi.dev/apis/robots-txt"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/search-results":{"get":{"operationId":"get_search_results_root","tags":["developer"],"summary":"Build one deterministic mock search-results page","description":"Build deterministic mock search pages with exact pagination, relevance or date sorting, facets, highlights, empty states and suggestions.","parameters":[{"name":"query","in":"query","description":"Original search text displayed to the user.","required":true,"schema":{"type":"string","minLength":1,"maxLength":100},"example":"cursor pagination","x-randomapi-param-group":"route"},{"name":"scenario","in":"query","description":"Return normal results, an exact empty state or a caller-supplied suggestion state.","required":false,"schema":{"type":"string","enum":["results","empty","suggestion"],"default":"results"},"example":"results","x-randomapi-param-group":"route"},{"name":"suggestedQuery","in":"query","description":"Required, distinct alternative query for scenario=suggestion; invalid for other scenarios.","required":false,"schema":{"type":"string","minLength":1,"maxLength":100},"example":"authentication sessions","x-randomapi-param-group":"route"},{"name":"total","in":"query","description":"Total matching records. Defaults to 47; empty requires 0.","required":false,"schema":{"type":"integer","minimum":0,"maximum":1000},"example":137,"x-randomapi-param-group":"route"},{"name":"page","in":"query","description":"One-based page number; beyond-last pages return an honest empty slice.","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":1},"example":2,"x-randomapi-param-group":"route"},{"name":"pageSize","in":"query","description":"Maximum results returned on this page.","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":10},"example":20,"x-randomapi-param-group":"route"},{"name":"sort","in":"query","description":"Sort by descending score, newest timestamp or oldest timestamp.","required":false,"schema":{"type":"string","enum":["relevance","newest","oldest"],"default":"relevance"},"example":"newest","x-randomapi-param-group":"route"},{"name":"facets","in":"query","description":"Include exact full-result category counts. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"asOf","in":"query","description":"Replay anchor for synthetic updatedAt values; defaults to the request clock and is echoed. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-10T12:00:00.000Z","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["query","effectiveQuery"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"query,effectiveQuery"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["facets"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"facets"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/SearchResultsRootEnvelope"},{"$ref":"#/components/schemas/SearchResultsRootRecord"}]},"example":{"data":{"query":"cursor pagination","effectiveQuery":"cursor pagination","scenario":"results","suggestedQuery":null,"total":137,"sort":"relevance","pageInfo":{"page":1,"pageSize":10,"totalPages":14,"from":1,"to":10,"hasPreviousPage":false,"hasNextPage":true,"previousPage":null,"nextPage":2},"results":[{"id":"result_00001_1234abcd","title":"cursor pagination — API reference 1","url":"https://search.example/results/result_00001_1234abcd","snippet":"A fictional search fixture about cursor pagination.","category":"reference","score":0.91,"updatedAt":"2026-07-01T12:00:00.000Z","highlights":[]}],"facets":[{"value":"reference","count":34}]},"meta":{"endpoint":"search-results","params":{"query":"cursor pagination","scenario":"results","page":1,"pageSize":10,"sort":"relevance","facets":true},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Search result fixtures","url":"https://randomapi.dev/apis/search-results"},"x-randomapi-kind":"mock","x-randomapi-mode":"compute"}},"/api/semver/parse":{"get":{"operationId":"get_semver_parse","tags":["developer"],"summary":"Parse and validate one bounded SemVer 2.0.0 version","description":"Bounded SemVer 2.0.0 parsing, precedence comparison and major/minor/patch bumps, with explicit size limits instead of precision loss. Authoritative source: Semantic Versioning 2.0.0 specification.","parameters":[{"name":"version","in":"query","description":"Bounded SemVer 2.0.0 string (maximum 256 characters) with no leading 'v'. Core and numeric prerelease identifiers must fit JavaScript's exact safe-integer range.","required":true,"schema":{"type":"string","minLength":5,"maxLength":256},"example":"1.4.0-beta.2+build.7","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["version","major"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"version,major"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["isPrerelease"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"isPrerelease"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/SemverParseEnvelope"},{"$ref":"#/components/schemas/SemverParseRecord"}]},"example":{"data":{"version":"1.4.0-beta.2+build.7","major":1,"minor":4,"patch":0,"prerelease":["beta","2"],"build":["build","7"],"isPrerelease":true},"meta":{"endpoint":"semver","route":"/parse","params":{"version":"1.4.0-beta.2+build.7"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Semantic version utilities","url":"https://randomapi.dev/apis/semver"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/semver/compare":{"get":{"operationId":"get_semver_compare","tags":["developer"],"summary":"Compare the precedence of two SemVer versions","description":"Bounded SemVer 2.0.0 parsing, precedence comparison and major/minor/patch bumps, with explicit size limits instead of precision loss. Authoritative source: Semantic Versioning 2.0.0 specification.","parameters":[{"name":"left","in":"query","description":"Bounded SemVer 2.0.0 string (maximum 256 characters) with no leading 'v'. Core and numeric prerelease identifiers must fit JavaScript's exact safe-integer range.","required":true,"schema":{"type":"string","minLength":5,"maxLength":256},"example":"1.9.0","x-randomapi-param-group":"route"},{"name":"right","in":"query","description":"Bounded SemVer 2.0.0 string (maximum 256 characters) with no leading 'v'. Core and numeric prerelease identifiers must fit JavaScript's exact safe-integer range.","required":true,"schema":{"type":"string","minLength":5,"maxLength":256},"example":"1.10.0","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["left","right"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"left,right"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["relation"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"relation"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/SemverCompareEnvelope"},{"$ref":"#/components/schemas/SemverCompareRecord"}]},"example":{"data":{"left":"1.9.0","right":"1.10.0","comparison":-1,"relation":"less-than"},"meta":{"endpoint":"semver","route":"/compare","params":{"left":"1.9.0","right":"1.10.0"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Semantic version utilities","url":"https://randomapi.dev/apis/semver"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/semver/bump":{"get":{"operationId":"get_semver_bump","tags":["developer"],"summary":"Increment a SemVer major, minor or patch component","description":"Drops prerelease and build metadata, increments the selected core component, and resets every lower component to zero. Authoritative source: Semantic Versioning 2.0.0 specification.","parameters":[{"name":"version","in":"query","description":"Bounded SemVer 2.0.0 string (maximum 256 characters) with no leading 'v'. Core and numeric prerelease identifiers must fit JavaScript's exact safe-integer range.","required":true,"schema":{"type":"string","minLength":5,"maxLength":256},"example":"1.2.3-beta.1+build.5","x-randomapi-param-group":"route"},{"name":"type","in":"query","description":"Core component to increment; lower components are reset to zero.","required":true,"schema":{"type":"string","enum":["major","minor","patch"]},"example":"minor","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["input","type"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"input,type"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["patch"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"patch"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/SemverBumpEnvelope"},{"$ref":"#/components/schemas/SemverBumpRecord"}]},"example":{"data":{"input":"1.2.3-beta.1+build.5","type":"minor","version":"1.3.0","major":1,"minor":3,"patch":0},"meta":{"endpoint":"semver","route":"/bump","params":{"version":"1.2.3-beta.1+build.5","type":"minor"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Semantic version utilities","url":"https://randomapi.dev/apis/semver"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/shipments":{"get":{"operationId":"get_shipments_root","tags":["commerce"],"summary":"Generate coherent fictional shipment timelines","description":"Coherent fake shipment tracking fixtures with status-specific nullable dates, chronological events, fictional carriers and country/date filters.","parameters":[{"name":"status","in":"query","description":"Pin every shipment to this lifecycle status. Omit for a weighted mix.","required":false,"schema":{"type":"string","enum":["labelCreated","inTransit","outForDelivery","delivered","exception","cancelled"]},"example":"inTransit","x-randomapi-param-group":"route"},{"name":"service","in":"query","description":"Pin economy, standard or express service; this controls transit duration.","required":false,"schema":{"type":"string","enum":["economy","standard","express"]},"example":"express","x-randomapi-param-group":"route"},{"name":"originCountry","in":"query","description":"Pin the origin ISO alpha-2 code, case-insensitively. Supported: AU, BR, CA, DE, DK, ES, FR, GB, IT, JP, MX, NL, NO, SE, SG, US.","required":false,"schema":{"type":"string","minLength":2,"maxLength":2},"example":"DK","x-randomapi-param-group":"route"},{"name":"destinationCountry","in":"query","description":"Pin the destination ISO alpha-2 code; domestic (same-code) fixtures are allowed. Supported: AU, BR, CA, DE, DK, ES, FR, GB, IT, JP, MX, NL, NO, SE, SG, US.","required":false,"schema":{"type":"string","minLength":2,"maxLength":2},"example":"DE","x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Earliest lifecycle anchor. Defaults to 30 days before the resolved to value. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-05-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Latest lifecycle anchor. Defaults to the next UTC midnight, or 30 days after an explicit from. Must be ≥ from. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-05-31","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","trackingNumber"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,trackingNumber"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["events"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"events"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ShipmentsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/ShipmentsRootRecord"}}]},"example":{"data":[{"id":"shp_42ce8f30a91bd572_00","trackingNumber":"SHP-PLM-7QK4M8X2RP-00","carrier":{"name":"Parcel Loom (fictional)","code":"PLM"},"status":"inTransit","service":"standard","origin":{"countryCode":"DK","country":"Denmark","city":"Copenhagen"},"destination":{"countryCode":"DE","country":"Germany","city":"Berlin"},"weightKg":4.75,"shippedAt":"2026-06-03T09:15:00.000Z","estimatedDelivery":"2026-06-07T09:15:00.000Z","deliveredAt":null,"events":[{"status":"labelCreated","timestamp":"2026-06-02T12:00:00.000Z","location":"Copenhagen, Denmark","description":"Shipping label created"}]}],"meta":{"endpoint":"shipments","count":1,"seed":42,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"shp_42ce8f30a91bd572_00\",\"trackingNumber\":\"SHP-PLM-7QK4M8X2RP-00\",\"carrier\":{\"name\":\"Parcel Loom (fictional)\",\"code\":\"PLM\"},\"status\":\"inTransit\",\"service\":\"standard\",\"origin\":{\"countryCode\":\"DK\",\"country\":\"Denmark\",\"city\":\"Copenhagen\"},\"destination\":{\"countryCode\":\"DE\",\"country\":\"Germany\",\"city\":\"Berlin\"},\"weightKg\":4.75,\"shippedAt\":\"2026-06-03T09:15:00.000Z\",\"estimatedDelivery\":\"2026-06-07T09:15:00.000Z\",\"deliveredAt\":null,\"events\":[{\"status\":\"labelCreated\",\"timestamp\":\"2026-06-02T12:00:00.000Z\",\"location\":\"Copenhagen, Denmark\",\"description\":\"Shipping label created\"}]}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Shipments","url":"https://randomapi.dev/apis/shipments"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/stress-strings":{"get":{"operationId":"get_stress_strings_root","tags":["text"],"summary":"Hostile-but-safe Unicode test strings with their code points and hazards","description":"Records come back in a seeded random order, so `count=10` samples the whole corpus instead of returning the first ten. Pin `seed` to freeze the sample. `?exclude=value` drops the raw string and keeps the print-safe `escaped` form — which is what the whole-corpus example below does, because an unterminated RIGHT-TO-LEFT OVERRIDE pasted into an HTML page reorders the rest of the line it lands on. Authoritative source: Unicode Character Database 17.0.0 (character names and categories).","parameters":[{"name":"category","in":"query","description":"Only return fixtures from this hazard family. Omit for the whole corpus. `length` is the only generated family — the rest are authored.","required":false,"schema":{"type":"string","enum":["rtl","bidi-control","cjk-width","combining","emoji-zwj","zero-width","homoglyph","whitespace","case-folding","normalization-unstable","length"]},"example":"bidi-control","x-randomapi-param-group":"route"},{"name":"maxLength","in":"query","description":"Maximum UTF-16 code-unit length of every returned fixture. Generated `length` fixtures are built as close to this cap as their repeating unit allows; curated fixtures longer than it are omitted with a warning rather than truncated.","required":false,"schema":{"type":"integer","minimum":1,"maximum":4000,"default":256},"example":64,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to 10.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","category"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,category"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["whyItBreaks"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"whyItBreaks"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/StressStringsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/StressStringsRootRecord"}}]},"example":{"data":[{"id":"whitespace-no-break-space","category":"whitespace","value":"10 kg","escaped":"10\\u00A0kg","codePoints":[{"cp":"U+0031","name":"DIGIT ONE","category":"Nd"},{"cp":"U+0030","name":"DIGIT ZERO","category":"Nd"},{"cp":"U+00A0","name":"NO-BREAK SPACE","category":"Zs"},{"cp":"U+006B","name":"LATIN SMALL LETTER K","category":"Ll"},{"cp":"U+0067","name":"LATIN SMALL LETTER G","category":"Ll"}],"lengthUnits":{"codePoints":5,"utf16Units":5,"utf8Bytes":6,"graphemes":5},"unstableUnder":["NFKC","NFKD"],"hazard":"A NO-BREAK SPACE (U+00A0) where an ASCII space is expected.","expectedBehavior":"Normalize Unicode spaces to U+0020 on input, or match whitespace with a Unicode-aware class everywhere.","whyItBreaks":"JavaScript's \\s matches it but a literal ' ' does not, and NFKC turns it into a plain space — so three layers of the same stack can disagree about the token boundaries."}],"meta":{"endpoint":"stress-strings","count":1,"seed":42,"params":{"maxLength":256},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"whitespace-no-break-space\",\"category\":\"whitespace\",\"value\":\"10 kg\",\"escaped\":\"10\\\\u00A0kg\",\"codePoints\":[{\"cp\":\"U+0031\",\"name\":\"DIGIT ONE\",\"category\":\"Nd\"},{\"cp\":\"U+0030\",\"name\":\"DIGIT ZERO\",\"category\":\"Nd\"},{\"cp\":\"U+00A0\",\"name\":\"NO-BREAK SPACE\",\"category\":\"Zs\"},{\"cp\":\"U+006B\",\"name\":\"LATIN SMALL LETTER K\",\"category\":\"Ll\"},{\"cp\":\"U+0067\",\"name\":\"LATIN SMALL LETTER G\",\"category\":\"Ll\"}],\"lengthUnits\":{\"codePoints\":5,\"utf16Units\":5,\"utf8Bytes\":6,\"graphemes\":5},\"unstableUnder\":[\"NFKC\",\"NFKD\"],\"hazard\":\"A NO-BREAK SPACE (U+00A0) where an ASCII space is expected.\",\"expectedBehavior\":\"Normalize Unicode spaces to U+0020 on input, or match whitespace with a Unicode-aware class everywhere.\",\"whyItBreaks\":\"JavaScript's \\\\s matches it but a literal ' ' does not, and NFKC turns it into a plain space — so three layers of the same stack can disagree about the token boundaries.\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Unicode Stress Test Strings API","url":"https://randomapi.dev/apis/stress-strings"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/stress-strings/pseudo":{"get":{"operationId":"get_stress_strings_pseudo","tags":["text"],"summary":"Pseudo-localize text to expose truncation and hardcoded strings","description":"Accents ASCII letters 1:1, pads with MIDDLE DOT to the requested expansion, and brackets the result. Deterministic: the same query always returns the same string. Authoritative source: Unicode Character Database 17.0.0 (character names and categories).","parameters":[{"name":"text","in":"query","description":"The text to pseudo-localize, 1–2000 UTF-16 code units. Passed through character for character — leading and trailing whitespace is preserved, because that is often the bug.","required":true,"schema":{"type":"string","minLength":1,"maxLength":2000},"example":"Save changes","x-randomapi-param-group":"route"},{"name":"expansion","in":"query","description":"Minimum length increase as a fraction of the input, measured in code points. 0.35 is the increase commonly budgeted for English into German; 0 disables padding entirely.","required":false,"schema":{"type":"number","minimum":0,"maximum":1,"default":0.35},"example":0.6,"x-randomapi-param-group":"route"},{"name":"style","in":"query","description":"'accent' maps ASCII letters only, 'bracket' wraps only, 'both' does each. Padding is applied in every style.","required":false,"schema":{"type":"string","enum":["accent","bracket","both"],"default":"both"},"example":"accent","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["input","output"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"input,output"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["outputUtf8Bytes"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"outputUtf8Bytes"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/StressStringsPseudoEnvelope"},{"$ref":"#/components/schemas/StressStringsPseudoRecord"}]},"example":{"data":{"input":"Save changes","output":"⟦Śáṽé ćĥáñğéś···⟧","style":"both","requestedExpansion":0.35,"achievedExpansion":0.416667,"inputCodePoints":12,"outputCodePoints":17,"paddingCodePoints":3,"lettersMapped":11,"outputUtf16Units":17,"outputUtf8Bytes":36},"meta":{"endpoint":"stress-strings","route":"/pseudo","params":{"text":"Save changes","expansion":0.35,"style":"both"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Unicode Stress Test Strings API","url":"https://randomapi.dev/apis/stress-strings"},"x-randomapi-kind":"mock","x-randomapi-mode":"compute"}},"/api/structured-fields/parse":{"get":{"operationId":"get_structured_fields_parse","tags":["developer"],"summary":"Parse a structured field value into typed JSON","description":"Runs RFC 9651 Section 4.2 over the value, then re-serializes the result with Section 4.1 so you can see its canonical form. Authoritative source: RFC 9651 — Structured Field Values for HTTP.","parameters":[{"name":"value","in":"query","description":"The raw field value, at most 4096 characters. Whitespace is significant and is not trimmed, and a bare '+' in a query string decodes to a space — percent-encode it as %2B, which matters because '+' is both a base64 character and a token character. Omit the parameter to represent a field that is not present, which is an empty list or dictionary and a parse error for an item.","required":false,"schema":{"type":"string","maxLength":4096},"example":"u=1, i","x-randomapi-param-group":"route"},{"name":"type","in":"query","description":"Top-level structured type, as chosen by the field's own specification. Required unless 'field' resolves it from the IANA registry; supplying both is fine as long as they agree.","required":false,"schema":{"type":"string","enum":["item","list","dictionary"]},"example":"dictionary","x-randomapi-param-group":"route"},{"name":"field","in":"query","description":"Registered HTTP field name (case-insensitive). Its IANA Structured Type selects the top-level type, which is echoed back in the response.","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"example":"Priority","x-randomapi-param-group":"route"},{"name":"strict","in":"query","description":"Also require the input to be in canonical form. Set false for plain RFC 9651 parsing, which accepts leading zeros, extra whitespace and unpadded base64. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":true},"example":false,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["input","type"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"input,type"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["inputIsCanonical"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"inputIsCanonical"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/StructuredFieldsParseEnvelope"},{"$ref":"#/components/schemas/StructuredFieldsParseRecord"}]},"example":{"data":{"input":"u=1, i","type":"dictionary","field":"Priority","registryType":"Dictionary","parsed":{"type":"dictionary","value":{"u":{"type":"integer","value":1,"params":{}},"i":{"type":"boolean","value":true,"params":{}}}},"canonical":"u=1, i","inputIsCanonical":true},"meta":{"endpoint":"structured-fields","route":"/parse","params":{"strict":true},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"The requested field name is absent from the IANA HTTP field registry, so its structured type cannot be inferred.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?field=X-Made-Up-Header&value=1&type=item"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for HTTP Structured Fields Parser API (RFC 9651)","url":"https://randomapi.dev/apis/structured-fields"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/structured-fields/serialize":{"get":{"operationId":"get_structured_fields_serialize","tags":["developer"],"summary":"Serialize typed JSON back into canonical field text","description":"Applies RFC 9651 Section 4.1, including half-to-even decimal rounding, Boolean-true omission and canonical base64 padding. Authoritative source: RFC 9651 — Structured Field Values for HTTP.","parameters":[{"name":"json","in":"query","description":"The structure to serialize in this API's JSON mapping, at most 4096 characters. The 'parsed' object returned by /parse can be pasted here unchanged. Percent-encode '+' as %2B: a bare '+' in a query string decodes to a space, which corrupts base64 byte-sequence values.","required":true,"schema":{"type":"string","minLength":2,"maxLength":4096},"example":"{\"type\":\"integer\",\"value\":5,\"params\":{\"foo\":{\"type\":\"token\",\"value\":\"bar\"}}}","x-randomapi-param-group":"route"},{"name":"type","in":"query","description":"Top-level structured type the JSON describes. An item's own 'type' is its bare type (integer, token, …), so this states which of the three containers is being serialized.","required":true,"schema":{"type":"string","enum":["item","list","dictionary"]},"example":"item","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["type","structure"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"type,structure"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["omitField"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"omitField"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/StructuredFieldsSerializeEnvelope"},{"$ref":"#/components/schemas/StructuredFieldsSerializeRecord"}]},"example":{"data":{"type":"item","structure":{"type":"integer","value":5,"params":{"foo":{"type":"token","value":"bar"}}},"serialized":"5;foo=bar","omitField":false},"meta":{"endpoint":"structured-fields","route":"/serialize","params":{"json":"{\"type\":\"integer\",\"value\":5,\"params\":{\"foo\":{\"type\":\"token\",\"value\":\"bar\"}}}","type":"item"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for HTTP Structured Fields Parser API (RFC 9651)","url":"https://randomapi.dev/apis/structured-fields"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/subscriptions":{"get":{"operationId":"get_subscriptions_root","tags":["commerce"],"summary":"Generate coherent fake SaaS subscriptions","description":"Fake SaaS subscriptions with exact currency precision, calendar billing periods and explicit trial, renewal, pause and cancellation state masks.","parameters":[{"name":"status","in":"query","description":"Pin the lifecycle status. Omit for a weighted mix.","required":false,"schema":{"type":"string","enum":["trialing","active","pastDue","cancelled","paused"]},"example":"active","x-randomapi-param-group":"route"},{"name":"interval","in":"query","description":"Billing cadence. The period uses calendar months or calendar years.","required":false,"schema":{"type":"string","enum":["monthly","yearly"],"default":"monthly"},"example":"yearly","x-randomapi-param-group":"route"},{"name":"currency","in":"query","description":"Active ISO 4217 currency code. Case-insensitive; amount uses the currency's 0, 2 or 3 minor-unit digits.","required":false,"schema":{"type":"string","default":"USD"},"example":"KWD","x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Earliest createdAt timestamp. Defaults to 730 days before resolved to. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2024-01-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Latest createdAt timestamp and lifecycle as-of time (through 9998-12-31). Defaults to today's UTC boundary. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2025-12-31","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","customer"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,customer"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["createdAt"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"createdAt"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/SubscriptionsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/SubscriptionsRootRecord"}}]},"example":{"data":[{"id":"sub_82fe1c4a32d90001","customer":{"id":"cus_123","name":"Avery Chen","email":"avery.chen@example.com"},"plan":{"id":"pro","name":"Pro","tier":"pro","features":["10 workspaces","Usage reports"]},"status":"active","interval":"monthly","currency":"USD","amount":29,"currentPeriodStart":"2025-06-01T00:00:00.000Z","currentPeriodEnd":"2025-07-01T00:00:00.000Z","trialEndsAt":null,"cancelledAt":null,"nextBillingAt":"2025-07-01T00:00:00.000Z","autoRenew":true,"createdAt":"2025-01-10T12:00:00.000Z"}],"meta":{"endpoint":"subscriptions","count":1,"seed":42,"params":{"interval":"monthly","currency":"USD"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"sub_82fe1c4a32d90001\",\"customer\":{\"id\":\"cus_123\",\"name\":\"Avery Chen\",\"email\":\"avery.chen@example.com\"},\"plan\":{\"id\":\"pro\",\"name\":\"Pro\",\"tier\":\"pro\",\"features\":[\"10 workspaces\",\"Usage reports\"]},\"status\":\"active\",\"interval\":\"monthly\",\"currency\":\"USD\",\"amount\":29,\"currentPeriodStart\":\"2025-06-01T00:00:00.000Z\",\"currentPeriodEnd\":\"2025-07-01T00:00:00.000Z\",\"trialEndsAt\":null,\"cancelledAt\":null,\"nextBillingAt\":\"2025-07-01T00:00:00.000Z\",\"autoRenew\":true,\"createdAt\":\"2025-01-10T12:00:00.000Z\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Subscriptions","url":"https://randomapi.dev/apis/subscriptions"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/sun/times":{"get":{"operationId":"get_sun_times","tags":["datetime"],"summary":"Sunrise, sunset, solar noon, day length and the three twilights","description":"`date` is a **local civil date** in `tz`; omit it for today in that zone. All events are anchored to the solar noon of that local date, so sunrise always precedes solar noon and solar noon always precedes sunset. Authoritative source: NOAA GML Solar Calculator equations, after Jean Meeus, Astronomical Algorithms (2nd ed.).","parameters":[{"name":"lat","in":"query","description":"Observer latitude in WGS 84 decimal degrees, positive north (−90 to 90).","required":true,"schema":{"type":"number","minimum":-90,"maximum":90},"example":55.6761,"x-randomapi-param-group":"route"},{"name":"lng","in":"query","description":"Observer longitude in WGS 84 decimal degrees, positive east (−180 to 180).","required":true,"schema":{"type":"number","minimum":-180,"maximum":180},"example":12.5683,"x-randomapi-param-group":"route"},{"name":"date","in":"query","description":"Local civil date (YYYY-MM-DD) in the resolved zone, years 1900–2100. Defaults to today in that zone. An RFC 3339 timestamp is accepted too and is reduced to the local civil date that instant falls on in `tz` — except at exactly 00:00 UTC, which is indistinguishable from the bare date and is read as that calendar date. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-06-21","x-randomapi-param-group":"route"},{"name":"tz","in":"query","description":"IANA zone used to resolve the local civil date and to render every `local` wall clock, case-insensitive. Unknown ids return a 400 — browse them at /api/timezones.","required":false,"schema":{"type":"string","default":"UTC"},"example":"Europe/Copenhagen","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["date","timezone"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"date,timezone"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["astronomicalDusk"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"astronomicalDusk"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/SunTimesEnvelope"},{"$ref":"#/components/schemas/SunTimesRecord"}]},"example":{"data":{"date":"2026-06-21","timezone":"Europe/Copenhagen","latitude":55.6761,"longitude":12.5683,"solarNoon":{"instant":"2026-06-21T11:11:33.000Z","local":"2026-06-21T13:11:33","reason":null},"sunrise":{"instant":"2026-06-21T02:25:20.000Z","local":"2026-06-21T04:25:20","reason":null},"sunset":{"instant":"2026-06-21T19:57:45.000Z","local":"2026-06-21T21:57:45","reason":null},"dayLengthSeconds":63145,"civilDawn":{"instant":"2026-06-21T01:24:09.000Z","local":"2026-06-21T03:24:09","reason":null},"civilDusk":{"instant":"2026-06-21T20:58:55.000Z","local":"2026-06-21T22:58:55","reason":null},"nauticalDawn":{"instant":null,"local":null,"reason":"polar-day"},"nauticalDusk":{"instant":null,"local":null,"reason":"polar-day"},"astronomicalDawn":{"instant":null,"local":null,"reason":"polar-day"},"astronomicalDusk":{"instant":null,"local":null,"reason":"polar-day"}},"meta":{"endpoint":"sun","route":"/times","params":{"lat":55.6761,"lng":12.5683,"tz":"UTC"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Sunrise, Sunset & Solar Position API","url":"https://randomapi.dev/apis/sun"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/sun/position":{"get":{"operationId":"get_sun_position","tags":["datetime"],"summary":"Solar elevation, azimuth, declination and equation of time at an instant","description":"`at` is an absolute instant (date-only means UTC midnight); omit it for now. Elevation is geometric — no refraction correction is applied to it. Authoritative source: NOAA GML Solar Calculator equations, after Jean Meeus, Astronomical Algorithms (2nd ed.).","parameters":[{"name":"lat","in":"query","description":"Observer latitude in WGS 84 decimal degrees, positive north (−90 to 90).","required":true,"schema":{"type":"number","minimum":-90,"maximum":90},"example":55.6761,"x-randomapi-param-group":"route"},{"name":"lng","in":"query","description":"Observer longitude in WGS 84 decimal degrees, positive east (−180 to 180).","required":true,"schema":{"type":"number","minimum":-180,"maximum":180},"example":12.5683,"x-randomapi-param-group":"route"},{"name":"at","in":"query","description":"Absolute instant: YYYY-MM-DD (UTC midnight) or RFC 3339 with Z or an explicit offset, years 1900–2100. Defaults to now. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-06-21T12:00:00Z","x-randomapi-param-group":"route"},{"name":"tz","in":"query","description":"IANA zone used only to render `localTime`, case-insensitive. It does not move the instant; unknown ids return a 400.","required":false,"schema":{"type":"string","default":"UTC"},"example":"Europe/Copenhagen","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["at","timezone"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"at,timezone"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["isDaylight"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"isDaylight"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/SunPositionEnvelope"},{"$ref":"#/components/schemas/SunPositionRecord"}]},"example":{"data":{"at":"2026-06-21T12:00:00.000Z","timezone":"Europe/Copenhagen","localTime":"2026-06-21T14:00:00","elevationDegrees":56.5453,"azimuthDegrees":200.4393,"declinationDegrees":23.4381,"equationOfTimeMinutes":-1.8243,"hourAngleDegrees":12.1122,"isDaylight":true},"meta":{"endpoint":"sun","route":"/position","params":{"lat":55.6761,"lng":12.5683,"tz":"UTC"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Sunrise, Sunset & Solar Position API","url":"https://randomapi.dev/apis/sun"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/sun/seasons":{"get":{"operationId":"get_sun_seasons","tags":["datetime"],"summary":"Equinox and solstice instants for a year","description":"Meeus chapter 27 (mean expressions plus the 24 periodic corrections of table 27.C). The Terrestrial-Time result is converted to UTC with the Espenak & Meeus ΔT polynomials, and the ΔT applied is returned per event. Authoritative source: NOAA GML Solar Calculator equations, after Jean Meeus, Astronomical Algorithms (2nd ed.).","parameters":[{"name":"year","in":"query","description":"Calendar year (1900–2100). Defaults to the current year in the resolved zone.","required":false,"schema":{"type":"integer","minimum":1900,"maximum":2100},"example":2026,"x-randomapi-param-group":"route"},{"name":"tz","in":"query","description":"IANA zone used to render each `local` wall clock and to resolve the default year, case-insensitive. Unknown ids return a 400.","required":false,"schema":{"type":"string","default":"UTC"},"example":"Europe/Copenhagen","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["year","timezone"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"year,timezone"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["decemberSolstice"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"decemberSolstice"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/SunSeasonsEnvelope"},{"$ref":"#/components/schemas/SunSeasonsRecord"}]},"example":{"data":{"year":2026,"timezone":"UTC","marchEquinox":{"instant":"2026-03-20T14:45:30.000Z","local":"2026-03-20T14:45:30","deltaTSeconds":75.2},"juneSolstice":{"instant":"2026-06-21T08:24:49.000Z","local":"2026-06-21T08:24:49","deltaTSeconds":75.4},"septemberEquinox":{"instant":"2026-09-23T00:05:24.000Z","local":"2026-09-23T00:05:24","deltaTSeconds":75.5},"decemberSolstice":{"instant":"2026-12-21T20:50:07.000Z","local":"2026-12-21T20:50:07","deltaTSeconds":75.7}},"meta":{"endpoint":"sun","route":"/seasons","params":{"tz":"UTC"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Sunrise, Sunset & Solar Position API","url":"https://randomapi.dev/apis/sun"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/support-tickets":{"get":{"operationId":"get_support_tickets_root","tags":["text"],"summary":"Generate bounded fictional support-ticket lifecycles","description":"Generate coherent support tickets with SLA outcomes, valid message participants, assignment filters and exact status/date masks.","parameters":[{"name":"status","in":"query","description":"Pin new, open, pending, resolved or closed lifecycle state.","required":false,"schema":{"type":"string","enum":["new","open","pending","resolved","closed"]},"example":"pending","x-randomapi-param-group":"route"},{"name":"priority","in":"query","description":"Pin priority and its first-response SLA target.","required":false,"schema":{"type":"string","enum":["low","normal","high","urgent"]},"example":"urgent","x-randomapi-param-group":"route"},{"name":"channel","in":"query","description":"Pin email, chat or web origin.","required":false,"schema":{"type":"string","enum":["email","chat","web"]},"example":"chat","x-randomapi-param-group":"route"},{"name":"assigned","in":"query","description":"Require or forbid an assignee. False is valid only for new tickets. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean"},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"breached","in":"query","description":"Require the first-response SLA to be breached or met. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean"},"example":false,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"minMessages","in":"query","description":"Minimum messages, inclusive.","required":false,"schema":{"type":"integer","minimum":1,"maximum":8,"default":2},"example":3,"x-randomapi-param-group":"route"},{"name":"maxMessages","in":"query","description":"Maximum messages, inclusive; non-new states require at least 2.","required":false,"schema":{"type":"integer","minimum":1,"maximum":8,"default":6},"example":7,"x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Earliest creation time. With only from, to resolves 30 elapsed days later; with neither, defaults 30 UTC days before today. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-05-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Latest creation time. With only to, from resolves 30 elapsed days earlier; with neither, defaults to today's UTC end. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-05-31T23:59:59.999Z","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","subject"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,subject"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["tags"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"tags"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/SupportTicketsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/SupportTicketsRootRecord"}}]},"example":{"data":[{"id":"tkt_4128abff3900_00","subject":"Example checkout issue","status":"pending","priority":"urgent","channel":"chat","requester":{"id":"usr_demo","name":"Avery Chen","email":"fixture@example.net"},"assignee":{"id":"agt_demo","name":"Example Support Agent"},"createdAt":"2026-05-10T08:00:00.000Z","updatedAt":"2026-05-10T09:00:00.000Z","firstResponseAt":"2026-05-10T08:20:00.000Z","resolvedAt":null,"closedAt":null,"sla":{"type":"firstResponse","targetMinutes":60,"dueAt":"2026-05-10T09:00:00.000Z","breached":false},"messages":[{"id":"msg_demo","senderId":"usr_demo","role":"requester","text":"Could you check this synthetic request?","createdAt":"2026-05-10T08:00:00.000Z"}],"tags":["example","account"]}],"meta":{"endpoint":"support-tickets","count":1,"seed":42,"params":{"minMessages":2,"maxMessages":6},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"tkt_4128abff3900_00\",\"subject\":\"Example checkout issue\",\"status\":\"pending\",\"priority\":\"urgent\",\"channel\":\"chat\",\"requester\":{\"id\":\"usr_demo\",\"name\":\"Avery Chen\",\"email\":\"fixture@example.net\"},\"assignee\":{\"id\":\"agt_demo\",\"name\":\"Example Support Agent\"},\"createdAt\":\"2026-05-10T08:00:00.000Z\",\"updatedAt\":\"2026-05-10T09:00:00.000Z\",\"firstResponseAt\":\"2026-05-10T08:20:00.000Z\",\"resolvedAt\":null,\"closedAt\":null,\"sla\":{\"type\":\"firstResponse\",\"targetMinutes\":60,\"dueAt\":\"2026-05-10T09:00:00.000Z\",\"breached\":false},\"messages\":[{\"id\":\"msg_demo\",\"senderId\":\"usr_demo\",\"role\":\"requester\",\"text\":\"Could you check this synthetic request?\",\"createdAt\":\"2026-05-10T08:00:00.000Z\"}],\"tags\":[\"example\",\"account\"]}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Support ticket fixtures","url":"https://randomapi.dev/apis/support-tickets"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/tasks":{"get":{"operationId":"get_tasks_root","tags":["text"],"summary":"Generate coherent fake productivity tasks","description":"Developer-productivity task fixtures with working status, priority, assignment, due-date and tag filters plus coherent subtasks and blockers.","parameters":[{"name":"status","in":"query","description":"Pin the task state. Omit for a weighted mix.","required":false,"schema":{"type":"string","enum":["todo","inProgress","blocked","completed"]},"example":"blocked","x-randomapi-param-group":"route"},{"name":"priority","in":"query","description":"Pin the priority. Omit for a weighted mix.","required":false,"schema":{"type":"string","enum":["low","medium","high","urgent"]},"example":"high","x-randomapi-param-group":"route"},{"name":"assigned","in":"query","description":"true guarantees an assignee object; false guarantees null. Omit for a mix. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean"},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Earliest dueDate by UTC calendar day. Defaults to 90 days before today's UTC boundary. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Latest dueDate by UTC calendar day and exact completion as-of cutoff. Defaults to 90 days after today's UTC boundary. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-06-30","x-randomapi-param-group":"route"},{"name":"tag","in":"query","description":"Safe tag forced into every record: 1–24 letters, numbers, hyphens or underscores, starting alphanumeric.","required":false,"schema":{"type":"string","maxLength":24},"example":"frontend","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","title"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,title"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["subtasks"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"subtasks"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/TasksRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/TasksRootRecord"}}]},"example":{"data":[{"id":"tsk_91a8fe320000","title":"Add contract-test coverage","description":"Cover the remaining validation branches before release.","status":"inProgress","priority":"high","assignee":{"id":"usr_a1","name":"Avery Chen","avatarUrl":"https://randomapi.dev/api/avatars/image?seed=usr_a1"},"blocker":null,"dueDate":"2026-04-15","completedAt":null,"createdAt":"2026-02-10T09:30:00.000Z","tags":["frontend","testing"],"subtasks":[{"id":"sub_a1","title":"Add range tests","completed":true}]}],"meta":{"endpoint":"tasks","count":1,"seed":42,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"tsk_91a8fe320000\",\"title\":\"Add contract-test coverage\",\"description\":\"Cover the remaining validation branches before release.\",\"status\":\"inProgress\",\"priority\":\"high\",\"assignee\":{\"id\":\"usr_a1\",\"name\":\"Avery Chen\",\"avatarUrl\":\"https://randomapi.dev/api/avatars/image?seed=usr_a1\"},\"blocker\":null,\"dueDate\":\"2026-04-15\",\"completedAt\":null,\"createdAt\":\"2026-02-10T09:30:00.000Z\",\"tags\":[\"frontend\",\"testing\"],\"subtasks\":[{\"id\":\"sub_a1\",\"title\":\"Add range tests\",\"completed\":true}]}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Tasks","url":"https://randomapi.dev/apis/tasks"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/text-encoding/diagnose":{"get":{"operationId":"get_text_encoding_diagnose","tags":["developer"],"summary":"Diagnose mojibake and recover the original text","description":"Encodes the input back through all 28 supported legacy encoders and reads the bytes as strict UTF-8. Returns the byte evidence, a labelled-confidence hypothesis, every rival reading and the recovered text — or an honest `none` when nothing decodes cleanly. Authoritative sources: WHATWG Encoding Standard index tables; ISO/IEC 8859-1 high-half identity mapping, derived here because the Encoding Standard publishes no index for it.","parameters":[{"name":"text","in":"query","description":"The suspect text, exactly as it appears (whitespace is preserved). Maximum 2000 UTF-16 code units.","required":true,"schema":{"type":"string","minLength":1},"example":"cafÃ©","x-randomapi-param-group":"route"},{"name":"layers","in":"query","description":"How many stacked broken decodes to unwind. 1 diagnoses single mojibake only; 2 also catches double-encoded text such as cafÃƒÂ©. When this ceiling stops the unwind early the answer is marked `complete: false` and warns, never silently returned as finished.","required":false,"schema":{"type":"integer","minimum":1,"maximum":3,"default":2},"example":3,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["input","hypothesis"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"input,hypothesis"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["complete"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"complete"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/TextEncodingDiagnoseEnvelope"},{"$ref":"#/components/schemas/TextEncodingDiagnoseRecord"}]},"example":{"data":{"input":"cafÃ©","hypothesis":"utf8-as-windows1252","encoding":"windows-1252","confidence":"medium","confidenceRationale":"Encoding the input as windows-1252 gives 5 byte(s) holding a single 2-byte UTF-8 sequence. It decodes cleanly, but a string can legitimately contain those two characters, so this stays a hypothesis. iso-8859-1, iso-8859-15, windows-1254 and 1 more produce the identical recovery; macintosh also decodes, but to a different string.","evidence":[{"codePoint":"U+00C3","byte":"0xC3","position":3,"note":"Byte 1 of a 2-byte UTF-8 sequence decoding to U+00E9 'é'."},{"codePoint":"U+00A9","byte":"0xA9","position":4,"note":"Byte 2 of 2 in the UTF-8 sequence for U+00E9 'é'."}],"recovered":"café","recoveredLayers":1,"alternatives":[{"recovered":"caf̩","layers":1,"encodings":["macintosh"]},{"recovered":"café","layers":1,"encodings":["iso-8859-1","iso-8859-15","windows-1254","iso-8859-14"]}],"complete":true},"meta":{"endpoint":"text-encoding","route":"/diagnose","params":{"text":"cafÃ©","layers":2},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Mojibake Diagnosis & Legacy Encoding API","url":"https://randomapi.dev/apis/text-encoding"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/text-encoding/transcode":{"get":{"operationId":"get_text_encoding_transcode","tags":["developer"],"summary":"Round-trip text through a legacy encoding and see the bytes","description":"Encodes the text with `from`, then decodes those exact bytes with `to`. Mismatch the pair and you get reproducible mojibake for your fixtures; match it and you get a plain byte dump. Authoritative sources: WHATWG Encoding Standard index tables; ISO/IEC 8859-1 high-half identity mapping, derived here because the Encoding Standard publishes no index for it.","parameters":[{"name":"text","in":"query","description":"The text to round-trip, exactly as given (whitespace is preserved). Maximum 2000 UTF-16 code units.","required":true,"schema":{"type":"string","minLength":1},"example":"café","x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Encoding used to turn the text into bytes. Characters it cannot represent are reported in `unmappable`, never replaced.","required":false,"schema":{"type":"string","enum":["utf-8","windows-1252","iso-8859-1","iso-8859-15","windows-1251","windows-1250","windows-1256","windows-1254","windows-1253","windows-1255","windows-1257","windows-1258","windows-874","koi8-r","koi8-u","ibm866","iso-8859-2","iso-8859-5","iso-8859-7","iso-8859-6","iso-8859-8","iso-8859-4","iso-8859-13","iso-8859-3","iso-8859-10","iso-8859-14","iso-8859-16","macintosh","x-mac-cyrillic"],"default":"utf-8"},"example":"windows-1252","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Encoding used to read those bytes back. 20 of the 28 single-byte targets decode all 256 byte values; the other 8 leave some bytes unassigned, which decode to U+FFFD with a warning. `utf-8` uses the Encoding Standard's U+FFFD replacement mode.","required":true,"schema":{"type":"string","enum":["utf-8","windows-1252","iso-8859-1","iso-8859-15","windows-1251","windows-1250","windows-1256","windows-1254","windows-1253","windows-1255","windows-1257","windows-1258","windows-874","koi8-r","koi8-u","ibm866","iso-8859-2","iso-8859-5","iso-8859-7","iso-8859-6","iso-8859-8","iso-8859-4","iso-8859-13","iso-8859-3","iso-8859-10","iso-8859-14","iso-8859-16","macintosh","x-mac-cyrillic"]},"example":"windows-1252","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["input","from"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"input,from"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["unmappable"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"unmappable"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/TextEncodingTranscodeEnvelope"},{"$ref":"#/components/schemas/TextEncodingTranscodeRecord"}]},"example":{"data":{"input":"café","from":"utf-8","to":"windows-1252","bytes":"63 61 66 C3 A9","byteLength":5,"output":"cafÃ©","unmappable":[{"codePoint":"U+20AC","position":0}]},"meta":{"endpoint":"text-encoding","route":"/transcode","params":{"text":"café","from":"utf-8","to":"windows-1252"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Mojibake Diagnosis & Legacy Encoding API","url":"https://randomapi.dev/apis/text-encoding"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/time":{"get":{"operationId":"get_time_root","tags":["datetime"],"summary":"The current time, in UTC or any IANA timezone","description":"Live: every call reads the server clock (`iso`/`unix` are the same instant for every `tz`). All local fields are derived from the zone's rules at that exact instant. Authoritative source: IANA Time Zone Database (evaluated live per request).","parameters":[{"name":"tz","in":"query","description":"IANA timezone id (e.g. Europe/Copenhagen, America/New_York), matched case-insensitively. Unknown ids return a 400 — browse valid ids at /api/timezones.","required":false,"schema":{"type":"string","default":"UTC"},"example":"Europe/Copenhagen","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["iso","unix"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"iso,unix"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["dst"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"dst"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/TimeRootEnvelope"},{"$ref":"#/components/schemas/TimeRootRecord"}]},"example":{"data":{"iso":"2026-06-11T14:30:45.123Z","unix":1781188245,"timezone":"Europe/Copenhagen","localDate":"2026-06-11","localTime":"16:30:45","weekday":"Thursday","utcOffset":"+02:00","offsetMinutes":120,"isoWeek":24,"isoWeekYear":2026,"dayOfYear":162,"dst":true},"meta":{"endpoint":"time","params":{"tz":"UTC"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Current time","url":"https://randomapi.dev/apis/time"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/time-series":{"get":{"operationId":"get_time_series_root","tags":["developer"],"summary":"Generate complete bounded metric series","description":"Generate compact mock metric series and standalone points with exact intervals, bounded values, coherent trends and deterministic timestamps.","parameters":[{"name":"metric","in":"query","description":"Constrain every series to this metric. Omit for a mix.","required":false,"schema":{"type":"string","enum":["cpuUsage","requestRate","latency","memoryUsage","temperature"]},"example":"latency","x-randomapi-param-group":"route"},{"name":"trend","in":"query","description":"Constrain the value shape. Omit for mixed trend fixtures.","required":false,"schema":{"type":"string","enum":["stable","rising","falling","spike"]},"example":"rising","x-randomapi-param-group":"route"},{"name":"interval","in":"query","description":"Exact spacing between adjacent points.","required":false,"schema":{"type":"string","enum":["1m","5m","1h"],"default":"5m"},"example":"1m","x-randomapi-param-group":"route"},{"name":"points","in":"query","description":"Exact number of points nested in every generated series.","required":false,"schema":{"type":"integer","minimum":2,"maximum":24,"default":12},"example":24,"x-randomapi-param-group":"route"},{"name":"start","in":"query","description":"First point timestamp. Defaults to the current UTC day's start and is echoed in meta.params. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-10T00:00:00.000Z","x-randomapi-param-group":"route"},{"name":"environment","in":"query","description":"Environment tag attached to the generated series.","required":false,"schema":{"type":"string","enum":["development","staging","production"],"default":"development"},"example":"staging","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["seriesId","metric"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"seriesId,metric"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["points"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"points"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/TimeSeriesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/TimeSeriesRootRecord"}}]},"example":{"data":[{"seriesId":"ser_0_a81c42f0","metric":"latency","unit":"ms","trend":"rising","interval":"5m","startTime":"2026-07-10T00:00:00.000Z","endTime":"2026-07-10T00:55:00.000Z","min":121.4,"max":178.2,"average":149.8,"tags":{"environment":"staging","host":"node-3"},"points":[{"timestamp":"2026-07-10T00:00:00.000Z","value":121.4}]}],"meta":{"endpoint":"time-series","count":1,"seed":42,"params":{"interval":"5m","points":12,"environment":"development"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"seriesId\":\"ser_0_a81c42f0\",\"metric\":\"latency\",\"unit\":\"ms\",\"trend\":\"rising\",\"interval\":\"5m\",\"startTime\":\"2026-07-10T00:00:00.000Z\",\"endTime\":\"2026-07-10T00:55:00.000Z\",\"min\":121.4,\"max\":178.2,\"average\":149.8,\"tags\":{\"environment\":\"staging\",\"host\":\"node-3\"},\"points\":[{\"timestamp\":\"2026-07-10T00:00:00.000Z\",\"value\":121.4}]}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Time-series fixtures","url":"https://randomapi.dev/apis/time-series"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/time-series/points":{"get":{"operationId":"get_time_series_points","tags":["developer"],"summary":"Generate flat sequential metric points for ingestion tests","description":"Generate compact mock metric series and standalone points with exact intervals, bounded values, coherent trends and deterministic timestamps.","parameters":[{"name":"series","in":"query","description":"Safe series key echoed in every record; letters, digits, dot, underscore and hyphen only.","required":false,"schema":{"type":"string","minLength":1,"maxLength":48,"default":"demo-series"},"example":"checkout-latency","x-randomapi-param-group":"route"},{"name":"metric","in":"query","description":"Metric controlling value bounds and unit.","required":false,"schema":{"type":"string","enum":["cpuUsage","requestRate","latency","memoryUsage","temperature"],"default":"latency"},"example":"cpuUsage","x-randomapi-param-group":"route"},{"name":"interval","in":"query","description":"Timestamp step between consecutive records.","required":false,"schema":{"type":"string","enum":["1m","5m","1h"],"default":"5m"},"example":"1h","x-randomapi-param-group":"route"},{"name":"start","in":"query","description":"Timestamp of record index 0. Defaults to current UTC-day start. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-10T00:00:00.000Z","x-randomapi-param-group":"route"},{"name":"quality","in":"query","description":"Constrain data quality. Missing forces value=null.","required":false,"schema":{"type":"string","enum":["good","estimated","missing"]},"example":"estimated","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["pointId","seriesId"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"pointId,seriesId"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["tags"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"tags"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/TimeSeriesPointsEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/TimeSeriesPointsRecord"}}]},"example":{"data":[{"pointId":"pt_0_31f0a82d","seriesId":"checkout-latency","metric":"latency","unit":"ms","timestamp":"2026-07-10T00:05:00.000Z","value":82.4,"quality":"good","tags":{"host":"node-2","source":"mock"}}],"meta":{"endpoint":"time-series","route":"/points","count":1,"seed":42,"params":{"series":"demo-series","metric":"latency","interval":"5m"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"pointId\":\"pt_0_31f0a82d\",\"seriesId\":\"checkout-latency\",\"metric\":\"latency\",\"unit\":\"ms\",\"timestamp\":\"2026-07-10T00:05:00.000Z\",\"value\":82.4,\"quality\":\"good\",\"tags\":{\"host\":\"node-2\",\"source\":\"mock\"}}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Time-series fixtures","url":"https://randomapi.dev/apis/time-series"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/timezones":{"get":{"operationId":"get_timezones_root","tags":["geo"],"summary":"List all IANA timezones (filter by country or current offset)","description":"Returns every zone the runtime's IANA database knows (plus UTC). Both filters are live: `offsetMinutes` matches the **current** DST-aware offset. Authoritative source: IANA Time Zone Database (evaluated through runtime Intl).","parameters":[{"name":"country","in":"query","description":"Only zones used by this country — ISO 3166-1 alpha-2, case-insensitive (dk = DK). Mapping follows IANA zone.tab; a code with no mapped zones returns an empty list plus a warning.","required":false,"schema":{"type":"string"},"example":"US","x-randomapi-param-group":"route"},{"name":"offsetMinutes","in":"query","description":"Only zones whose current UTC offset is exactly this many minutes (120 ⇒ +02:00, 345 ⇒ +05:45, -210 ⇒ -03:30). DST-aware: the matching set changes with the seasons.","required":false,"schema":{"type":"integer","minimum":-720,"maximum":840},"example":120,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","offset"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,offset"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["isDst"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"isDst"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/TimezonesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/TimezonesRootRecord"}}]},"example":{"data":[{"id":"Europe/Copenhagen","offset":"+02:00","offsetMinutes":120,"countryCodes":["DK"],"localTime":"14:30:07","isDst":true}],"meta":{"endpoint":"timezones","count":1,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"Europe/Copenhagen\",\"offset\":\"+02:00\",\"offsetMinutes\":120,\"countryCodes\":[\"DK\"],\"localTime\":\"14:30:07\",\"isDst\":true}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Timezones","url":"https://randomapi.dev/apis/timezones"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/timezones/lookup":{"get":{"operationId":"get_timezones_lookup","tags":["geo"],"summary":"Look up one timezone by IANA id","description":"Case-insensitive id match against the runtime's IANA database. Unknown ids are an explicit 404 — browse valid ids at `/api/timezones`. Authoritative source: IANA Time Zone Database (evaluated through runtime Intl).","parameters":[{"name":"id","in":"query","description":"IANA timezone id, case-insensitive — e.g. Europe/Copenhagen, america/new_york or UTC. The list route enumerates every accepted id.","required":true,"schema":{"type":"string"},"example":"Europe/Copenhagen","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","offset"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,offset"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["isDst"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"isDst"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/TimezonesLookupEnvelope"},{"$ref":"#/components/schemas/TimezonesLookupRecord"}]},"example":{"data":{"id":"Europe/Copenhagen","offset":"+02:00","offsetMinutes":120,"countryCodes":["DK"],"localDate":"2026-06-11","localTime":"14:30:07","weekday":"Thursday","isDst":true},"meta":{"endpoint":"timezones","route":"/lookup","params":{"id":"Europe/Copenhagen"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"The serving runtime does not recognize the requested IANA timezone id.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?id=Mars%2FOlympus"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Timezones","url":"https://randomapi.dev/apis/timezones"},"x-randomapi-kind":"real","x-randomapi-mode":"lookup"}},"/api/timezones/convert":{"get":{"operationId":"get_timezones_convert","tags":["geo"],"summary":"Render one absolute instant in an IANA timezone","description":"Accepts only the shared absolute date profile: date-only UTC midnight or RFC3339 with Z/explicit offset. It never parses a naive local wall time. Authoritative source: IANA Time Zone Database (evaluated through runtime Intl).","parameters":[{"name":"at","in":"query","description":"Absolute instant: YYYY-MM-DD (UTC midnight) or RFC3339 with Z/explicit offset, seconds and at most millisecond precision. Naive local timestamps are invalid. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":true,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-15T12:00:00.125Z","x-randomapi-param-group":"route"},{"name":"zone","in":"query","description":"IANA timezone id, case-insensitive. Canonical casing follows the runtime inventory returned by /api/timezones; UTC is always accepted.","required":true,"schema":{"type":"string"},"example":"America/New_York","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["instant","epochMilliseconds"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"instant,epochMilliseconds"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["isDst"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"isDst"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/TimezonesConvertEnvelope"},{"$ref":"#/components/schemas/TimezonesConvertRecord"}]},"example":{"data":{"instant":"2026-01-15T12:00:00.125Z","epochMilliseconds":1768478400125,"zone":"America/New_York","localDate":"2026-01-15","localTime":"07:00:00.125","weekday":"Thursday","offset":"-05:00","offsetMinutes":-300,"isDst":false},"meta":{"endpoint":"timezones","route":"/convert","params":{"at":"2026-01-15T12:00:00.125Z","zone":"America/New_York"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Timezones","url":"https://randomapi.dev/apis/timezones"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/timezones/transitions":{"get":{"operationId":"get_timezones_transitions","tags":["geo"],"summary":"List every IANA offset transition in a bounded absolute range","description":"Scans an explicit UTC range of at most 370 elapsed days and binary-resolves each detected offset change to the first changed millisecond exposed by Intl. Authoritative source: IANA Time Zone Database (evaluated through runtime Intl).","parameters":[{"name":"zone","in":"query","description":"IANA timezone id, case-insensitive; canonical casing is echoed in meta.params.","required":true,"schema":{"type":"string"},"example":"Europe/Copenhagen","x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Inclusive absolute range start in years 1900–2100: date-only UTC midnight or RFC3339 with Z/offset. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":true,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Exclusive absolute range end, strictly after from and no more than 370 elapsed days later. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":true,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2027-01-01","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["zone","from"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"zone,from"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["transitions"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"transitions"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/TimezonesTransitionsEnvelope"},{"$ref":"#/components/schemas/TimezonesTransitionsRecord"}]},"example":{"data":{"zone":"Europe/Copenhagen","from":"2026-01-01T00:00:00.000Z","to":"2027-01-01T00:00:00.000Z","count":2,"transitions":[{"instant":"2026-03-29T01:00:00.000Z","kind":"gap","offsetBefore":"+01:00","offsetAfter":"+02:00","offsetBeforeMinutes":60,"offsetAfterMinutes":120,"deltaSeconds":3600,"localBefore":"2026-03-29T01:59:59.999","localAfter":"2026-03-29T03:00:00.000"}]},"meta":{"endpoint":"timezones","route":"/transitions","params":{"zone":"Europe/Copenhagen","from":"2026-01-01","to":"2027-01-01"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Timezones","url":"https://randomapi.dev/apis/timezones"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/timezones/resolve-local":{"get":{"operationId":"get_timezones_resolve_local","tags":["geo"],"summary":"Resolve a naive local wall-clock value without guessing through DST","description":"Returns every real instant matching the supplied local time. Unique values have one candidate, folds two, and gaps zero plus the missing interval; only actual fold candidates may be selected. Authoritative source: IANA Time Zone Database (evaluated through runtime Intl).","parameters":[{"name":"zone","in":"query","description":"IANA timezone id, case-insensitive; canonical casing is echoed in meta.params.","required":true,"schema":{"type":"string"},"example":"Europe/Copenhagen","x-randomapi-param-group":"route"},{"name":"local","in":"query","description":"Naive local wall-clock timestamp YYYY-MM-DDTHH:mm:ss[.SSS], without Z/offset, in years 1900–2100.","required":true,"schema":{"type":"string","minLength":19,"maxLength":23},"example":"2026-10-25T02:30:00","x-randomapi-param-group":"route"},{"name":"disambiguation","in":"query","description":"reject leaves a repeated time unselected; earlier/later selects one of its actual candidates. A nonexistent gap is never shifted or invented under any option.","required":false,"schema":{"type":"string","enum":["reject","earlier","later"],"default":"reject"},"example":"earlier","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["zone","local"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"zone,local"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["gap"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"gap"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/TimezonesResolveLocalEnvelope"},{"$ref":"#/components/schemas/TimezonesResolveLocalRecord"}]},"example":{"data":{"zone":"Europe/Copenhagen","local":"2026-10-25T02:30:00.000","status":"ambiguous","candidates":[{"instant":"2026-10-25T00:30:00.000Z","offset":"+02:00","offsetMinutes":120},{"instant":"2026-10-25T01:30:00.000Z","offset":"+01:00","offsetMinutes":60}],"selectedInstant":"2026-10-25T00:30:00.000Z","selectedOffset":"+02:00","gap":{"transitionInstant":"2026-03-29T01:00:00.000Z","localStart":"2026-03-29T02:00:00.000","localEnd":"2026-03-29T03:00:00.000","durationSeconds":3600}},"meta":{"endpoint":"timezones","route":"/resolve-local","params":{"zone":"Europe/Copenhagen","local":"2026-10-25T02:30:00","disambiguation":"reject"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Timezones","url":"https://randomapi.dev/apis/timezones"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/tlds":{"get":{"operationId":"get_tlds_root","tags":["internet"],"summary":"Search and filter delegated TLD labels","description":"With no filters, returns the complete pinned delegated list. Search matches the ASCII/punycode label and ignores an optional leading dot; zero matches return an empty list plus a warning. Authoritative source: IANA delegated TLD list (version 2026062302).","parameters":[{"name":"search","in":"query","description":"Case-insensitive substring search against the ASCII/punycode label; an optional leading dot is ignored.","required":false,"schema":{"type":"string","maxLength":64},"example":"museum","x-randomapi-param-group":"route"},{"name":"isIdn","in":"query","description":"Keep only IDN A-labels (true) or non-IDN ASCII labels (false). Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean"},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["tld","ascii"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"tld,ascii"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["isIdn"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"isIdn"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/TldsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/TldsRootRecord"}}]},"example":{"data":[{"tld":".com","ascii":"com","isIdn":false}],"meta":{"endpoint":"tlds","count":1,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"tld\":\".com\",\"ascii\":\"com\",\"isIdn\":false}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Top-level domains","url":"https://randomapi.dev/apis/tlds"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/tlds/lookup":{"get":{"operationId":"get_tlds_lookup","tags":["internet"],"summary":"Look up one delegated TLD","description":"Accepts one ASCII or punycode label, case-insensitively, with or without a leading dot. Unicode display labels are deliberately not accepted or guessed. Authoritative source: IANA delegated TLD list (version 2026062302).","parameters":[{"name":"tld","in":"query","description":"Delegated ASCII/punycode TLD label, with or without a leading dot (for example .com, dk or xn--p1ai).","required":true,"schema":{"type":"string","minLength":1,"maxLength":64},"example":".com","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["tld","ascii"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"tld,ascii"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["isIdn"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"isIdn"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/TldsLookupEnvelope"},{"$ref":"#/components/schemas/TldsLookupRecord"}]},"example":{"data":{"tld":".com","ascii":"com","isIdn":false},"meta":{"endpoint":"tlds","route":"/lookup","params":{"tld":".com"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"The requested well-formed ASCII label is absent from the pinned delegated-TLD snapshot.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?tld=definitely-not-delegated"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Top-level domains","url":"https://randomapi.dev/apis/tlds"},"x-randomapi-kind":"real","x-randomapi-mode":"lookup"}},"/api/tokens":{"get":{"operationId":"get_tokens_root","tags":["developer"],"summary":"Generate clearly fake API keys, JWTs and raw secrets","description":"Clearly fake API keys, JWTs and hex/base64 secrets — structurally valid enough to exercise parsers and middleware, cryptographically meaningless by design.","parameters":[{"name":"type","in":"query","description":"Credential shape: apiKey (prefix + 32 base62 chars), jwt (decodable header.payload.signature), hex (raw lowercase hex secret) or base64 (raw padded base64 secret).","required":false,"schema":{"type":"string","enum":["apiKey","jwt","hex","base64"],"default":"apiKey"},"example":"jwt","x-randomapi-param-group":"route"},{"name":"prefix","in":"query","description":"Key prefix for type=apiKey (1–16 characters, e.g. pk_live_). Defaults to sk_test_. Only applies to apiKey — set on any other type it is ignored with a warning.","required":false,"schema":{"type":"string","minLength":1,"maxLength":16},"example":"pk_live_","x-randomapi-param-group":"route"},{"name":"bytes","in":"query","description":"Secret strength in random bytes for type=hex (output is bytes × 2 characters) and type=base64 (decodes back to exactly this many bytes). Defaults to 32. Ignored with a warning for other types.","required":false,"schema":{"type":"integer","minimum":8,"maximum":64},"example":16,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["value","type"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"value,type"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["claims"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"claims"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/TokensRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/TokensRootRecord"}}]},"example":{"data":[{"value":"sk_test_h2vTQEnAVoZkW8eFqYbJ3R7xLcM5pDgU","type":"apiKey","claims":{"sub":"user_4f9a2c1e8b3d","name":"Emily Carter","iat":1765800000,"exp":1765803600}}],"meta":{"endpoint":"tokens","count":1,"seed":42,"params":{"type":"apiKey"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"value\":\"sk_test_h2vTQEnAVoZkW8eFqYbJ3R7xLcM5pDgU\",\"type\":\"apiKey\",\"claims\":{\"sub\":\"user_4f9a2c1e8b3d\",\"name\":\"Emily Carter\",\"iat\":1765800000,\"exp\":1765803600}}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Tokens & keys (fake)","url":"https://randomapi.dev/apis/tokens"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/trace-context/validate":{"get":{"operationId":"get_trace_context_validate","tags":["developer"],"summary":"Validate traceparent and optional tracestate field values","description":"Validate and explain W3C traceparent and tracestate values, including versioning, zero-ID checks, sampled flags and vendor-entry grammar. Authoritative source: W3C Trace Context Recommendation.","parameters":[{"name":"traceparent","in":"query","description":"Raw traceparent field value, bounded to 512 characters. Lowercase hexadecimal is required.","required":true,"schema":{"type":"string","minLength":1,"maxLength":512},"example":"00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01","x-randomapi-param-group":"route"},{"name":"tracestate","in":"query","description":"Optional combined tracestate value; this endpoint caps input at 2048 characters and 32 list-members.","required":false,"schema":{"type":"string","maxLength":2048},"example":"rojo=00f067aa0ba902b7,congo=t61rcWkgMzE","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["valid","traceparentValid"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"valid,traceparentValid"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["warnings"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"warnings"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/TraceContextValidateEnvelope"},{"$ref":"#/components/schemas/TraceContextValidateRecord"}]},"example":{"data":{"valid":true,"traceparentValid":true,"tracestateValid":true,"version":"00","traceId":"4bf92f3577b34da6a3ce929d0e0e4736","parentId":"00f067aa0ba902b7","traceFlags":"01","sampled":true,"unknownFlags":"00","futureVersion":false,"tracestateEntries":[{"key":"rojo","value":"00f067aa0ba902b7","index":0}],"canonicalTraceparent":"00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01","canonicalTracestate":"rojo=00f067aa0ba902b7,congo=t61rcWkgMzE","errors":[],"warnings":[]},"meta":{"endpoint":"trace-context","route":"/validate","params":{"traceparent":"00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for W3C Trace Context validator","url":"https://randomapi.dev/apis/trace-context"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/traces":{"get":{"operationId":"get_traces_root","tags":["developer"],"summary":"Generate complete mock traces with coherent span trees","description":"Generate coherent mock distributed traces and individual spans with bounded timing, parentage, service filters and reproducible failures.","parameters":[{"name":"service","in":"query","description":"Constrain the trace's root service. Omit for a mix.","required":false,"schema":{"type":"string","enum":["gateway","checkout","catalog","payments","worker"]},"example":"checkout","x-randomapi-param-group":"route"},{"name":"status","in":"query","description":"Constrain trace status. Error guarantees at least one failed span.","required":false,"schema":{"type":"string","enum":["ok","error"]},"example":"error","x-randomapi-param-group":"route"},{"name":"minDurationMs","in":"query","description":"Inclusive minimum total trace duration in milliseconds.","required":false,"schema":{"type":"integer","minimum":1,"maximum":60000,"default":20},"example":100,"x-randomapi-param-group":"route"},{"name":"maxDurationMs","in":"query","description":"Inclusive maximum total trace duration; must be at least minDurationMs.","required":false,"schema":{"type":"integer","minimum":1,"maximum":60000,"default":2000},"example":5000,"x-randomapi-param-group":"route"},{"name":"spanCount","in":"query","description":"Exact number of spans nested in every generated trace.","required":false,"schema":{"type":"integer","minimum":1,"maximum":8,"default":4},"example":6,"x-randomapi-param-group":"route"},{"name":"windowMinutes","in":"query","description":"Trace start is sampled within this many minutes at or before resolved asOf.","required":false,"schema":{"type":"integer","minimum":1,"maximum":1440,"default":60},"example":120,"x-randomapi-param-group":"route"},{"name":"asOf","in":"query","description":"Window end. Defaults to the current UTC day's final millisecond and is echoed for replay. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-10T23:59:59.999Z","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["traceId","name"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"traceId,name"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["spans"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"spans"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/TracesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/TracesRootRecord"}}]},"example":{"data":[{"traceId":"0000000076cc47a8b2caa2cf7131537a","name":"create checkout","service":"checkout","startTime":"2026-07-10T23:14:22.031Z","durationMs":842,"status":"error","rootSpanId":"0000000066f327f2","spanCount":4,"spans":[{"spanId":"0000000066f327f2","parentSpanId":null,"name":"create checkout","service":"checkout","kind":"server","startOffsetMs":0,"durationMs":842,"status":"ok","errorCode":null}]}],"meta":{"endpoint":"traces","count":1,"seed":42,"params":{"minDurationMs":20,"maxDurationMs":2000,"spanCount":4,"windowMinutes":60},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"traceId\":\"0000000076cc47a8b2caa2cf7131537a\",\"name\":\"create checkout\",\"service\":\"checkout\",\"startTime\":\"2026-07-10T23:14:22.031Z\",\"durationMs\":842,\"status\":\"error\",\"rootSpanId\":\"0000000066f327f2\",\"spanCount\":4,\"spans\":[{\"spanId\":\"0000000066f327f2\",\"parentSpanId\":null,\"name\":\"create checkout\",\"service\":\"checkout\",\"kind\":\"server\",\"startOffsetMs\":0,\"durationMs\":842,\"status\":\"ok\",\"errorCode\":null}]}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Distributed trace fixtures","url":"https://randomapi.dev/apis/traces"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/traces/spans":{"get":{"operationId":"get_traces_spans","tags":["developer"],"summary":"Generate individual filtered mock spans","description":"Generate coherent mock distributed traces and individual spans with bounded timing, parentage, service filters and reproducible failures.","parameters":[{"name":"service","in":"query","description":"Constrain every span to this service. Omit for a mix.","required":false,"schema":{"type":"string","enum":["gateway","checkout","catalog","payments","worker"]},"example":"payments","x-randomapi-param-group":"route"},{"name":"kind","in":"query","description":"Constrain every span to this span kind. Omit for a mix.","required":false,"schema":{"type":"string","enum":["server","client","producer","consumer","internal"]},"example":"client","x-randomapi-param-group":"route"},{"name":"status","in":"query","description":"Constrain every span to ok or error.","required":false,"schema":{"type":"string","enum":["ok","error"]},"example":"ok","x-randomapi-param-group":"route"},{"name":"minDurationMs","in":"query","description":"Inclusive minimum span duration in milliseconds.","required":false,"schema":{"type":"integer","minimum":1,"maximum":60000,"default":5},"example":20,"x-randomapi-param-group":"route"},{"name":"maxDurationMs","in":"query","description":"Inclusive maximum span duration; must be at least minDurationMs.","required":false,"schema":{"type":"integer","minimum":1,"maximum":60000,"default":1000},"example":2000,"x-randomapi-param-group":"route"},{"name":"windowMinutes","in":"query","description":"Span start is sampled within this many minutes at or before resolved asOf.","required":false,"schema":{"type":"integer","minimum":1,"maximum":1440,"default":60},"example":240,"x-randomapi-param-group":"route"},{"name":"asOf","in":"query","description":"Window end. Defaults to the current UTC day's final millisecond and is echoed for replay. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-07-10T23:59:59.999Z","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["traceId","spanId"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"traceId,spanId"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["attributes"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"attributes"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/TracesSpansEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/TracesSpansRecord"}}]},"example":{"data":[{"traceId":"0000000076cc47a8b2caa2cf7131537a","spanId":"0000000066f327f2","parentSpanId":"00000000a2cf7131","name":"authorize payment","service":"payments","kind":"client","startTime":"2026-07-10T23:42:10.002Z","durationMs":127,"status":"ok","errorCode":null,"attributes":{"method":"POST","path":"/api/checkout","statusCode":201}}],"meta":{"endpoint":"traces","route":"/spans","count":1,"seed":42,"params":{"minDurationMs":5,"maxDurationMs":1000,"windowMinutes":60},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"traceId\":\"0000000076cc47a8b2caa2cf7131537a\",\"spanId\":\"0000000066f327f2\",\"parentSpanId\":\"00000000a2cf7131\",\"name\":\"authorize payment\",\"service\":\"payments\",\"kind\":\"client\",\"startTime\":\"2026-07-10T23:42:10.002Z\",\"durationMs\":127,\"status\":\"ok\",\"errorCode\":null,\"attributes\":{\"method\":\"POST\",\"path\":\"/api/checkout\",\"statusCode\":201}}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Distributed trace fixtures","url":"https://randomapi.dev/apis/traces"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/transactions":{"get":{"operationId":"get_transactions_root","tags":["commerce"],"summary":"Generate fake account transactions","description":"Fake account transactions with realistic merchants, weighted statuses and currency-correct amounts — filter by type, status, amount range and date window.","parameters":[{"name":"minAmount","in":"query","description":"Smallest possible amount, inclusive.","required":false,"schema":{"type":"number","minimum":0,"maximum":10000000,"default":0.01},"example":10,"x-randomapi-param-group":"route"},{"name":"maxAmount","in":"query","description":"Largest possible amount, inclusive. Must be ≥ minAmount.","required":false,"schema":{"type":"number","minimum":0,"maximum":10000000,"default":5000},"example":250.75,"x-randomapi-param-group":"route"},{"name":"currency","in":"query","description":"ISO 4217 currency code (3 letters, case-insensitive). Amounts are rounded to the currency's minor unit — JPY/KRW give whole numbers, KWD three decimals. Unknown codes are a 400. Supported: USD, EUR, GBP, JPY, CNY, CHF, CAD, AUD, NZD, SEK, NOK, DKK, PLN, CZK, SGD, HKD, KRW, INR, BRL, MXN, ZAR, TRY, KWD.","required":false,"schema":{"type":"string","minLength":3,"maxLength":3,"default":"USD"},"example":"EUR","x-randomapi-param-group":"route"},{"name":"type","in":"query","description":"Only generate this transaction type. Omit for a realistic weighted mix (payments most common).","required":false,"schema":{"type":"string","enum":["payment","refund","transfer","deposit","withdrawal"]},"example":"payment","x-randomapi-param-group":"route"},{"name":"status","in":"query","description":"Only generate this status. Omit for the weighted mix: 80% completed, 12% pending, 8% failed.","required":false,"schema":{"type":"string","enum":["completed","pending","failed"]},"example":"completed","x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Earliest possible timestamp, inclusive (YYYY-MM-DD or ISO 8601). Defaults to 90 days before 'to'. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Latest possible timestamp, inclusive — date-only values mean midnight UTC. Defaults to the request time. Must be ≥ 'from'. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-03-31","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","amount"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,amount"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["reference"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"reference"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/TransactionsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/TransactionsRootRecord"}}]},"example":{"data":[{"id":"txn_9f2c4b7a1e8d3f6a5c0b2e4d","amount":129.99,"currency":"USD","type":"payment","status":"completed","description":"Payment to Lumen Coffee Roasters","merchant":"Lumen Coffee Roasters","timestamp":"2026-05-14T09:23:41.512Z","reference":"REF-7K2M9Q"}],"meta":{"endpoint":"transactions","count":1,"seed":42,"params":{"minAmount":0.01,"maxAmount":5000,"currency":"USD"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"txn_9f2c4b7a1e8d3f6a5c0b2e4d\",\"amount\":129.99,\"currency\":\"USD\",\"type\":\"payment\",\"status\":\"completed\",\"description\":\"Payment to Lumen Coffee Roasters\",\"merchant\":\"Lumen Coffee Roasters\",\"timestamp\":\"2026-05-14T09:23:41.512Z\",\"reference\":\"REF-7K2M9Q\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Transactions","url":"https://randomapi.dev/apis/transactions"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/unicode/inspect":{"get":{"operationId":"get_unicode_inspect","tags":["developer"],"summary":"Inspect Unicode scalars, UTF-16 units and unpaired surrogates","description":"Inspect UTF-16 and Unicode scalar values, apply the four standard normalization forms, and segment text into graphemes, words or sentences. Authoritative source: Unicode Standard algorithms exposed by ECMAScript.","parameters":[{"name":"text","in":"query","description":"Unicode text to process, limited to 512 UTF-16 code units. Use exactly one of text or utf16.","required":false,"schema":{"type":"string","minLength":1,"maxLength":512},"example":"Café 👩‍💻","x-randomapi-param-group":"route"},{"name":"utf16","in":"query","description":"Comma-separated four-digit hexadecimal UTF-16 code units; this form can represent unpaired surrogates. Use exactly one input.","required":false,"schema":{"type":"string","minLength":4,"maxLength":2559},"example":"0041,D83D,DC4B","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["input","source"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"input,source"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["codePoints"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"codePoints"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UnicodeInspectEnvelope"},{"$ref":"#/components/schemas/UnicodeInspectRecord"}]},"example":{"data":{"input":"A👋","source":"utf16","codeUnitLength":3,"scalarValueCount":2,"unpairedSurrogateCount":0,"wellFormed":true,"codePoints":[{"character":"👋","codePoint":"U+1F44B","decimal":128075,"utf16":["D83D","DC4B"],"codeUnitStart":1,"codeUnitLength":2,"isScalar":true}]},"meta":{"endpoint":"unicode","route":"/inspect","params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Unicode text tools","url":"https://randomapi.dev/apis/unicode"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/unicode/normalize":{"get":{"operationId":"get_unicode_normalize","tags":["developer"],"summary":"Normalize Unicode text as NFC, NFD, NFKC or NFKD","description":"Inspect UTF-16 and Unicode scalar values, apply the four standard normalization forms, and segment text into graphemes, words or sentences. Authoritative source: Unicode Standard algorithms exposed by ECMAScript.","parameters":[{"name":"text","in":"query","description":"Unicode text to process, limited to 512 UTF-16 code units. Use exactly one of text or utf16.","required":false,"schema":{"type":"string","minLength":1,"maxLength":512},"example":"Café 👩‍💻","x-randomapi-param-group":"route"},{"name":"utf16","in":"query","description":"Comma-separated four-digit hexadecimal UTF-16 code units; this form can represent unpaired surrogates. Use exactly one input.","required":false,"schema":{"type":"string","minLength":4,"maxLength":2559},"example":"0041,D83D,DC4B","x-randomapi-param-group":"route"},{"name":"form","in":"query","description":"Unicode normalization form to apply.","required":false,"schema":{"type":"string","enum":["NFC","NFD","NFKC","NFKD"],"default":"NFC"},"example":"NFD","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["input","source"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"input,source"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["wellFormed"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"wellFormed"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UnicodeNormalizeEnvelope"},{"$ref":"#/components/schemas/UnicodeNormalizeRecord"}]},"example":{"data":{"input":"é","source":"text","form":"NFC","normalized":"é","changed":true,"inputCodeUnits":2,"outputCodeUnits":1,"inputScalarValues":2,"outputScalarValues":1,"inputUnpairedSurrogates":0,"outputUnpairedSurrogates":0,"wellFormed":true},"meta":{"endpoint":"unicode","route":"/normalize","params":{"form":"NFC"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Unicode text tools","url":"https://randomapi.dev/apis/unicode"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/unicode/segment":{"get":{"operationId":"get_unicode_segment","tags":["developer"],"summary":"Segment Unicode text into graphemes, words or sentences","description":"Inspect UTF-16 and Unicode scalar values, apply the four standard normalization forms, and segment text into graphemes, words or sentences. Authoritative source: Unicode Standard algorithms exposed by ECMAScript.","parameters":[{"name":"text","in":"query","description":"Unicode text to process, limited to 512 UTF-16 code units. Use exactly one of text or utf16.","required":false,"schema":{"type":"string","minLength":1,"maxLength":512},"example":"Café 👩‍💻","x-randomapi-param-group":"route"},{"name":"utf16","in":"query","description":"Comma-separated four-digit hexadecimal UTF-16 code units; this form can represent unpaired surrogates. Use exactly one input.","required":false,"schema":{"type":"string","minLength":4,"maxLength":2559},"example":"0041,D83D,DC4B","x-randomapi-param-group":"route"},{"name":"granularity","in":"query","description":"Boundary type used by Intl.Segmenter.","required":false,"schema":{"type":"string","enum":["grapheme","word","sentence"],"default":"grapheme"},"example":"word","x-randomapi-param-group":"route"},{"name":"language","in":"query","description":"Requested locale used for locale-sensitive boundary rules.","required":false,"schema":{"type":"string","enum":["en","da","de","fr","es","it","pt","ja"],"default":"en"},"example":"da","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["input","source"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"input,source"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["segments"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"segments"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UnicodeSegmentEnvelope"},{"$ref":"#/components/schemas/UnicodeSegmentRecord"}]},"example":{"data":{"input":"Hello world!","source":"text","granularity":"word","requestedLocale":"en","resolvedLocale":"en","count":4,"segments":[{"segment":"Hello","index":0,"isWordLike":true}]},"meta":{"endpoint":"unicode","route":"/segment","params":{"granularity":"grapheme","language":"en"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Unicode text tools","url":"https://randomapi.dev/apis/unicode"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/units/convert":{"get":{"operationId":"get_units_convert","tags":["developer"],"summary":"Convert a value between two units of the same category","description":"Pure computation: `value` × exact factors (or the temperature formulas). Unit ids are case-insensitive; the response echoes the canonical ids. Authoritative sources: BIPM — The International System of Units (SI Brochure, 9th edition); NIST Special Publication 811 — Guide for the Use of the SI (Appendix B conversion factors); International yard and pound agreement (1959) — the exact inch, foot, yard, mile and avoirdupois pound; IEC 80000-13 — binary (kibi/mebi/gibi/tebi) prefixes used by the data category.","parameters":[{"name":"value","in":"query","description":"The numeric value to convert (|value| ≤ 10¹⁵).","required":true,"schema":{"type":"number","minimum":-1000000000000000,"maximum":1000000000000000},"example":5,"x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Source unit id, case-insensitive (see the table at /api/units).","required":true,"schema":{"type":"string"},"example":"km","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Target unit id, case-insensitive — must be in the same category as 'from'.","required":true,"schema":{"type":"string"},"example":"mi","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["value","from"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"value,from"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["formula"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"formula"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UnitsConvertEnvelope"},{"$ref":"#/components/schemas/UnitsConvertRecord"}]},"example":{"data":{"value":5,"from":"km","to":"mi","result":3.10685596,"category":"length","formula":"1 km = 0.621371192237334 mi"},"meta":{"endpoint":"units","route":"/convert","params":{"value":5,"from":"km","to":"mi"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Unit converter","url":"https://randomapi.dev/apis/units"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/units":{"get":{"operationId":"get_units_root","tags":["developer"],"summary":"The supported unit table (ids, names, exact base factors)","description":"Deterministic unit conversion across 14 categories — length, mass, pressure, energy, power, force, angle, time and more — with exact standard factors. Authoritative sources: BIPM — The International System of Units (SI Brochure, 9th edition); NIST Special Publication 811 — Guide for the Use of the SI (Appendix B conversion factors); International yard and pound agreement (1959) — the exact inch, foot, yard, mile and avoirdupois pound; IEC 80000-13 — binary (kibi/mebi/gibi/tebi) prefixes used by the data category.","parameters":[{"name":"category","in":"query","description":"Only list units of this category.","required":false,"schema":{"type":"string","enum":["length","mass","temperature","volume","data","speed","area","pressure","energy","power","force","angle","time","frequency","any"],"default":"any"},"example":"data","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to all matches.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","name"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,name"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["toBase"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"toBase"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UnitsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/UnitsRootRecord"}}]},"example":{"data":[{"id":"mi","name":"mile","category":"length","toBase":"1 mi = 1609.344 m"}],"meta":{"endpoint":"units","count":1,"params":{"category":"any"},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"mi\",\"name\":\"mile\",\"category\":\"length\",\"toBase\":\"1 mi = 1609.344 m\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Unit converter","url":"https://randomapi.dev/apis/units"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/universities":{"get":{"operationId":"get_universities_root","tags":["geo"],"summary":"List universities and colleges (filter by country or name)","description":"Returns matching institutions from the pinned snapshot. A page holds at most 100 records; use offset to walk further. Authoritative sources: Hipo university-domains-list (MIT, snapshot 2026-09-14); English country names joined from this project's ISO 3166-1 country dataset.","parameters":[{"name":"country","in":"query","description":"Only institutions in this country (ISO 3166-1 alpha-2, case-insensitive — us and US both work). A valid two-letter code with no institutions in the snapshot returns an empty list; anything that isn't two letters is a 400.","required":false,"schema":{"type":"string"},"example":"DK","x-randomapi-param-group":"route"},{"name":"search","in":"query","description":"Only institutions whose name contains this text — case-, diacritic- and apostrophe-insensitive (universite matches Université, munchen matches München).","required":false,"schema":{"type":"string"},"example":"institute of technology","x-randomapi-param-group":"route"},{"name":"sort","in":"query","description":"country = the stored order, grouped by ISO alpha-2 code and A→Z by name inside each country; name = one global A→Z ordering across every country.","required":false,"schema":{"type":"string","enum":["country","name"],"default":"country"},"example":"name","x-randomapi-param-group":"route"},{"name":"offset","in":"query","description":"Skip this many matches before count is applied, so you can page through large results (offset=100 with count=100 returns the second hundred).","required":false,"schema":{"type":"integer","minimum":0,"maximum":20000,"default":0},"example":100,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to 25.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["name","country"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"name,country"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["website"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"website"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UniversitiesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/UniversitiesRootRecord"}}]},"example":{"data":[{"name":"Massachusetts Institute of Technology","country":"United States","countryCode":"US","domains":["mit.edu"],"website":"http://web.mit.edu/"}],"meta":{"endpoint":"universities","count":1,"params":{"sort":"country","offset":0},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"name\":\"Massachusetts Institute of Technology\",\"country\":\"United States\",\"countryCode\":\"US\",\"domains\":[\"mit.edu\"],\"website\":\"http://web.mit.edu/\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Universities & college domains","url":"https://randomapi.dev/apis/universities"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/universities/by-domain":{"get":{"operationId":"get_universities_by_domain","tags":["geo"],"summary":"Resolve a domain to the institution(s) listed under it","description":"Exact match first; when the host itself is not listed, the lookup walks up to the parent domain and says so. Never falls back to a bare TLD. Authoritative sources: Hipo university-domains-list (MIT, snapshot 2026-09-14); English country names joined from this project's ISO 3166-1 country dataset.","parameters":[{"name":"domain","in":"query","description":"The domain to resolve, e.g. mit.edu. Case-insensitive; a full URL is accepted and reduced to its host. Must have at least two labels.","required":true,"schema":{"type":"string"},"example":"mit.edu","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["domain","matchedDomain"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"domain,matchedDomain"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["institutions"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"institutions"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UniversitiesByDomainEnvelope"},{"$ref":"#/components/schemas/UniversitiesByDomainRecord"}]},"example":{"data":{"domain":"cs.ox.ac.uk","matchedDomain":"ox.ac.uk","matchType":"parent","institutionCount":1,"institutions":[{"name":"Massachusetts Institute of Technology","country":"United States","countryCode":"US","domains":["mit.edu"],"website":"http://web.mit.edu/"}]},"meta":{"endpoint":"universities","route":"/by-domain","params":{"domain":"mit.edu"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"Neither the requested domain nor any of its parent domains appears in the pinned community list. That is a statement about this snapshot, not proof that no institution uses the domain.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"NOT_FOUND","message":"A requested registry key or resource does not exist in this operation's documented scope.","status":404}}}},"x-randomapi-example-query":"?domain=gmail.com"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Universities & college domains","url":"https://randomapi.dev/apis/universities"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/universities/verify-email":{"get":{"operationId":"get_universities_verify_email","tags":["geo"],"summary":"Check whether an email address belongs to a listed institution","description":"A verdict, not a lookup: an address outside the list answers isUniversity=false with HTTP 200. Only a malformed address is a 400. Authoritative sources: Hipo university-domains-list (MIT, snapshot 2026-09-14); English country names joined from this project's ISO 3166-1 country dataset.","parameters":[{"name":"email","in":"query","description":"The address to check. Only its domain is used; the local part is never matched, stored or validated beyond being non-empty.","required":true,"schema":{"type":"string"},"example":"ada@mit.edu","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["email","domain"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"email,domain"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["countryCode"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"countryCode"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UniversitiesVerifyEmailEnvelope"},{"$ref":"#/components/schemas/UniversitiesVerifyEmailRecord"}]},"example":{"data":{"email":"ada@mit.edu","domain":"mit.edu","isUniversity":true,"matchedDomain":"mit.edu","matchType":"exact","institutionCount":1,"name":"Massachusetts Institute of Technology","country":"United States","countryCode":"US"},"meta":{"endpoint":"universities","route":"/verify-email","params":{"email":"ada@mit.edu"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Universities & college domains","url":"https://randomapi.dev/apis/universities"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/unix-permissions/parse":{"get":{"operationId":"get_unix_permissions_parse","tags":["developer"],"summary":"Parse an octal file mode into symbolic permissions and special bits","description":"Parse octal Unix modes, apply POSIX symbolic chmod expressions and calculate umask results, including special bits, X and class copying. Authoritative source: POSIX.1-2024 chmod and file permission semantics.","parameters":[{"name":"mode","in":"query","description":"Strict three- or four-digit octal mode from 000 through 7777; output is padded to four digits.","required":true,"schema":{"type":"string","minLength":3,"maxLength":4},"example":"4755","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["octal","symbolic"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"octal,symbolic"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["sticky"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"sticky"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UnixPermissionsParseEnvelope"},{"$ref":"#/components/schemas/UnixPermissionsParseRecord"}]},"example":{"data":{"octal":"4755","symbolic":"rwsr-xr-x","user":"rwx","group":"r-x","other":"r-x","setuid":true,"setgid":false,"sticky":false},"meta":{"endpoint":"unix-permissions","route":"/parse","params":{"mode":"4755"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Unix file permissions","url":"https://randomapi.dev/apis/unix-permissions"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/unix-permissions/apply":{"get":{"operationId":"get_unix_permissions_apply","tags":["developer"],"summary":"Apply a POSIX symbolic chmod expression to an octal mode","description":"Parse octal Unix modes, apply POSIX symbolic chmod expressions and calculate umask results, including special bits, X and class copying. Authoritative source: POSIX.1-2024 chmod and file permission semantics.","parameters":[{"name":"current","in":"query","description":"Existing three- or four-digit octal mode to modify.","required":true,"schema":{"type":"string","minLength":3,"maxLength":4},"example":"0644","x-randomapi-param-group":"route"},{"name":"symbolic","in":"query","description":"Whitespace-free POSIX symbolic mode with at most 32 comma-separated clauses and 64 operations.","required":true,"schema":{"type":"string","minLength":1,"maxLength":128},"example":"u+x,g=u,o-rwx","x-randomapi-param-group":"route"},{"name":"umask","in":"query","description":"Creation mask used when a clause omits ugoa; three octal digits with an optional leading zero.","required":false,"schema":{"type":"string","minLength":3,"maxLength":4,"default":"0022"},"example":"0022","x-randomapi-param-group":"route"},{"name":"isDirectory","in":"query","description":"Makes X grant execute/search when needed and is required for portable sticky-bit operations using t. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["before","expression"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"before,expression"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["changed"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"changed"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UnixPermissionsApplyEnvelope"},{"$ref":"#/components/schemas/UnixPermissionsApplyRecord"}]},"example":{"data":{"before":"0644","expression":"u+x,g=u,o-rwx","umask":"0022","isDirectory":false,"after":"0770","symbolic":"rwxrwx---","changed":true},"meta":{"endpoint":"unix-permissions","route":"/apply","params":{"current":"0644","symbolic":"u+x,g=u,o-rwx","umask":"0022","isDirectory":false},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Unix file permissions","url":"https://randomapi.dev/apis/unix-permissions"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/unix-permissions/umask":{"get":{"operationId":"get_unix_permissions_umask","tags":["developer"],"summary":"Calculate a file creation permission template after applying umask","description":"Parse octal Unix modes, apply POSIX symbolic chmod expressions and calculate umask results, including special bits, X and class copying. Authoritative source: POSIX.1-2024 chmod and file permission semantics.","parameters":[{"name":"requested","in":"query","description":"Requested three-digit permission template, optionally prefixed by 0; special bits are not accepted.","required":true,"schema":{"type":"string","minLength":3,"maxLength":4},"example":"0666","x-randomapi-param-group":"route"},{"name":"umask","in":"query","description":"Three octal mask digits, optionally prefixed by 0.","required":true,"schema":{"type":"string","minLength":3,"maxLength":4},"example":"0022","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["requested","umask"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"requested,umask"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["symbolic"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"symbolic"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UnixPermissionsUmaskEnvelope"},{"$ref":"#/components/schemas/UnixPermissionsUmaskRecord"}]},"example":{"data":{"requested":"0666","umask":"0022","result":"0644","symbolic":"rw-r--r--"},"meta":{"endpoint":"unix-permissions","route":"/umask","params":{"requested":"0666","umask":"0022"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Unix file permissions","url":"https://randomapi.dev/apis/unix-permissions"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/urls/parse":{"get":{"operationId":"get_urls_parse","tags":["developer"],"summary":"Parse and canonicalize one absolute WHATWG URL","description":"Parse absolute URLs or resolve relative references with the WHATWG URL algorithm — canonical hosts, ordered query pairs and no credential leakage. Authoritative source: WHATWG URL Standard.","parameters":[{"name":"url","in":"query","description":"Absolute URL to parse, up to 2048 characters. Credentials are detected but removed from all echoed URL values.","required":true,"schema":{"type":"string","minLength":1,"maxLength":2048},"example":"https://example.com:443/docs?q=one&q=two#api","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["href","origin"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"href,origin"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["hasCredentials"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"hasCredentials"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UrlsParseEnvelope"},{"$ref":"#/components/schemas/UrlsParseRecord"}]},"example":{"data":{"href":"https://example.com/docs?q=one&q=two#api","origin":"https://example.com","protocol":"https:","hostname":"example.com","port":"","pathname":"/docs","query":[{"name":"q","value":"one"},{"name":"q","value":"two"}],"hash":"#api","hasCredentials":false},"meta":{"endpoint":"urls","route":"/parse","params":{"url":"https://example.com:443/docs?q=one&q=two#api"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for URL parser and resolver","url":"https://randomapi.dev/apis/urls"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/urls/resolve":{"get":{"operationId":"get_urls_resolve","tags":["developer"],"summary":"Resolve a relative URL reference against an absolute base","description":"Parse absolute URLs or resolve relative references with the WHATWG URL algorithm — canonical hosts, ordered query pairs and no credential leakage. Authoritative source: WHATWG URL Standard.","parameters":[{"name":"base","in":"query","description":"Absolute base URL, up to 2048 characters. Credential-bearing bases are rejected.","required":true,"schema":{"type":"string","minLength":1,"maxLength":2048},"example":"https://example.com/docs/guides/start","x-randomapi-param-group":"route"},{"name":"relative","in":"query","description":"Relative or absolute URL reference, up to 2048 characters. Credential-bearing results are rejected.","required":true,"schema":{"type":"string","minLength":1,"maxLength":2048},"example":"../api?format=json","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["base","relative"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"base,relative"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["origin"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"origin"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UrlsResolveEnvelope"},{"$ref":"#/components/schemas/UrlsResolveRecord"}]},"example":{"data":{"base":"https://example.com/docs/guides/start","relative":"../api?format=json","resolved":"https://example.com/docs/api?format=json","origin":"https://example.com"},"meta":{"endpoint":"urls","route":"/resolve","params":{"base":"https://example.com/docs/guides/start","relative":"../api?format=json"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for URL parser and resolver","url":"https://randomapi.dev/apis/urls"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/user-agents":{"get":{"operationId":"get_user_agents_root","tags":["internet"],"summary":"Generate realistic user-agent strings","description":"Realistic, coherent browser user agents — filter by browser, OS and device; impossible combos like Safari-on-Windows get a clear 400, never a fake string.","parameters":[{"name":"browser","in":"query","description":"Browser family. Impossible pairs are rejected with an explanatory 400 (e.g. Safari only runs on macOS/iOS) — never faked.","required":false,"schema":{"type":"string","enum":["chrome","firefox","safari","edge"]},"example":"chrome","x-randomapi-param-group":"route"},{"name":"os","in":"query","description":"Operating system. On iOS only Safari is modeled (Chrome/Firefox/Edge there are WebKit shells); windows/macos/linux imply desktop.","required":false,"schema":{"type":"string","enum":["windows","macos","linux","android","ios"]},"example":"android","x-randomapi-param-group":"route"},{"name":"device","in":"query","description":"Form factor. windows/macos/linux are desktop-only; android and ios are mobile or tablet (an iOS tablet is an iPad).","required":false,"schema":{"type":"string","enum":["desktop","mobile","tablet"]},"example":"mobile","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["userAgent","browser"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"userAgent,browser"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["device"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"device"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UserAgentsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/UserAgentsRootRecord"}}]},"example":{"data":[{"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36","browser":"chrome","browserVersion":"138.0.0.0","os":"windows","device":"desktop"}],"meta":{"endpoint":"user-agents","count":1,"seed":42,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"userAgent\":\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36\",\"browser\":\"chrome\",\"browserVersion\":\"138.0.0.0\",\"os\":\"windows\",\"device\":\"desktop\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for User agents","url":"https://randomapi.dev/apis/user-agents"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/usernames":{"get":{"operationId":"get_usernames_root","tags":["internet"],"summary":"Generate random usernames","description":"Random usernames in four distinct styles — handle, gamer, professional, anonymous — with a maxLength that is honored by construction, never by truncation.","parameters":[{"name":"style","in":"query","description":"Username style: 'handle' (word.word42), 'gamer' (XxCamelLeetxX), 'professional' (first.last), 'anonymous' (adjectivenoun8317). Omit for a mix.","required":false,"schema":{"type":"string","enum":["handle","gamer","professional","anonymous"]},"example":"gamer","x-randomapi-param-group":"route"},{"name":"maxLength","in":"query","description":"Hard upper bound on username length, honored by building shorter combos (never truncating). 'anonymous' needs ≥ 8.","required":false,"schema":{"type":"integer","minimum":6,"maximum":30,"default":20},"example":12,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["username","style"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"username,style"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["style"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"style"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UsernamesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/UsernamesRootRecord"}}]},"example":{"data":[{"username":"pixel.fox42","style":"handle"}],"meta":{"endpoint":"usernames","count":1,"seed":42,"params":{"maxLength":20},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"username\":\"pixel.fox42\",\"style\":\"handle\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Usernames","url":"https://randomapi.dev/apis/usernames"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/users":{"get":{"operationId":"get_users_root","tags":["people"],"summary":"Generate fake user profiles","description":"Complete fake people — name, age-consistent birth date, email, phone, job and address — with working filters for gender, age range and email domain.","parameters":[{"name":"gender","in":"query","description":"Only generate this gender. Omit for a mix.","required":false,"schema":{"type":"string","enum":["male","female"]},"example":"female","x-randomapi-param-group":"route"},{"name":"minAge","in":"query","description":"Minimum age (inclusive).","required":false,"schema":{"type":"integer","minimum":0,"maximum":120,"default":18},"example":21,"x-randomapi-param-group":"route"},{"name":"maxAge","in":"query","description":"Maximum age (inclusive). Must be ≥ minAge.","required":false,"schema":{"type":"integer","minimum":0,"maximum":120,"default":80},"example":65,"x-randomapi-param-group":"route"},{"name":"domain","in":"query","description":"Email domain override (e.g. acme.test). Defaults to RFC 2606 reserved domains that can never deliver mail.","required":false,"schema":{"type":"string"},"example":"acme.test","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"locale","in":"query","description":"Locale for the generated data (names, addresses, …).","required":false,"schema":{"type":"string","enum":["en","da","de","fr","es","it","pt","ja"],"default":"en"},"example":"da","x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","firstName"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,firstName"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["address"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"address"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UsersRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/UsersRootRecord"}}]},"example":{"data":[{"id":"0b9a3f2e-6d1c-4a8b-9f2e-3d1c4a8b9f2e","firstName":"Emily","lastName":"Carter","fullName":"Emily Carter","gender":"female","birthDate":"1994-04-12","age":32,"email":"emily.carter@example.com","phone":"+1 555 028 4821","username":"emily.carter94","avatarUrl":"https://randomapi.dev/api/avatars/image?style=initials&seed=emilycarter&name=Emily%20Carter","jobTitle":"Senior Product Designer","address":{"street":"883 Maple Avenue","city":"Portland","state":"Oregon","zipCode":"97205","country":"United States","countryCode":"US","latitude":45.5152,"longitude":-122.6784}}],"meta":{"endpoint":"users","count":1,"seed":42,"locale":"en","params":{"minAge":18,"maxAge":80},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"0b9a3f2e-6d1c-4a8b-9f2e-3d1c4a8b9f2e\",\"firstName\":\"Emily\",\"lastName\":\"Carter\",\"fullName\":\"Emily Carter\",\"gender\":\"female\",\"birthDate\":\"1994-04-12\",\"age\":32,\"email\":\"emily.carter@example.com\",\"phone\":\"+1 555 028 4821\",\"username\":\"emily.carter94\",\"avatarUrl\":\"https://randomapi.dev/api/avatars/image?style=initials&seed=emilycarter&name=Emily%20Carter\",\"jobTitle\":\"Senior Product Designer\",\"address\":{\"street\":\"883 Maple Avenue\",\"city\":\"Portland\",\"state\":\"Oregon\",\"zipCode\":\"97205\",\"country\":\"United States\",\"countryCode\":\"US\",\"latitude\":45.5152,\"longitude\":-122.6784}}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Users","url":"https://randomapi.dev/apis/users"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/utm-mgrs/from-latlng":{"get":{"operationId":"get_utm_mgrs_from_latlng","tags":["geo"],"summary":"Project a WGS 84 point to UTM or UPS and encode it as MGRS","description":"Returns the numeric grid coordinate and the MGRS reference together, with the grid convergence, the point scale factor and the EPSG code of the CRS. There is no mode to choose, so there is no mode to get wrong. Authoritative sources: NGA.STND.0037 v2.0.0 — Universal Grids and Grid Reference Systems (2014-02-28); IOGP Guidance Note 7-2 (2019) — Transverse Mercator (JHS) and Polar Stereographic variant A formulas; Karney (2011), Transverse Mercator with an accuracy of a few nanometers — convergence and scale; NGA.STND.0036 — World Geodetic System 1984 ellipsoid parameters.","parameters":[{"name":"lat","in":"query","description":"Latitude in WGS 84 decimal degrees. From 80°S to 84°N the point projects to UTM; beyond that it projects to UPS with a polar band letter and no zone number. A point exactly on a band boundary belongs to the band north of it, so lat=-80 is band C and lat=84 is band X.","required":true,"schema":{"type":"number","minimum":-90,"maximum":90},"example":55.6761,"x-randomapi-param-group":"route"},{"name":"lng","in":"query","description":"Longitude in WGS 84 decimal degrees; +180 is the same meridian as -180 and falls in zone 1. A point exactly on a zone boundary belongs to the zone east of it, so lng=6 is zone 32.","required":true,"schema":{"type":"number","minimum":-180,"maximum":180},"example":12.5683,"x-randomapi-param-group":"route"},{"name":"precision","in":"query","description":"MGRS digits per axis: 0 names the 100,000-metre square (a five-character reference), 1 is 10 km, 2 is 1 km, 3 is 100 m, 4 is 10 m and 5 is 1 m. Digits are truncated, never rounded (NGA.STND.0037 §3-4c).","required":false,"schema":{"type":"integer","minimum":0,"maximum":5,"default":5},"example":3,"x-randomapi-param-group":"route"},{"name":"zone","in":"query","description":"Force projection into a specific UTM zone — an extended grid (NGA.STND.0037 §1-9) — instead of the point's natural zone. Only the natural zone or one of its two neighbours in the same band is accepted, wrapping 60 to 1; anything further is a 400 because the distortion grows without bound away from the central meridian. An extended-grid coordinate has no valid MGRS reference, so mgrs comes back null. Rejected for polar points, which have no zone number.","required":false,"schema":{"type":"integer","minimum":1,"maximum":60},"example":32,"x-randomapi-param-group":"route"},{"name":"datum","in":"query","description":"Reference frame of the input and the output. WGS 84 only — the sole accepted value is 'wgs84', case-insensitively. NAD 27, NAD 83, ED 50, OSGB36, Tokyo Datum and the other classical datums are deliberately unsupported, because reading their numbers as WGS 84 moves the point by tens to hundreds of metres (FGDC-STD-011-2001 Annex A gives the same physical point as 18SUJ23480647 on NAD 83/WGS 84 and 18SUJ23450626 on NAD 27) and because those datums use the legacy grid-square lettering of NGA.STND.0037 Appendix C. Any other value is a 400 rather than a plausible-looking wrong answer.","required":false,"schema":{"type":"string","minLength":1,"maxLength":32,"default":"wgs84"},"example":"wgs84","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["system","zone"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"system,zone"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["naturalZone"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"naturalZone"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UtmMgrsFromLatlngEnvelope"},{"$ref":"#/components/schemas/UtmMgrsFromLatlngRecord"}]},"example":{"data":{"system":"utm","zone":33,"band":"U","gridZoneDesignator":"33U","hemisphere":"north","easting":347090.938,"northing":6172711.786,"convergenceDegrees":-2.0086373,"scaleFactor":0.999886803,"epsg":32633,"mgrs":"33UUB4709072711","mgrsSpaced":"33U UB 47090 72711","mgrsPrecisionMeters":1,"squareId":"UB","exception":null,"exceptionNote":null,"extendedZone":false,"naturalZone":33},"meta":{"endpoint":"utm-mgrs","route":"/from-latlng","params":{"lat":55.6761,"lng":12.5683,"precision":5,"datum":"wgs84"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for UTM, UPS and MGRS coordinate conversion","url":"https://randomapi.dev/apis/utm-mgrs"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/utm-mgrs/to-latlng":{"get":{"operationId":"get_utm_mgrs_to_latlng","tags":["geo"],"summary":"Parse a UTM, UPS or MGRS reference back to WGS 84 decimal degrees","description":"Supply either the reference text in 'value' or the explicit components, never both. MGRS input returns the square's south-west corner, its centre and its size; a numeric coordinate returns the exact point. Authoritative sources: NGA.STND.0037 v2.0.0 — Universal Grids and Grid Reference Systems (2014-02-28); IOGP Guidance Note 7-2 (2019) — Transverse Mercator (JHS) and Polar Stereographic variant A formulas; Karney (2011), Transverse Mercator with an accuracy of a few nanometers — convergence and scale; NGA.STND.0036 — World Geodetic System 1984 ellipsoid parameters.","parameters":[{"name":"value","in":"query","description":"An MGRS reference ('18SUJ23480647', spaces allowed), or a full UTM/UPS coordinate preceded by its grid zone designator in the form of NGA.STND.0037 §A-4 ('33U 347090 6172712', 'Y 1735147 2243078'). Commas are accepted as separators and letters are case-insensitive. Mutually exclusive with 'easting'/'northing'.","required":false,"schema":{"type":"string","minLength":1,"maxLength":64},"example":"18SUJ23480647","x-randomapi-param-group":"route"},{"name":"zone","in":"query","description":"UTM zone for the component form. Omit it to mean UPS, whose polar areas carry no zone number.","required":false,"schema":{"type":"integer","minimum":1,"maximum":60},"example":33,"x-randomapi-param-group":"route"},{"name":"band","in":"query","description":"Latitude band letter C–X for UTM, or a polar zone letter A/B/Y/Z for UPS. It supplies the hemisphere and, for an MGRS reference, resolves which 2,000,000 m northing cycle the row letter means.","required":false,"schema":{"type":"string","minLength":1,"maxLength":1},"example":"U","x-randomapi-param-group":"route"},{"name":"hemisphere","in":"query","description":"Alternative to 'band' for the component form. When both are given they must agree, otherwise the request is a 400.","required":false,"schema":{"type":"string","enum":["north","south"]},"example":"north","x-randomapi-param-group":"route"},{"name":"easting","in":"query","description":"Grid easting in metres. Standard UTM eastings run 100,000–900,000 and UPS eastings 800,000–3,200,000; a value outside the range its eight column letters cover is accepted as an extended-grid coordinate, with a warning, and then no MGRS reference is returned.","required":false,"schema":{"type":"number","minimum":0,"maximum":4000000},"example":347090.938,"x-randomapi-param-group":"route"},{"name":"northing","in":"query","description":"Grid northing in metres, including the 10,000,000 m false northing for the southern hemisphere in UTM.","required":false,"schema":{"type":"number","minimum":0,"maximum":10000000},"example":6172711.786,"x-randomapi-param-group":"route"},{"name":"datum","in":"query","description":"Reference frame of the input and the output. WGS 84 only — the sole accepted value is 'wgs84', case-insensitively. NAD 27, NAD 83, ED 50, OSGB36, Tokyo Datum and the other classical datums are deliberately unsupported, because reading their numbers as WGS 84 moves the point by tens to hundreds of metres (FGDC-STD-011-2001 Annex A gives the same physical point as 18SUJ23480647 on NAD 83/WGS 84 and 18SUJ23450626 on NAD 27) and because those datums use the legacy grid-square lettering of NGA.STND.0037 Appendix C. Any other value is a 400 rather than a plausible-looking wrong answer.","required":false,"schema":{"type":"string","minLength":1,"maxLength":32,"default":"wgs84"},"example":"wgs84","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["input","inputForm"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"input,inputForm"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["exceptionNote"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"exceptionNote"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UtmMgrsToLatlngEnvelope"},{"$ref":"#/components/schemas/UtmMgrsToLatlngRecord"}]},"example":{"data":{"input":"18SUJ23480647","inputForm":"mgrs","system":"utm","zone":18,"band":"S","gridZoneDesignator":"18S","hemisphere":"north","easting":323480,"northing":4306470,"convergenceDegrees":-1.2781132,"scaleFactor":0.999983701,"epsg":32618,"letterRole":"latitude-band","latitude":38.889381136,"longitude":-77.035274279,"center":{"latitude":38.889427169,"longitude":-77.035217949},"square":{"eastingMin":323480,"northingMin":4306470,"sizeMeters":10},"mgrsPrecisionMeters":10,"mgrs":"18SUJ2348006470","squareId":"UJ","exception":null,"exceptionNote":null},"meta":{"endpoint":"utm-mgrs","route":"/to-latlng","params":{"datum":"wgs84"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for UTM, UPS and MGRS coordinate conversion","url":"https://randomapi.dev/apis/utm-mgrs"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/utm-mgrs/zone":{"get":{"operationId":"get_utm_mgrs_zone","tags":["geo"],"summary":"Report the grid zone, band and central meridian a point falls in","description":"Band and zone boundaries are latitude/longitude limits rather than datum-dependent geometry, so this route takes no datum parameter. Exceptions are reported alongside the zone the plain 6-degree rule would have given, so the decision is auditable. Exactly at a pole longitude is degenerate: the polar half reported there is the one NGA.STND.0037 §B-5b's easting rule picks, not one the longitude selected, and a warning says so because the returned longitude limits then describe that half rather than a range containing the point. Authoritative sources: NGA.STND.0037 v2.0.0 — Universal Grids and Grid Reference Systems (2014-02-28); IOGP Guidance Note 7-2 (2019) — Transverse Mercator (JHS) and Polar Stereographic variant A formulas; Karney (2011), Transverse Mercator with an accuracy of a few nanometers — convergence and scale; NGA.STND.0036 — World Geodetic System 1984 ellipsoid parameters.","parameters":[{"name":"lat","in":"query","description":"Latitude in WGS 84 decimal degrees. From 80°S to 84°N the point projects to UTM; beyond that it projects to UPS with a polar band letter and no zone number. A point exactly on a band boundary belongs to the band north of it, so lat=-80 is band C and lat=84 is band X.","required":true,"schema":{"type":"number","minimum":-90,"maximum":90},"example":78.2232,"x-randomapi-param-group":"route"},{"name":"lng","in":"query","description":"Longitude in WGS 84 decimal degrees; +180 is the same meridian as -180 and falls in zone 1. A point exactly on a zone boundary belongs to the zone east of it, so lng=6 is zone 32.","required":true,"schema":{"type":"number","minimum":-180,"maximum":180},"example":15.6267,"x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["system","zone"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"system,zone"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["utmValid"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"utmValid"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UtmMgrsZoneEnvelope"},{"$ref":"#/components/schemas/UtmMgrsZoneRecord"}]},"example":{"data":{"system":"utm","zone":33,"band":"X","gridZoneDesignator":"33X","hemisphere":"north","centralMeridian":15,"westDegrees":9,"eastDegrees":21,"southDegrees":72,"northDegrees":84,"widthDegrees":12,"heightDegrees":12,"epsg":32633,"exception":"svalbard","exceptionNote":"NGA.STND.0037 Table 8: between 72°N and 84°N, zones 32, 34 and 36 do not exist; zone 31 covers 0°–9°E, 33 covers 9°–21°E, 35 covers 21°–33°E and 37 covers 33°–42°E. The central meridians do not move.","naturalZoneWithoutException":33,"utmValid":true},"meta":{"endpoint":"utm-mgrs","route":"/zone","params":{"lat":78.2232,"lng":15.6267},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for UTM, UPS and MGRS coordinate conversion","url":"https://randomapi.dev/apis/utm-mgrs"},"x-randomapi-kind":"real","x-randomapi-mode":"compute"}},"/api/utm-mgrs/grid-zones":{"get":{"operationId":"get_utm_mgrs_grid_zones","tags":["geo"],"summary":"The complete index of MGRS grid zone designations","description":"All 1,197 UTM grid zone designation areas (NGA.STND.0037 §3-2b) plus the four polar UPS areas, computed from the standard's own rules. Ordered by band letter A–Z, which is geographic south to north, then by zone ascending. A response returns at most 100 rows — use offset to page. Authoritative sources: NGA.STND.0037 v2.0.0 — Universal Grids and Grid Reference Systems (2014-02-28); IOGP Guidance Note 7-2 (2019) — Transverse Mercator (JHS) and Polar Stereographic variant A formulas; Karney (2011), Transverse Mercator with an accuracy of a few nanometers — convergence and scale; NGA.STND.0036 — World Geodetic System 1984 ellipsoid parameters.","parameters":[{"name":"zone","in":"query","description":"Keep only designations for this UTM zone. Zone 32 has no row in band X, where it does not exist.","required":false,"schema":{"type":"integer","minimum":1,"maximum":60},"example":32,"x-randomapi-param-group":"route"},{"name":"band","in":"query","description":"Keep only designations in this band or polar area: C–X for UTM, A/B/Y/Z for UPS. Case-insensitive.","required":false,"schema":{"type":"string","minLength":1,"maxLength":1},"example":"V","x-randomapi-param-group":"route"},{"name":"system","in":"query","description":"Keep only UTM designations or only the four polar UPS areas.","required":false,"schema":{"type":"string","enum":["utm","ups"]},"example":"ups","x-randomapi-param-group":"route"},{"name":"exceptionsOnly","in":"query","description":"Keep only the six designations whose extents come from Tables 7 and 8: 31V, 32V, 31X, 33X, 35X and 37X. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"offset","in":"query","description":"Skip this many matching designations before returning up to 100. A warning reports the total match count and the next offset.","required":false,"schema":{"type":"integer","minimum":0,"default":0},"example":1100,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"Limit the number of returned records (1–100). Defaults to 100.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"example":3,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["gridZoneDesignator","system"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"gridZoneDesignator,system"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["exceptionNote"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"exceptionNote"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UtmMgrsGridZonesEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/UtmMgrsGridZonesRecord"}}]},"example":{"data":[{"gridZoneDesignator":"33X","system":"utm","zone":33,"band":"X","hemisphere":"north","centralMeridian":15,"westDegrees":9,"eastDegrees":21,"southDegrees":72,"northDegrees":84,"widthDegrees":12,"heightDegrees":12,"epsg":32633,"exception":"svalbard","exceptionNote":"NGA.STND.0037 Table 8: between 72°N and 84°N, zones 32, 34 and 36 do not exist; zone 31 covers 0°–9°E, 33 covers 9°–21°E, 35 covers 21°–33°E and 37 covers 33°–42°E. The central meridians do not move."}],"meta":{"endpoint":"utm-mgrs","route":"/grid-zones","count":1,"params":{"exceptionsOnly":false,"offset":0},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"gridZoneDesignator\":\"33X\",\"system\":\"utm\",\"zone\":33,\"band\":\"X\",\"hemisphere\":\"north\",\"centralMeridian\":15,\"westDegrees\":9,\"eastDegrees\":21,\"southDegrees\":72,\"northDegrees\":84,\"widthDegrees\":12,\"heightDegrees\":12,\"epsg\":32633,\"exception\":\"svalbard\",\"exceptionNote\":\"NGA.STND.0037 Table 8: between 72°N and 84°N, zones 32, 34 and 36 do not exist; zone 31 covers 0°–9°E, 33 covers 9°–21°E, 35 covers 21°–33°E and 37 covers 33°–42°E. The central meridians do not move.\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for UTM, UPS and MGRS coordinate conversion","url":"https://randomapi.dev/apis/utm-mgrs"},"x-randomapi-kind":"real","x-randomapi-mode":"list"}},"/api/uuids":{"get":{"operationId":"get_uuids_root","tags":["internet"],"summary":"Generate random identifiers in a chosen format","description":"Generate seed-reproducible UUIDs and compact IDs, or inspect any canonical UUID's RFC 9562 variant, version and UUIDv7 timestamp fields.","parameters":[{"name":"type","in":"query","description":"ID format: uuid4 (random RFC 9562 v4), uuid7 (v7 layout with a seed-derived timestamp), ulid (26-char Crockford base32), nanoid (URL-safe), or hex.","required":false,"schema":{"type":"string","enum":["uuid4","uuid7","ulid","nanoid","hex"],"default":"uuid4"},"example":"nanoid","x-randomapi-param-group":"route"},{"name":"length","in":"query","description":"Output length in characters — applies to nanoid (default 21) and hex (default 64) only. The other formats are fixed-width; supplying it for them adds a warning.","required":false,"schema":{"type":"integer","minimum":4,"maximum":128},"example":32,"x-randomapi-param-group":"route"},{"name":"uppercase","in":"query","description":"Return values in uppercase. UUIDs and hex are lowercase by default; ULIDs are always uppercase. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["value","type"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"value,type"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["type"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"type"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UuidsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/UuidsRootRecord"}}]},"example":{"data":[{"value":"3f8a2c4e-9b1d-4e6f-8a2c-5d7b9e1f3a6c","type":"uuid4"}],"meta":{"endpoint":"uuids","count":1,"seed":42,"params":{"type":"uuid4","uppercase":false},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"value\":\"3f8a2c4e-9b1d-4e6f-8a2c-5d7b9e1f3a6c\",\"type\":\"uuid4\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for UUIDs & IDs","url":"https://randomapi.dev/apis/uuids"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/uuids/inspect":{"get":{"operationId":"get_uuids_inspect","tags":["internet"],"summary":"Inspect one UUID's RFC 9562 layout and UUIDv7 timestamp","description":"Accepts canonical 8-4-4-4-12 hexadecimal UUID text (case-insensitive). Braced, URN-prefixed and malformed values return 400 rather than being guessed.","parameters":[{"name":"value","in":"query","description":"Canonical UUID text with five hyphen-separated hexadecimal groups; uppercase input is accepted.","required":true,"schema":{"type":"string","minLength":36,"maxLength":36},"example":"017f22e2-79b0-7cc3-98c4-dc0c0c07398f","x-randomapi-param-group":"route"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["input","canonical"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"input,canonical"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["timestamp"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"timestamp"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A singular JSON response.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UuidsInspectEnvelope"},{"$ref":"#/components/schemas/UuidsInspectRecord"}]},"example":{"data":{"input":"017f22e2-79b0-7cc3-98c4-dc0c0c07398f","canonical":"017f22e2-79b0-7cc3-98c4-dc0c0c07398f","isNil":false,"isMax":false,"variant":"rfc9562","isRfc9562":true,"version":7,"versionName":"Unix time-based","unixMilliseconds":"1645557742000","timestamp":"2022-02-22T19:22:22.000Z"},"meta":{"endpoint":"uuids","route":"/inspect","params":{"value":"017f22e2-79b0-7cc3-98c4-dc0c0c07398f"},"generatedAt":"2026-07-10T12:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for UUIDs & IDs","url":"https://randomapi.dev/apis/uuids"},"x-randomapi-kind":"mock","x-randomapi-mode":"compute"}},"/api/vehicles":{"get":{"operationId":"get_vehicles_root","tags":["commerce"],"summary":"Generate coherent fake vehicles","description":"Coherent fake vehicles: real models per make, era-correct years, standards-valid VINs (ISO 3779 check digit) — filter by make, body type, fuel and year.","parameters":[{"name":"make","in":"query","description":"Only this manufacturer — models are guaranteed to be real models of that make. Omit for a mix.","required":false,"schema":{"type":"string","enum":["toyota","volkswagen","ford","bmw","mercedes","audi","honda","hyundai","kia","volvo","tesla","peugeot"]},"example":"toyota","x-randomapi-param-group":"route"},{"name":"type","in":"query","description":"Only this body type (models are filtered to genuinely matching ones).","required":false,"schema":{"type":"string","enum":["sedan","suv","hatchback","estate","coupe","van","pickup"]},"example":"suv","x-randomapi-param-group":"route"},{"name":"fuel","in":"query","description":"Only this fuel. Combinations no real model offers (e.g. tesla + petrol) are a 400.","required":false,"schema":{"type":"string","enum":["petrol","diesel","hybrid","electric"]},"example":"electric","x-randomapi-param-group":"route"},{"name":"minYear","in":"query","description":"Earliest model year (inclusive). Each model additionally never predates its real launch era.","required":false,"schema":{"type":"integer","minimum":1990,"maximum":2027,"default":2005},"example":2010,"x-randomapi-param-group":"route"},{"name":"maxYear","in":"query","description":"Latest model year (inclusive). Defaults to the current year. Must be ≥ minYear.","required":false,"schema":{"type":"integer","minimum":1990,"maximum":2027},"example":2015,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["make","model"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"make,model"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["color"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"color"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/VehiclesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/VehiclesRootRecord"}}]},"example":{"data":[{"make":"Toyota","model":"RAV4","year":2019,"type":"suv","fuel":"hybrid","vin":"JTDKN3DU9K5866312","licensePlate":"KJR-482","color":"Silver"}],"meta":{"endpoint":"vehicles","count":1,"seed":42,"params":{"minYear":2005},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"make\":\"Toyota\",\"model\":\"RAV4\",\"year\":2019,\"type\":\"suv\",\"fuel\":\"hybrid\",\"vin\":\"JTDKN3DU9K5866312\",\"licensePlate\":\"KJR-482\",\"color\":\"Silver\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Vehicles","url":"https://randomapi.dev/apis/vehicles"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/weather":{"get":{"operationId":"get_weather_root","tags":["geo"],"summary":"Generate physically coherent mock weather records","description":"Weather-shaped UI test data — NOT a forecast. Physically coherent records per climate profile: snow only below 4°C, storms bring wind, exact °F conversion.","parameters":[{"name":"climate","in":"query","description":"Climate profile — temperature and humidity stay inside its band (tropical 22–36°C/60–100%, temperate −5–28°C, arctic −40–8°C, desert 8–48°C/5–30%). Omit for a mix.","required":false,"schema":{"type":"string","enum":["tropical","temperate","arctic","desert"]},"example":"tropical","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["condition","temperatureC"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"condition,temperatureC"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["climate"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"climate"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/WeatherRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/WeatherRootRecord"}}]},"example":{"data":[{"condition":"partly-cloudy","temperatureC":23.5,"temperatureF":74.3,"humidity":68,"windKmh":14,"windDirection":"SW","pressureHpa":1012,"uvIndex":7,"climate":"tropical"}],"meta":{"endpoint":"weather","count":1,"seed":42,"params":{},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"condition\":\"partly-cloudy\",\"temperatureC\":23.5,\"temperatureF\":74.3,\"humidity\":68,\"windKmh\":14,\"windDirection\":\"SW\",\"pressureHpa\":1012,\"uvIndex\":7,\"climate\":\"tropical\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Weather (mock)","url":"https://randomapi.dev/apis/weather"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/webhook-deliveries":{"get":{"operationId":"get_webhook_deliveries_root","tags":["developer"],"summary":"Generate bounded fictional webhook delivery histories","description":"Generate coherent webhook delivery histories with safe destinations, bounded retries, status-specific attempts and event-shaped payloads.","parameters":[{"name":"eventType","in":"query","description":"Only generate this event payload shape. Omit for a mix.","required":false,"schema":{"type":"string","enum":["user.created","order.paid","invoice.overdue","file.processed"]},"example":"order.paid","x-randomapi-param-group":"route"},{"name":"status","in":"query","description":"Pin the lifecycle to delivered, retrying or terminal failed.","required":false,"schema":{"type":"string","enum":["delivered","retrying","failed"]},"example":"retrying","x-randomapi-param-group":"route"},{"name":"attemptCount","in":"query","description":"Exact attempts already made. Must be compatible with status and retryLimit.","required":false,"schema":{"type":"integer","minimum":1,"maximum":6},"example":2,"x-randomapi-param-group":"route"},{"name":"retryLimit","in":"query","description":"Maximum attempts before terminal failure. Bounded to six.","required":false,"schema":{"type":"integer","minimum":1,"maximum":6,"default":5},"example":4,"x-randomapi-param-group":"route"},{"name":"from","in":"query","description":"Earliest event time, inclusive. With only from, to resolves 30 elapsed days later; with neither, defaults 30 UTC days before today. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-01","x-randomapi-param-group":"route"},{"name":"to","in":"query","description":"Latest event time, inclusive. With only to, from resolves 30 elapsed days earlier; with neither, defaults to today's UTC end. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss[.SSS] with Z or an explicit numeric offset; seconds are 00–59 and fractional seconds are limited to three digits.","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"example":"2026-01-31T23:59:59.999Z","x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["id","eventId"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"id,eventId"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["attempts"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"attempts"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/WebhookDeliveriesRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/WebhookDeliveriesRootRecord"}}]},"example":{"data":[{"id":"whd_5c2f8ad001b7_00","eventId":"evt_99f1d782d834","eventType":"order.paid","eventAt":"2026-01-12T10:15:00.000Z","destination":"https://hooks.example.com/webhooks/whd_demo","status":"retrying","attemptCount":2,"retryLimit":5,"nextRetryAt":"2026-01-12T10:20:00.000Z","signature":"sha256=0123456789abcdef","headers":{"content-type":"application/json","x-example-event":"order.paid"},"payload":{"orderId":"ord_demo","amountMinor":4200,"currency":"USD"},"attempts":[{"number":1,"attemptedAt":"2026-01-12T10:15:01.000Z","statusCode":503,"durationMs":245,"outcome":"failure","error":"destination returned a temporary server error"}]}],"meta":{"endpoint":"webhook-deliveries","count":1,"seed":42,"params":{"retryLimit":5},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"id\":\"whd_5c2f8ad001b7_00\",\"eventId\":\"evt_99f1d782d834\",\"eventType\":\"order.paid\",\"eventAt\":\"2026-01-12T10:15:00.000Z\",\"destination\":\"https://hooks.example.com/webhooks/whd_demo\",\"status\":\"retrying\",\"attemptCount\":2,\"retryLimit\":5,\"nextRetryAt\":\"2026-01-12T10:20:00.000Z\",\"signature\":\"sha256=0123456789abcdef\",\"headers\":{\"content-type\":\"application/json\",\"x-example-event\":\"order.paid\"},\"payload\":{\"orderId\":\"ord_demo\",\"amountMinor\":4200,\"currency\":\"USD\"},\"attempts\":[{\"number\":1,\"attemptedAt\":\"2026-01-12T10:15:01.000Z\",\"statusCode\":503,\"durationMs\":245,\"outcome\":\"failure\",\"error\":\"destination returned a temporary server error\"}]}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Webhook delivery fixtures","url":"https://randomapi.dev/apis/webhook-deliveries"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}},"/api/words":{"get":{"operationId":"get_words_root","tags":["text"],"summary":"Generate random English words","description":"Random English words by part of speech — nouns, verbs, adjectives or adverbs — with working length filters, seedable output and honest 400s when nothing fits.","parameters":[{"name":"type","in":"query","description":"Part of speech to generate. 'any' picks one at random per word — see the partOfSpeech field for what you got.","required":false,"schema":{"type":"string","enum":["noun","verb","adjective","adverb","any"],"default":"any"},"example":"noun","x-randomapi-param-group":"route"},{"name":"minLength","in":"query","description":"Minimum word length in characters (inclusive). Must be ≤ maxLength.","required":false,"schema":{"type":"integer","minimum":1,"maximum":30,"default":1},"example":3,"x-randomapi-param-group":"route"},{"name":"maxLength","in":"query","description":"Maximum word length in characters (inclusive). If no word of the chosen type fits the range, the request fails with a 400 — never a near-miss word.","required":false,"schema":{"type":"integer","minimum":1,"maximum":30,"default":30},"example":8,"x-randomapi-param-group":"route"},{"name":"count","in":"query","description":"How many records to generate (1–100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":3,"x-randomapi-param-group":"universal"},{"name":"seed","in":"query","description":"Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). Any integer is accepted and normalized to an unsigned 32-bit seed.","required":false,"schema":{"type":"integer"},"example":42,"x-randomapi-param-group":"universal"},{"name":"fields","in":"query","description":"Return only these fields (comma-separated). Mutually exclusive with 'exclude'. Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"},"minItems":1},"example":["word","partOfSpeech"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"word,partOfSpeech"},{"name":"exclude","in":"query","description":"Return all fields except these (comma-separated). Serialized as one comma-separated query value.","required":false,"schema":{"type":"array","items":{"type":"string"}},"example":["partOfSpeech"],"style":"form","explode":false,"x-randomapi-param-group":"universal","x-randomapi-query-example":"partOfSpeech"},{"name":"format","in":"query","description":"Response format: json envelope, ndjson (one record per line) or csv.","required":false,"schema":{"type":"string","enum":["json","ndjson","csv"],"default":"json"},"example":"csv","x-randomapi-param-group":"universal"},{"name":"pretty","in":"query","description":"Pretty-print the JSON response. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"},{"name":"unwrap","in":"query","description":"Drop the envelope: return the raw array/object without data/meta wrapper. Bare, true/false, 1/0, yes/no and on/off are accepted case-insensitively.","required":false,"schema":{"type":"boolean","default":false},"example":true,"allowEmptyValue":true,"x-randomapi-param-group":"universal"}],"responses":{"200":{"description":"A list response in the selected format.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/WordsRootEnvelope"},{"type":"array","items":{"$ref":"#/components/schemas/WordsRootRecord"}}]},"example":{"data":[{"word":"harvest","partOfSpeech":"noun"}],"meta":{"endpoint":"words","count":1,"seed":42,"params":{"type":"any","minLength":1,"maxLength":30},"generatedAt":"2026-07-10T12:00:00.000Z"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One JSON record per line. The JSON envelope and meta block are omitted."},"example":"{\"word\":\"harvest\",\"partOfSpeech\":\"noun\"}\n"},"text/csv":{"schema":{"type":"string","description":"RFC 4180-style CSV with CRLF rows; nested objects use dot-keys and arrays use JSON cells."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}},"externalDocs":{"description":"Human documentation for Random words","url":"https://randomapi.dev/apis/words"},"x-randomapi-kind":"mock","x-randomapi-mode":"list"}}},"components":{"schemas":{"BadRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["BAD_REQUEST"]},"message":{"type":"string"},"status":{"type":"integer","enum":[400]},"details":{"type":"object","additionalProperties":true}},"required":["code","message","status"],"additionalProperties":false}},"required":["error"],"additionalProperties":false},"NotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["NOT_FOUND"]},"message":{"type":"string"},"status":{"type":"integer","enum":[404]},"details":{"type":"object","additionalProperties":true}},"required":["code","message","status"],"additionalProperties":false}},"required":["error"],"additionalProperties":false},"RateLimitedError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["RATE_LIMITED"]},"message":{"type":"string"},"status":{"type":"integer","enum":[429]},"details":{"type":"object","additionalProperties":true}},"required":["code","message","status"],"additionalProperties":false}},"required":["error"],"additionalProperties":false},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["INTERNAL"]},"message":{"type":"string"},"status":{"type":"integer","enum":[500]},"details":{"type":"object","additionalProperties":true}},"required":["code","message","status"],"additionalProperties":false}},"required":["error"],"additionalProperties":false},"AccessControlRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Distinct fictional decision ID.","example":"decision_fixture_0_a12b34c56d78"},"model":{"type":"string","description":"rbac | abac fixture policy model.","example":"rbac"},"subject":{"type":"object","additionalProperties":true,"description":"Synthetic subject ID and role.","example":{"id":"subject_fixture_1","role":"editor"}},"resource":{"type":"object","additionalProperties":true,"description":"Synthetic resource ID, type and ownership context.","example":{"id":"document_fixture_1","type":"document","ownedBySubject":true}},"action":{"type":"string","description":"Requested fixture action.","example":"update"},"tenantState":{"type":"string","description":"active | suspended context.","example":"active"},"outcome":{"type":"string","description":"allow | deny, derived from the documented fixture policy.","example":"allow"},"reasonCode":{"type":"string","description":"Stable explanation code matching the verdict.","example":"role_permission"},"matchedRules":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Bounded policy rules that explain the verdict.","example":[{"id":"role-editor","effect":"allow","description":"Role editor grants update on document."}]},"evaluatedAt":{"type":"string","format":"date-time","description":"Decision time at or before the replay anchor.","example":"2026-07-10T12:00:00.000Z"}},"additionalProperties":false},"AccessControlRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["access-control"]},"params":{"type":"object","properties":{"model":{"type":"string","enum":["rbac","abac","any"]},"role":{"type":"string","enum":["owner","admin","editor","billing","viewer","any"]},"resource":{"type":"string","enum":["document","project","invoice","deployment","secret","any"]},"action":{"type":"string","enum":["read","create","update","delete","approve","manage","any"]},"tenantState":{"type":"string","enum":["active","suspended","any"]},"ownsResource":{"type":"boolean"},"outcome":{"type":"string","enum":["allow","deny","any"]},"windowDays":{"type":"integer","minimum":1,"maximum":90},"asOf":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["model","role","resource","action","tenantState","outcome","windowDays"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"AccessControlRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AccessControlRootRecord"}},"meta":{"$ref":"#/components/schemas/AccessControlRootMeta"}},"required":["data","meta"],"additionalProperties":false},"AccessControlEvaluateRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Distinct fictional decision ID.","example":"decision_fixture_0_a12b34c56d78"},"model":{"type":"string","description":"rbac | abac fixture policy model.","example":"rbac"},"subject":{"type":"object","additionalProperties":true,"description":"Synthetic subject ID and role.","example":{"id":"subject_fixture_1","role":"editor"}},"resource":{"type":"object","additionalProperties":true,"description":"Synthetic resource ID, type and ownership context.","example":{"id":"document_fixture_1","type":"document","ownedBySubject":true}},"action":{"type":"string","description":"Requested fixture action.","example":"update"},"tenantState":{"type":"string","description":"active | suspended context.","example":"active"},"outcome":{"type":"string","description":"allow | deny, derived from the documented fixture policy.","example":"allow"},"reasonCode":{"type":"string","description":"Stable explanation code matching the verdict.","example":"role_permission"},"matchedRules":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Bounded policy rules that explain the verdict.","example":[{"id":"role-editor","effect":"allow","description":"Role editor grants update on document."}]},"evaluatedAt":{"type":"string","format":"date-time","description":"Decision time at or before the replay anchor.","example":"2026-07-10T12:00:00.000Z"}},"additionalProperties":false},"AccessControlEvaluateMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["access-control"]},"params":{"type":"object","properties":{"model":{"type":"string","enum":["rbac","abac"]},"role":{"type":"string","enum":["owner","admin","editor","billing","viewer"]},"resource":{"type":"string","enum":["document","project","invoice","deployment","secret"]},"action":{"type":"string","enum":["read","create","update","delete","approve","manage"]},"tenantState":{"type":"string","enum":["active","suspended"]},"ownsResource":{"type":"boolean"},"asOf":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["model","role","resource","action","tenantState","ownsResource"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/evaluate"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"AccessControlEvaluateEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/AccessControlEvaluateRecord"},"meta":{"$ref":"#/components/schemas/AccessControlEvaluateMeta"}},"required":["data","meta"],"additionalProperties":false},"AddressFormatsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"countryCode":{"type":"string","description":"The region code as the metadata keys it. 249 are ISO 3166-1 officially assigned; `AC` and `TA` are exceptionally reserved and `XK` is user-assigned. `ZZ` — the fallback template, not a region — is reachable only through the lookup and render routes.","example":"GB"},"postalName":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"libaddressinput's own uppercase English postal label, verbatim. NOT an ISO 3166 name — dozens differ (`AX` is labelled `FINLAND`, `GG` and `JE` are both `CHANNEL ISLANDS`, `CZ` is `CZECH REP.`, `SZ` is `SWAZILAND`). Use `/api/countries/lookup?code=…` for the ISO name. Null only for `ZZ`.","example":"UNITED KINGDOM"},"format":{"type":"string","description":"The local-script line template verbatim, or the fallback template when the region declares none. `%`-tokens are components, `%n` is a line break, and everything else is literal text that prints as-is.","example":"%N%n%O%n%A%n%C%n%Z"},"templateLines":{"type":"array","items":{"type":"string"},"description":"`format` split on `%n` — the template as printed lines, tokens still in place.","example":["%N","%O","%A","%C","%Z"]},"latinFormat":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The region's alternative Latin-script template, verbatim. Declared by only 14 regions and null for the other 238; it is genuinely different from `format` for just 8 (CN, HK, JP, KP, KR, MO, TH, TW).","example":null},"usesDefaultFormat":{"type":"boolean","description":"True when `format` is the fallback template rather than one this region declares — the 54 regions that inherit `%N%n%O%n%A%n%C`, plus the `ZZ` row itself.","example":false},"fieldOrder":{"type":"array","items":{"type":"string"},"description":"The distinct components in template order, first occurrence winning — the same de-duplication `FormatInterpreter.getAddressFieldOrder` performs. This is the field order for a form. A component that appears twice in the template (Côte d'Ivoire's sorting code) is listed once here but still renders twice.","example":["recipient","organization","streetAddress","locality","postalCode"]},"requiredFields":{"type":"array","items":{"type":"string"},"description":"Components a valid address must carry, from the metadata's `require` value, ALWAYS beginning with `country` — exactly as `FormatInterpreter.getRequiredFields` seeds its set with `COUNTRY`. 157 regions carry exactly the fallback row's set (`country, streetAddress, locality`).","example":["country","streetAddress","locality","postalCode"]},"uppercaseFields":{"type":"array","items":{"type":"string"},"description":"Components the metadata's `upper` key marks for upper-casing. A HINT ONLY: no reference implementation in the repository reads this key, so `/render` never changes your casing. Empty array when the key is absent or present-but-empty — no fallback is applied.","example":["locality","postalCode"]},"adminAreaType":{"type":"string","description":"What the state/province level is called: one of area, county, department, district, do_si, emirate, island, oblast, parish, prefecture, province, state. Inherited from the fallback row when the region declares none, mirroring libaddressinput's own default-rule copy — which is why the United Kingdom reports `province`. That is faithful inheritance, not a bug: check `fieldOrder` before you render the field at all.","example":"province"},"adminAreaLabel":{"type":"string","description":"The English UI label libaddressinput ships for that concept.","example":"Province"},"localityType":{"type":"string","description":"What the city level is called: one of city, district, post_town, suburb.","example":"post_town"},"localityLabel":{"type":"string","description":"The English UI label for the locality level.","example":"Post Town"},"sublocalityType":{"type":"string","description":"What the neighbourhood level is called: one of district, neighborhood, suburb, townland, village_township.","example":"suburb"},"sublocalityLabel":{"type":"string","description":"The English UI label for the sublocality level.","example":"Suburb"},"postalCodeType":{"type":"string","description":"What the postal code is called: one of eircode, pin, postal, zip.","example":"postal"},"postalCodeLabel":{"type":"string","description":"The English UI label: Postal code, ZIP code, Eircode or Pincode.","example":"Postal code"},"postalCodePrefix":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The `postprefix` hint for pre-filling a postal-code input (15 regions: CH-, SE-, FI-, L-, FL-, AX-, \"AZ \" …). `/render` does NOT prepend it: where upstream wants it on the envelope it is already baked into the template as a literal, so Switzerland's template is `%O%n%N%n%A%nCH-%Z %C`.","example":null},"fieldWidths":{"type":"object","additionalProperties":true,"description":"One entry per component in `fieldOrder`, `\"short\"` or `\"long\"`, from `AddressField.getDefaultWidthType` (postal code and sorting code short, everything else long) with the region's `width_overrides` applied.","example":{"recipient":"long","organization":"long","streetAddress":"long","locality":"long","postalCode":"short"}},"defaultLanguage":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The `lang` key — the default BCP 47 language of the region's address data. Null where the metadata declares none.","example":null},"languages":{"type":"array","items":{"type":"string"},"description":"The `languages` key, split on the `~` separator `rule.cc` uses. Empty array when absent; nine regions list more than one (`CA` → en, fr; `ES` → es, ca, gl, eu).","example":[]}},"additionalProperties":false},"AddressFormatsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["address-formats"]},"params":{"type":"object","properties":{"requires":{"type":"string","enum":["adminArea","dependentLocality","locality","postalCode","streetAddress","any"]},"uses":{"type":"string","enum":["adminArea","dependentLocality","landmarkAffix","landmarkDescriptor","landmarkName","locality","organization","postalCode","recipient","sortingCode","streetAddress","any"]},"adminAreaType":{"type":"string","enum":["area","county","department","district","do_si","emirate","island","oblast","parish","prefecture","province","state","any"]},"postalCodeType":{"type":"string","enum":["eircode","pin","postal","zip","any"]},"hasLatinFormat":{"type":"boolean"},"usesDefaultFormat":{"type":"boolean"},"search":{"type":"string","minLength":2,"maxLength":60},"offset":{"type":"integer","minimum":0,"maximum":1000}},"required":["requires","uses","adminAreaType","postalCodeType","offset"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","count"],"additionalProperties":false},"AddressFormatsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AddressFormatsRootRecord"}},"meta":{"$ref":"#/components/schemas/AddressFormatsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"AddressFormatsLookupRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"countryCode":{"type":"string","description":"The region code as the metadata keys it. 249 are ISO 3166-1 officially assigned; `AC` and `TA` are exceptionally reserved and `XK` is user-assigned. `ZZ` — the fallback template, not a region — is reachable only through the lookup and render routes.","example":"GB"},"postalName":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"libaddressinput's own uppercase English postal label, verbatim. NOT an ISO 3166 name — dozens differ (`AX` is labelled `FINLAND`, `GG` and `JE` are both `CHANNEL ISLANDS`, `CZ` is `CZECH REP.`, `SZ` is `SWAZILAND`). Use `/api/countries/lookup?code=…` for the ISO name. Null only for `ZZ`.","example":"UNITED KINGDOM"},"format":{"type":"string","description":"The local-script line template verbatim, or the fallback template when the region declares none. `%`-tokens are components, `%n` is a line break, and everything else is literal text that prints as-is.","example":"%N%n%O%n%A%n%C%n%Z"},"templateLines":{"type":"array","items":{"type":"string"},"description":"`format` split on `%n` — the template as printed lines, tokens still in place.","example":["%N","%O","%A","%C","%Z"]},"latinFormat":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The region's alternative Latin-script template, verbatim. Declared by only 14 regions and null for the other 238; it is genuinely different from `format` for just 8 (CN, HK, JP, KP, KR, MO, TH, TW).","example":null},"usesDefaultFormat":{"type":"boolean","description":"True when `format` is the fallback template rather than one this region declares — the 54 regions that inherit `%N%n%O%n%A%n%C`, plus the `ZZ` row itself.","example":false},"fieldOrder":{"type":"array","items":{"type":"string"},"description":"The distinct components in template order, first occurrence winning — the same de-duplication `FormatInterpreter.getAddressFieldOrder` performs. This is the field order for a form. A component that appears twice in the template (Côte d'Ivoire's sorting code) is listed once here but still renders twice.","example":["recipient","organization","streetAddress","locality","postalCode"]},"requiredFields":{"type":"array","items":{"type":"string"},"description":"Components a valid address must carry, from the metadata's `require` value, ALWAYS beginning with `country` — exactly as `FormatInterpreter.getRequiredFields` seeds its set with `COUNTRY`. 157 regions carry exactly the fallback row's set (`country, streetAddress, locality`).","example":["country","streetAddress","locality","postalCode"]},"uppercaseFields":{"type":"array","items":{"type":"string"},"description":"Components the metadata's `upper` key marks for upper-casing. A HINT ONLY: no reference implementation in the repository reads this key, so `/render` never changes your casing. Empty array when the key is absent or present-but-empty — no fallback is applied.","example":["locality","postalCode"]},"adminAreaType":{"type":"string","description":"What the state/province level is called: one of area, county, department, district, do_si, emirate, island, oblast, parish, prefecture, province, state. Inherited from the fallback row when the region declares none, mirroring libaddressinput's own default-rule copy — which is why the United Kingdom reports `province`. That is faithful inheritance, not a bug: check `fieldOrder` before you render the field at all.","example":"province"},"adminAreaLabel":{"type":"string","description":"The English UI label libaddressinput ships for that concept.","example":"Province"},"localityType":{"type":"string","description":"What the city level is called: one of city, district, post_town, suburb.","example":"post_town"},"localityLabel":{"type":"string","description":"The English UI label for the locality level.","example":"Post Town"},"sublocalityType":{"type":"string","description":"What the neighbourhood level is called: one of district, neighborhood, suburb, townland, village_township.","example":"suburb"},"sublocalityLabel":{"type":"string","description":"The English UI label for the sublocality level.","example":"Suburb"},"postalCodeType":{"type":"string","description":"What the postal code is called: one of eircode, pin, postal, zip.","example":"postal"},"postalCodeLabel":{"type":"string","description":"The English UI label: Postal code, ZIP code, Eircode or Pincode.","example":"Postal code"},"postalCodePrefix":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The `postprefix` hint for pre-filling a postal-code input (15 regions: CH-, SE-, FI-, L-, FL-, AX-, \"AZ \" …). `/render` does NOT prepend it: where upstream wants it on the envelope it is already baked into the template as a literal, so Switzerland's template is `%O%n%N%n%A%nCH-%Z %C`.","example":null},"fieldWidths":{"type":"object","additionalProperties":true,"description":"One entry per component in `fieldOrder`, `\"short\"` or `\"long\"`, from `AddressField.getDefaultWidthType` (postal code and sorting code short, everything else long) with the region's `width_overrides` applied.","example":{"recipient":"long","organization":"long","streetAddress":"long","locality":"long","postalCode":"short"}},"defaultLanguage":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The `lang` key — the default BCP 47 language of the region's address data. Null where the metadata declares none.","example":null},"languages":{"type":"array","items":{"type":"string"},"description":"The `languages` key, split on the `~` separator `rule.cc` uses. Empty array when absent; nine regions list more than one (`CA` → en, fr; `ES` → es, ca, gl, eu).","example":[]}},"additionalProperties":false},"AddressFormatsLookupMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["address-formats"]},"params":{"type":"object","properties":{"country":{"type":"string","minLength":2,"maxLength":2}},"required":["country"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/lookup"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"AddressFormatsLookupEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/AddressFormatsLookupRecord"},"meta":{"$ref":"#/components/schemas/AddressFormatsLookupMeta"}},"required":["data","meta"],"additionalProperties":false},"AddressFormatsRenderRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"countryCode":{"type":"string","description":"The resolved, uppercased region code.","example":"DE"},"postalName":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"libaddressinput's uppercase postal label. Not an ISO 3166 name.","example":"GERMANY"},"script":{"type":"string","description":"The requested script, resolved: `local` or `latin`.","example":"local"},"format":{"type":"string","description":"The template actually used.","example":"%N%n%O%n%A%n%Z %C"},"latinFormatAvailable":{"type":"boolean","description":"Whether the region declares a Latin-script template. When `script=latin` and this is false, the region's own local template was used instead.","example":false},"usesDefaultFormat":{"type":"boolean","description":"Whether the template used is the fallback one.","example":false},"lines":{"type":"array","items":{"type":"string"},"description":"The rendered envelope lines. Empty lines are dropped, casing is never changed, and the destination country is not appended.","example":["Erika Mustermann","Musterstrasse 12","10115 Berlin"]},"oneLine":{"type":"string","description":"`lines` joined with `lineSeparator`.","example":"Erika Mustermann, Musterstrasse 12, 10115 Berlin"},"lineSeparator":{"type":"string","description":"The separator used for `oneLine`. Derived from the region's own `defaultLanguage` (or forced to `\", \"` by `script=latin`) — upstream keys this on the address's language tag, which this route has no input for, so the substitution is ours.","example":", "},"missingRequired":{"type":"array","items":{"type":"string"},"description":"Required components you did not supply, in the metadata's own letter order. `country` is excluded — it is always supplied.","example":[]},"unusedComponents":{"type":"array","items":{"type":"string"},"description":"Components you supplied that the template actually used has no slot for — the fields your form is collecting for nothing. `street2` counts as `streetAddress`.","example":["adminArea"]},"uppercaseFields":{"type":"array","items":{"type":"string"},"description":"The `upper` hint, for your own house style. Never applied here.","example":[]},"complete":{"type":"boolean","description":"`missingRequired` is empty. Says nothing about whether the address is real or deliverable.","example":true}},"additionalProperties":false},"AddressFormatsRenderMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["address-formats"]},"params":{"type":"object","properties":{"country":{"type":"string","minLength":2,"maxLength":2},"recipient":{"type":"string","maxLength":200},"organization":{"type":"string","maxLength":200},"street":{"type":"string","maxLength":200},"street2":{"type":"string","maxLength":200},"dependentLocality":{"type":"string","maxLength":120},"locality":{"type":"string","maxLength":120},"adminArea":{"type":"string","maxLength":120},"postalCode":{"type":"string","maxLength":40},"sortingCode":{"type":"string","maxLength":40},"script":{"type":"string","enum":["local","latin"]}},"required":["country","script"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/render"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"AddressFormatsRenderEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/AddressFormatsRenderRecord"},"meta":{"$ref":"#/components/schemas/AddressFormatsRenderMeta"}},"required":["data","meta"],"additionalProperties":false},"AddressesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"street":{"type":"string","description":"Street name + number, formatted the local way (number-first in the US, number-last in Denmark).","example":"883 Maple Avenue"},"city":{"type":"string","description":"City name from the locale's data.","example":"Portland"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"State / region / prefecture; null where the locale has no state-level data.","example":"Oregon"},"zipCode":{"type":"string","description":"Postal code in the country's format (5-digit US ZIP, 4-digit Danish postnummer, NNN-NNNN Japanese…).","example":"97205"},"country":{"type":"string","description":"English country name — always the locale's own country.","example":"United States"},"countryCode":{"type":"string","description":"Always matches the locale (en→US, da→DK, pt→BR…).","example":"US"},"latitude":{"type":"number","description":"6-decimal latitude inside the country's rough bounding box (approximate — not the street's real position).","example":45.515209},"longitude":{"type":"number","description":"6-decimal longitude inside the country's rough bounding box.","example":-122.678437},"formatted":{"type":"string","description":"The parts assembled into one line in the country's postal order — always contains street and city verbatim.","example":"883 Maple Avenue, Portland, Oregon 97205, United States"}},"additionalProperties":false},"AddressesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["addresses"]},"params":{"type":"object","properties":{},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295},"locale":{"type":"string","enum":["en","da","de","fr","es","it","pt","ja"]}},"required":["endpoint","params","generatedAt","count","seed","locale"],"additionalProperties":false},"AddressesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AddressesRootRecord"}},"meta":{"$ref":"#/components/schemas/AddressesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"AirportsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"name":{"type":"string","description":"Airport name exactly as recorded in the OurAirports snapshot.","example":"Copenhagen Kastrup Airport"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Primary municipality served, as recorded by OurAirports; it need not be the municipality where the airport is physically located. null when the snapshot records none.","example":"Copenhagen"},"country":{"type":"string","description":"Common English country or territory name.","example":"Denmark"},"countryCode":{"type":"string","description":"Two-letter country or territory code.","example":"DK"},"iata":{"type":"string","description":"Three-letter IATA airport code; unique across the snapshot.","example":"CPH"},"icao":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Four-letter ICAO location indicator, or null for the airports the snapshot has no ICAO code for.","example":"EKCH"},"ident":{"type":"string","description":"OurAirports identifier — the ICAO code when one exists, otherwise a national or OurAirports-assigned id such as 5A8 or AG-0001. Always unique and always present.","example":"EKCH"},"type":{"type":"string","description":"OurAirports size classification: large_airport, medium_airport, small_airport, seaplane_base, heliport.","example":"large_airport"},"latitude":{"type":"number","description":"Airport latitude in WGS84 decimal degrees (positive north), rounded to 6 decimals.","example":55.617901},"longitude":{"type":"number","description":"Airport longitude in WGS84 decimal degrees (positive east), rounded to 6 decimals.","example":12.656},"elevationFt":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Airport elevation above mean sea level in feet; negative values are below sea level, null when the snapshot records none.","example":17},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IANA time zone id derived from the pinned coordinates at snapshot time and validated against the airport's ISO country; approximate near zone boundaries and null for the airports where the derivation could not be confirmed.","example":"Europe/Copenhagen"}},"additionalProperties":false},"AirportsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["airports"]},"params":{"type":"object","properties":{"country":{"type":"string"},"search":{"type":"string"},"type":{"type":"string","enum":["any","large_airport","medium_airport","small_airport","seaplane_base","heliport"]},"minRunwayFt":{"type":"integer","minimum":1,"maximum":20000},"offset":{"type":"integer","minimum":0,"maximum":100000}},"required":["type","offset"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","count"],"additionalProperties":false},"AirportsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AirportsRootRecord"}},"meta":{"$ref":"#/components/schemas/AirportsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"AirportsLookupRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"name":{"type":"string","description":"Airport name exactly as recorded in the OurAirports snapshot.","example":"Copenhagen Kastrup Airport"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Primary municipality served, as recorded by OurAirports; it need not be the municipality where the airport is physically located. null when the snapshot records none.","example":"Copenhagen"},"country":{"type":"string","description":"Common English country or territory name.","example":"Denmark"},"countryCode":{"type":"string","description":"Two-letter country or territory code.","example":"DK"},"iata":{"type":"string","description":"Three-letter IATA airport code; unique across the snapshot.","example":"CPH"},"icao":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Four-letter ICAO location indicator, or null for the airports the snapshot has no ICAO code for.","example":"EKCH"},"ident":{"type":"string","description":"OurAirports identifier — the ICAO code when one exists, otherwise a national or OurAirports-assigned id such as 5A8 or AG-0001. Always unique and always present.","example":"EKCH"},"type":{"type":"string","description":"OurAirports size classification: large_airport, medium_airport, small_airport, seaplane_base, heliport.","example":"large_airport"},"latitude":{"type":"number","description":"Airport latitude in WGS84 decimal degrees (positive north), rounded to 6 decimals.","example":55.617901},"longitude":{"type":"number","description":"Airport longitude in WGS84 decimal degrees (positive east), rounded to 6 decimals.","example":12.656},"elevationFt":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Airport elevation above mean sea level in feet; negative values are below sea level, null when the snapshot records none.","example":17},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IANA time zone id derived from the pinned coordinates at snapshot time and validated against the airport's ISO country; approximate near zone boundaries and null for the airports where the derivation could not be confirmed.","example":"Europe/Copenhagen"}},"additionalProperties":false},"AirportsLookupMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["airports"]},"params":{"type":"object","properties":{"code":{"type":"string","minLength":3,"maxLength":7}},"required":["code"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/lookup"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"AirportsLookupEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/AirportsLookupRecord"},"meta":{"$ref":"#/components/schemas/AirportsLookupMeta"}},"required":["data","meta"],"additionalProperties":false},"AirportsRunwaysRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"airportIdent":{"type":"string","description":"OurAirports ident of the airport the runway belongs to — the join key used upstream.","example":"EKCH"},"airportIata":{"type":"string","description":"Three-letter IATA code of the same airport, echoed so exported rows stay self-describing.","example":"CPH"},"designator":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Both end identifiers joined with a slash, e.g. 04L/22R. Derived here from the two upstream cells; null when the snapshot names neither end.","example":"04L/22R"},"lowEndIdent":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the low-numbered runway end as recorded upstream (04L, 09, H1 for a helipad), or null when unrecorded.","example":"04L"},"highEndIdent":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the high-numbered (reciprocal) runway end, or null when the snapshot records none.","example":"22R"},"lengthFt":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Runway length in feet exactly as recorded upstream; null when the snapshot has no length, never 0.","example":11811},"widthFt":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Runway width in feet exactly as recorded upstream; null when the snapshot has no width, never 0.","example":148},"surface":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Surface text exactly as recorded upstream. OurAirports does not constrain this column, so values range from ASP and CON to Asphalt, asphalt and the placeholder UNK; null when the cell is blank.","example":"ASP"},"lighted":{"type":"boolean","description":"Whether the snapshot flags the runway as lighted (its 1/0 column, unmodified).","example":true},"closed":{"type":"boolean","description":"Whether the snapshot flags the runway as closed. Closed runways are returned unless includeClosed=false.","example":false},"lowEndHeadingDegT":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"True heading of the low-numbered end in degrees, as recorded upstream (not corrected or recomputed); null when unrecorded.","example":41},"highEndHeadingDegT":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"True heading of the high-numbered end in degrees, as recorded upstream; null when unrecorded.","example":221}},"additionalProperties":false},"AirportsRunwaysMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["airports"]},"params":{"type":"object","properties":{"code":{"type":"string","minLength":3,"maxLength":7},"includeClosed":{"type":"boolean"}},"required":["code","includeClosed"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/runways"]},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","route","count"],"additionalProperties":false},"AirportsRunwaysEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AirportsRunwaysRecord"}},"meta":{"$ref":"#/components/schemas/AirportsRunwaysMeta"}},"required":["data","meta"],"additionalProperties":false},"AirportsNearbyRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"name":{"type":"string","description":"Airport name exactly as recorded in the OurAirports snapshot.","example":"Copenhagen Kastrup Airport"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Primary municipality served, as recorded by OurAirports; it need not be the municipality where the airport is physically located. null when the snapshot records none.","example":"Copenhagen"},"country":{"type":"string","description":"Common English country or territory name.","example":"Denmark"},"countryCode":{"type":"string","description":"Two-letter country or territory code.","example":"DK"},"iata":{"type":"string","description":"Three-letter IATA airport code; unique across the snapshot.","example":"CPH"},"icao":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Four-letter ICAO location indicator, or null for the airports the snapshot has no ICAO code for.","example":"EKCH"},"ident":{"type":"string","description":"OurAirports identifier — the ICAO code when one exists, otherwise a national or OurAirports-assigned id such as 5A8 or AG-0001. Always unique and always present.","example":"EKCH"},"type":{"type":"string","description":"OurAirports size classification: large_airport, medium_airport, small_airport, seaplane_base, heliport.","example":"large_airport"},"latitude":{"type":"number","description":"Airport latitude in WGS84 decimal degrees (positive north), rounded to 6 decimals.","example":55.617901},"longitude":{"type":"number","description":"Airport longitude in WGS84 decimal degrees (positive east), rounded to 6 decimals.","example":12.656},"elevationFt":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Airport elevation above mean sea level in feet; negative values are below sea level, null when the snapshot records none.","example":17},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IANA time zone id derived from the pinned coordinates at snapshot time and validated against the airport's ISO country; approximate near zone boundaries and null for the airports where the derivation could not be confirmed.","example":"Europe/Copenhagen"},"distanceKm":{"type":"number","description":"Spherical great-circle distance from the requested point in kilometers, using the IUGG mean Earth radius; rounded to 3 decimals.","example":0}},"additionalProperties":false},"AirportsNearbyMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["airports"]},"params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180},"radiusKm":{"type":"number","minimum":0,"maximum":20020},"country":{"type":"string"},"type":{"type":"string","enum":["any","large_airport","medium_airport","small_airport","seaplane_base","heliport"]}},"required":["lat","lng","radiusKm","type"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/nearby"]},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","route","count"],"additionalProperties":false},"AirportsNearbyEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AirportsNearbyRecord"}},"meta":{"$ref":"#/components/schemas/AirportsNearbyMeta"}},"required":["data","meta"],"additionalProperties":false},"AnalyticsSessionsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"sessionId":{"type":"string","description":"Distinct ses_-prefixed synthetic session identifier.","example":"ses_01_a1b2c3d4e5f6"},"anonymousId":{"type":"string","description":"Explicit fixture label, never a real cookie, account or device identifier.","example":"anon_fixture_1_a1b2c3d4"},"startedAt":{"type":"string","format":"date-time","description":"First event time inside the requested start window.","example":"2026-06-12T10:00:00.000Z"},"endedAt":{"type":"string","format":"date-time","description":"Exact final event time; equals startedAt for a one-event bounce.","example":"2026-06-12T10:04:00.000Z"},"durationSeconds":{"type":"integer","description":"Exact endedAt minus startedAt in seconds.","example":240},"outcome":{"type":"string","description":"bounced | engaged | converted, derived coherently from the event funnel.","example":"converted"},"channel":{"type":"string","description":"Synthetic acquisition channel.","example":"organic"},"client":{"type":"object","additionalProperties":true,"description":"Non-identifying coherent device/browser/OS/viewport fixture plus an RFC documentation IP.","example":{"device":"mobile","browser":"Safari","os":"iOS","viewport":{"width":390,"height":844},"locale":"en-US","ip":"192.0.2.1"}},"eventCount":{"type":"integer","description":"Exact events.length within requested bounds.","example":5},"pageviewCount":{"type":"integer","description":"Exact count of landing_view plus product_view events.","example":2},"converted":{"type":"boolean","description":"True exactly when outcome is converted and one purchase event exists.","example":true},"revenueCents":{"type":"integer","description":"Purchase value in integer cents, or zero without conversion.","example":8999},"funnel":{"type":"object","additionalProperties":true,"description":"Derived step booleans, deepest stage and completed-step count.","example":{"landing":true,"productViewed":true,"carted":true,"checkoutStarted":true,"purchased":true,"deepestStage":"purchase","completedSteps":5}},"events":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One to eight strictly ordered synthetic events with exact sequence, path and purchase value semantics.","example":[{"eventId":"ses_01_a1_e0","sequence":0,"type":"landing_view","occurredAt":"2026-06-12T10:00:00.000Z","path":"/","valueCents":null}]}},"additionalProperties":false},"AnalyticsSessionsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["analytics-sessions"]},"params":{"type":"object","properties":{"outcome":{"type":"string","enum":["any","bounced","engaged","converted"]},"channel":{"type":"string","enum":["any","direct","organic","referral","email","paid"]},"device":{"type":"string","enum":["any","desktop","mobile","tablet"]},"minEvents":{"type":"integer","minimum":1,"maximum":8},"maxEvents":{"type":"integer","minimum":1,"maximum":8},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["outcome","channel","device","minEvents","maxEvents","from","to"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"AnalyticsSessionsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AnalyticsSessionsRootRecord"}},"meta":{"$ref":"#/components/schemas/AnalyticsSessionsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"AnalyticsSessionsFunnelsRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"sessionId":{"type":"string","description":"ID shared with the root session for identical params, seed and record index.","example":"ses_01_a1b2c3d4e5f6"},"outcome":{"type":"string","description":"bounced | engaged | converted.","example":"converted"},"eventCount":{"type":"integer","description":"Exact sum of all five event-type counters.","example":5},"landingViews":{"type":"integer","description":"Always one for a valid generated session.","example":1},"productViews":{"type":"integer","description":"One or more after the landing for engaged/converted sessions.","example":1},"addToCartEvents":{"type":"integer","description":"Zero or one, coherent with deepestStage.","example":1},"checkoutEvents":{"type":"integer","description":"Zero or one, never present before add-to-cart.","example":1},"purchaseEvents":{"type":"integer","description":"Exactly one only for converted sessions.","example":1},"deepestStage":{"type":"string","description":"landing | product | cart | checkout | purchase.","example":"purchase"},"converted":{"type":"boolean","description":"True exactly when purchaseEvents is one.","example":true},"revenueCents":{"type":"integer","description":"Same integer-cent total as the source session.","example":8999}},"additionalProperties":false},"AnalyticsSessionsFunnelsMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["analytics-sessions"]},"params":{"type":"object","properties":{"outcome":{"type":"string","enum":["any","bounced","engaged","converted"]},"channel":{"type":"string","enum":["any","direct","organic","referral","email","paid"]},"device":{"type":"string","enum":["any","desktop","mobile","tablet"]},"minEvents":{"type":"integer","minimum":1,"maximum":8},"maxEvents":{"type":"integer","minimum":1,"maximum":8},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["outcome","channel","device","minEvents","maxEvents","from","to"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/funnels"]},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","route","count","seed"],"additionalProperties":false},"AnalyticsSessionsFunnelsEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AnalyticsSessionsFunnelsRecord"}},"meta":{"$ref":"#/components/schemas/AnalyticsSessionsFunnelsMeta"}},"required":["data","meta"],"additionalProperties":false},"AuditLogsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Fictional audit-event id prefixed aud_.","example":"aud_66f327f2-76cc-47a8-b2ca-a2cf7131537a"},"timestamp":{"type":"string","format":"date-time","description":"Event instant inside the resolved from/to window.","example":"2026-01-18T14:27:31.488Z"},"actor":{"type":"object","additionalProperties":true,"description":"Fictional actor with id, name and kind (user or serviceAccount).","example":{"id":"usr_a81c42","name":"Jamie Carter","kind":"user"}},"action":{"type":"string","description":"login | logout | create | update | delete | permissionChange.","example":"update"},"resourceType":{"type":"string","description":"Resource type coherent with action and service.","example":"user"},"resourceId":{"type":"string","description":"Fictional id whose prefix derives from resourceType.","example":"user_31f0a82d9c41"},"outcome":{"type":"string","description":"success | failure | denied.","example":"success"},"ipAddress":{"type":"string","description":"Safe IPv4/IPv6 documentation address, never a claimed client address.","example":"192.0.2.42"},"userAgent":{"type":"string","description":"Fixed fictional/example client user-agent string.","example":"randomapi-test-client/1.0"},"requestId":{"type":"string","description":"Fictional request correlation id prefixed req_.","example":"req_53a4b81f9d0e7a2c"},"metadata":{"type":"object","additionalProperties":true,"description":"Action-specific details. Success uses applied-state fields; failures/denials use attempted/requested fields plus reason. Always includes service.","example":{"service":"admin","changedFields":["status"],"previousVersion":2,"newVersion":3}}},"additionalProperties":false},"AuditLogsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["audit-logs"]},"params":{"type":"object","properties":{"action":{"type":"string","enum":["login","logout","create","update","delete","permissionChange"]},"outcome":{"type":"string","enum":["success","failure","denied"]},"service":{"type":"string","enum":["auth","billing","catalog","storage","admin"]},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"AuditLogsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogsRootRecord"}},"meta":{"$ref":"#/components/schemas/AuditLogsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"AuthSessionsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Distinct fictional session ID.","example":"ses_fixture_0_a12b34c56d78ef"},"user":{"type":"object","additionalProperties":true,"description":"Synthetic user id, name and reserved-domain email.","example":{"id":"usr_fixture_12ab34cd56ef","name":"Avery Jensen","email":"user-a1b2c3d4@example.net"}},"status":{"type":"string","description":"active | expired | revoked.","example":"active"},"method":{"type":"string","description":"password | passkey | oauth | saml.","example":"passkey"},"mfa":{"type":"string","description":"none | totp | sms | webauthn.","example":"webauthn"},"risk":{"type":"string","description":"low | medium | high synthetic classification.","example":"low"},"device":{"type":"object","additionalProperties":true,"description":"Coherent type, browser, OS and user-agent fixture.","example":{"type":"desktop","browser":"Chrome","os":"Windows","userAgent":"Mozilla/5.0 ..."}},"ip":{"type":"string","description":"RFC 5737 documentation-only IPv4 address.","example":"192.0.2.1"},"createdAt":{"type":"string","format":"date-time","description":"Session creation inside the asOf window.","example":"2026-07-01T08:00:00.000Z"},"lastSeenAt":{"type":"string","format":"date-time","description":"Last activity, ordered after creation and before termination/asOf.","example":"2026-07-10T10:00:00.000Z"},"expiresAt":{"type":"string","format":"date-time","description":"Exact expiry instant.","example":"2026-07-17T08:00:00.000Z"},"revokedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Revocation instant for revoked sessions only.","example":null},"revocationReason":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Fixture revocation reason for revoked sessions only.","example":null},"active":{"type":"boolean","description":"True exactly when status is active.","example":true}},"additionalProperties":false},"AuthSessionsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["auth-sessions"]},"params":{"type":"object","properties":{"status":{"type":"string","enum":["active","expired","revoked","any"]},"method":{"type":"string","enum":["password","passkey","oauth","saml","any"]},"mfa":{"type":"string","enum":["none","totp","sms","webauthn","any"]},"risk":{"type":"string","enum":["low","medium","high","any"]},"windowDays":{"type":"integer","minimum":1,"maximum":90},"asOf":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["status","method","mfa","risk","windowDays"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"AuthSessionsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AuthSessionsRootRecord"}},"meta":{"$ref":"#/components/schemas/AuthSessionsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"AuthSessionsLoginAttemptsRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Distinct fictional login-attempt ID.","example":"login_fixture_0_a12b34c56d78ef"},"user":{"type":"object","additionalProperties":true,"description":"Synthetic attempted user identity.","example":{"id":"usr_fixture_12ab34cd56ef","name":"Avery Jensen","email":"user-a1b2c3d4@example.net"}},"method":{"type":"string","description":"Authentication method attempted.","example":"password"},"mfa":{"type":"string","description":"Second-factor method or none.","example":"totp"},"risk":{"type":"string","description":"Synthetic risk classification.","example":"high"},"outcome":{"type":"string","description":"Exact login result.","example":"mfaFailed"},"device":{"type":"object","additionalProperties":true,"description":"Coherent device/browser/OS fixture.","example":{"type":"mobile","browser":"Safari","os":"iOS","userAgent":"Mozilla/5.0 ..."}},"ip":{"type":"string","description":"Documentation-only IPv4 address.","example":"198.51.100.2"},"attemptedAt":{"type":"string","format":"date-time","description":"Attempt timestamp inside the asOf window.","example":"2026-07-10T11:00:00.000Z"},"sessionId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Created session ID for success only.","example":null},"failureCode":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Stable reason code for failed outcomes.","example":"mfa_failed"},"challenge":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"Bounded MFA challenge state, or null when no factor applies.","example":{"method":"totp","required":true,"attemptedAt":"2026-07-10T11:00:05.000Z","satisfiedAt":null}},"lockedUntil":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Future unlock instant for locked outcomes only.","example":null}},"additionalProperties":false},"AuthSessionsLoginAttemptsMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["auth-sessions"]},"params":{"type":"object","properties":{"outcome":{"type":"string","enum":["success","invalidCredentials","mfaRequired","mfaFailed","locked","any"]},"method":{"type":"string","enum":["password","passkey","oauth","saml","any"]},"mfa":{"type":"string","enum":["none","totp","sms","webauthn","any"]},"risk":{"type":"string","enum":["low","medium","high","any"]},"windowDays":{"type":"integer","minimum":1,"maximum":90},"asOf":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["outcome","method","mfa","risk","windowDays"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/login-attempts"]},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","route","count","seed"],"additionalProperties":false},"AuthSessionsLoginAttemptsEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AuthSessionsLoginAttemptsRecord"}},"meta":{"$ref":"#/components/schemas/AuthSessionsLoginAttemptsMeta"}},"required":["data","meta"],"additionalProperties":false},"AvatarsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"url":{"type":"string","format":"uri","description":"Absolute, ready-to-hotlink image URL on this platform — deterministic, so it is safe to store.","example":"https://randomapi.dev/api/avatars/image?style=identicon&seed=brave-falcon-42&size=128"},"style":{"type":"string","description":"Avatar style baked into the URL: identicon | initials | shapes.","example":"identicon"},"seed":{"type":"string","description":"The generated human-readable identity key (adjective-noun-number).","example":"brave-falcon-42"}},"additionalProperties":false},"AvatarsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["avatars"]},"params":{"type":"object","properties":{"style":{"type":"string","enum":["identicon","initials","shapes"]},"size":{"type":"integer","minimum":16,"maximum":512}},"required":["size"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"AvatarsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AvatarsRootRecord"}},"meta":{"$ref":"#/components/schemas/AvatarsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"BackgroundJobsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Distinct fictional job ID.","example":"job_5819cd40d202_00"},"queue":{"type":"string","description":"email | exports | media | billing.","example":"media"},"type":{"type":"string","description":"Queue-coherent fictional worker operation.","example":"resizeImage"},"status":{"type":"string","description":"Current lifecycle status.","example":"retrying"},"priority":{"type":"string","description":"low | normal | high | critical.","example":"high"},"payload":{"type":"object","additionalProperties":true,"description":"Small queue/type-specific synthetic payload.","example":{"source":"https://assets.example.com/files/demo.png","width":640,"height":480}},"createdAt":{"type":"string","format":"date-time","description":"Creation time inside from/to.","example":"2026-02-10T10:00:00.000Z"},"scheduledAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Planned first execution; null only while merely queued.","example":"2026-02-10T10:01:00.000Z"},"startedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"First attempt start, else null.","example":"2026-02-10T10:01:00.000Z"},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Terminal completion/cancellation time, else null.","example":null},"attemptCount":{"type":"integer","description":"Exact number of nested attempts.","example":2},"maxAttempts":{"type":"integer","description":"Configured retry limit, at most eight.","example":5},"nextRetryAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Present only for retrying jobs.","example":"2026-02-10T10:10:00.000Z"},"deadLetteredAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Present only for deadLettered jobs.","example":null},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Last failure for retrying/failed/deadLettered jobs, else null.","example":"temporary dependency failure"},"attempts":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Zero to eight chronological attempts with exact outcome/date masks.","example":[{"number":1,"startedAt":"2026-02-10T10:01:00.000Z","finishedAt":"2026-02-10T10:01:02.000Z","durationMs":2000,"outcome":"failure","error":"temporary dependency failure"}]}},"additionalProperties":false},"BackgroundJobsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["background-jobs"]},"params":{"type":"object","properties":{"queue":{"type":"string","enum":["email","exports","media","billing"]},"status":{"type":"string","enum":["queued","scheduled","running","retrying","succeeded","failed","deadLettered","cancelled"]},"priority":{"type":"string","enum":["low","normal","high","critical"]},"maxAttempts":{"type":"integer","minimum":1,"maximum":8},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["maxAttempts"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"BackgroundJobsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BackgroundJobsRootRecord"}},"meta":{"$ref":"#/components/schemas/BackgroundJobsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"BaseEncodingsEncodeRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"input":{"type":"string","description":"Original Unicode text.","example":"Hello"},"encoding":{"type":"string","description":"Selected RFC 4648 encoding.","example":"base64"},"output":{"type":"string","description":"Encoded bytes in the selected alphabet.","example":"SGVsbG8="},"bytes":{"type":"integer","description":"Number of UTF-8 input bytes.","example":5},"padded":{"type":"boolean","description":"Whether output ends in RFC 4648 '=' padding.","example":true}},"additionalProperties":false},"BaseEncodingsEncodeMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["base-encodings"]},"params":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":4096},"encoding":{"type":"string","enum":["base16","base32","base64","base64url"]},"padding":{"type":"boolean"}},"required":["text","encoding","padding"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/encode"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"BaseEncodingsEncodeEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/BaseEncodingsEncodeRecord"},"meta":{"$ref":"#/components/schemas/BaseEncodingsEncodeMeta"}},"required":["data","meta"],"additionalProperties":false},"BaseEncodingsDecodeRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"input":{"type":"string","description":"Validated encoded input.","example":"SGVsbG8="},"encoding":{"type":"string","description":"Selected RFC 4648 encoding.","example":"base64"},"output":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"integer"}}],"description":"Decoded UTF-8 text or byte array, according to the output parameter.","example":"Hello"},"bytes":{"type":"integer","description":"Number of decoded bytes.","example":5},"validUtf8":{"type":"boolean","description":"Whether decoded bytes are well-formed UTF-8.","example":true},"padded":{"type":"boolean","description":"Whether the input used trailing '=' padding.","example":true}},"additionalProperties":false},"BaseEncodingsDecodeMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["base-encodings"]},"params":{"type":"object","properties":{"value":{"type":"string","minLength":1,"maxLength":8192},"encoding":{"type":"string","enum":["base16","base32","base64","base64url"]},"output":{"type":"string","enum":["text","bytes"]}},"required":["value","encoding","output"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/decode"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"BaseEncodingsDecodeEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/BaseEncodingsDecodeRecord"},"meta":{"$ref":"#/components/schemas/BaseEncodingsDecodeMeta"}},"required":["data","meta"],"additionalProperties":false},"BookingsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Distinct fictional booking ID.","example":"booking_fixture_0_a12b34c56d78ef"},"resource":{"type":"object","additionalProperties":true,"description":"Synthetic resource id, type and display name.","example":{"id":"room_fixture_12ab34cd","type":"room","name":"Room 1"}},"status":{"type":"string","description":"Exact booking lifecycle state.","example":"confirmed"},"timezone":{"type":"string","description":"Canonical IANA display timezone.","example":"Europe/Copenhagen"},"partySize":{"type":"integer","description":"Exact requested party size.","example":4},"start":{"type":"string","format":"date-time","description":"Absolute booking start instant.","example":"2026-07-12T08:00:00.000Z"},"end":{"type":"string","format":"date-time","description":"Absolute booking end instant.","example":"2026-07-12T09:00:00.000Z"},"localStart":{"type":"string","description":"Start rendered as a timezone-local wall-clock timestamp.","example":"2026-07-12T10:00:00"},"localEnd":{"type":"string","description":"End rendered as a timezone-local wall-clock timestamp.","example":"2026-07-12T11:00:00"},"durationMinutes":{"type":"integer","description":"Exact elapsed duration.","example":60},"customer":{"type":"object","additionalProperties":true,"description":"Synthetic customer id, name and reserved-domain email.","example":{"id":"customer_fixture_12ab34cd","name":"Avery Jensen","email":"customer-a1b2c3d4@example.com"}},"createdAt":{"type":"string","format":"date-time","description":"Creation before booking start.","example":"2026-07-01T08:00:00.000Z"},"confirmedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Confirmation time for every non-pending state.","example":"2026-07-01T09:00:00.000Z"},"checkedInAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Check-in time for checked-in or completed states.","example":null},"completedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"End instant for completed state only.","example":null},"cancelledAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pre-start cancellation time for cancelled state only.","example":null},"noShowAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"End instant for no-show state only.","example":null},"cancellationReason":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Fixture reason for cancelled state only.","example":null}},"additionalProperties":false},"BookingsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["bookings"]},"params":{"type":"object","properties":{"resource":{"type":"string","enum":["appointment","room","desk","rental","any"]},"status":{"type":"string","enum":["pending","confirmed","checkedIn","completed","cancelled","noShow","any"]},"timezone":{"type":"string","minLength":1,"maxLength":100},"partySize":{"type":"integer","minimum":1,"maximum":12},"minDurationMinutes":{"type":"integer","minimum":15,"maximum":480},"maxDurationMinutes":{"type":"integer","minimum":15,"maximum":480},"windowDays":{"type":"integer","minimum":1,"maximum":90},"asOf":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["resource","status","timezone","partySize","minDurationMinutes","maxDurationMinutes","windowDays"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"BookingsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BookingsRootRecord"}},"meta":{"$ref":"#/components/schemas/BookingsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"BookingsAvailabilityRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"date":{"type":"string","format":"date","description":"Requested local calendar date.","example":"2026-07-13"},"timezone":{"type":"string","description":"Canonical IANA timezone.","example":"Europe/Copenhagen"},"resource":{"type":"string","description":"Fixture resource type.","example":"room"},"window":{"type":"object","additionalProperties":true,"description":"Resolved opening, interval and duration controls.","example":{"openHour":8,"closeHour":18,"slotMinutes":30,"durationMinutes":60}},"slotCount":{"type":"integer","description":"Exact returned slot count.","example":19},"availableCount":{"type":"integer","description":"Slots with remaining capacity above zero.","example":14},"slots":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Ordered absolute slots with local labels and exact capacity arithmetic.","example":[{"start":"2026-07-13T06:00:00.000Z","end":"2026-07-13T07:00:00.000Z","localStart":"2026-07-13T08:00:00","localEnd":"2026-07-13T09:00:00","offsetMinutes":120,"capacity":4,"booked":1,"remaining":3,"available":true}]}},"additionalProperties":false},"BookingsAvailabilityMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["bookings"]},"params":{"type":"object","properties":{"date":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"timezone":{"type":"string","minLength":1,"maxLength":100},"resource":{"type":"string","enum":["appointment","room","desk","rental"]},"openHour":{"type":"integer","minimum":0,"maximum":22},"closeHour":{"type":"integer","minimum":1,"maximum":23},"slotMinutes":{"type":"integer","minimum":15,"maximum":120},"durationMinutes":{"type":"integer","minimum":15,"maximum":480},"capacity":{"type":"integer","minimum":1,"maximum":20}},"required":["date","timezone","resource","openHour","closeHour","slotMinutes","durationMinutes","capacity"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/availability"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"BookingsAvailabilityEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/BookingsAvailabilityRecord"},"meta":{"$ref":"#/components/schemas/BookingsAvailabilityMeta"}},"required":["data","meta"],"additionalProperties":false},"BusinessDaysAddRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"country":{"type":"string","description":"Canonical country code.","example":"US"},"countryName":{"type":"string","description":"English country name.","example":"United States"},"start":{"type":"string","format":"date","description":"Starting date.","example":"2026-07-02"},"days":{"type":"integer","description":"Signed requested business-day movement.","example":1},"includeStart":{"type":"boolean","description":"Whether a business-day start was eligible to count.","example":false},"result":{"type":"string","format":"date","description":"Resulting calendar date.","example":"2026-07-06"},"calendarDays":{"type":"integer","description":"Signed calendar-day distance from start to result.","example":4},"weekendsSkipped":{"type":"integer","description":"Weekend dates crossed and not counted.","example":2},"holidaysSkipped":{"type":"integer","description":"Weekday public/observed holidays crossed and not counted.","example":1}},"additionalProperties":false},"BusinessDaysAddMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["business-days"]},"params":{"type":"object","properties":{"country":{"type":"string","minLength":2,"maxLength":2},"start":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"days":{"type":"integer","minimum":-2600,"maximum":2600},"includeStart":{"type":"boolean"}},"required":["country","start","days","includeStart"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/add"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"BusinessDaysAddEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/BusinessDaysAddRecord"},"meta":{"$ref":"#/components/schemas/BusinessDaysAddMeta"}},"required":["data","meta"],"additionalProperties":false},"BusinessDaysBetweenRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"country":{"type":"string","description":"Canonical country code.","example":"US"},"countryName":{"type":"string","description":"English country name.","example":"United States"},"from":{"type":"string","format":"date","description":"Range start.","example":"2026-07-01"},"to":{"type":"string","format":"date","description":"Range end.","example":"2026-07-08"},"includeStart":{"type":"boolean","description":"Whether from is included.","example":true},"includeEnd":{"type":"boolean","description":"Whether to is included.","example":false},"businessDays":{"type":"integer","description":"Business days in the chosen interval.","example":4},"daysExamined":{"type":"integer","description":"Calendar dates inside the chosen boundaries.","example":7},"weekendsExcluded":{"type":"integer","description":"Included-boundary dates excluded as weekends.","example":2},"holidaysExcluded":{"type":"integer","description":"Included-boundary weekday public holidays excluded.","example":1}},"additionalProperties":false},"BusinessDaysBetweenMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["business-days"]},"params":{"type":"object","properties":{"country":{"type":"string","minLength":2,"maxLength":2},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"includeStart":{"type":"boolean"},"includeEnd":{"type":"boolean"}},"required":["country","from","to","includeStart","includeEnd"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/between"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"BusinessDaysBetweenEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/BusinessDaysBetweenRecord"},"meta":{"$ref":"#/components/schemas/BusinessDaysBetweenMeta"}},"required":["data","meta"],"additionalProperties":false},"BusinessDaysCalendarRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"country":{"type":"string","description":"Canonical country code.","example":"US"},"countryName":{"type":"string","description":"English country name.","example":"United States"},"from":{"type":"string","format":"date","description":"First included date.","example":"2021-12-30"},"to":{"type":"string","format":"date","description":"Last included date.","example":"2022-01-03"},"totalDays":{"type":"integer","description":"Exact inclusive number of returned dates.","example":5},"businessDays":{"type":"integer","description":"Rows classified business.","example":2},"weekendDays":{"type":"integer","description":"Rows classified weekend, including nominal holidays on weekends.","example":2},"holidayDays":{"type":"integer","description":"Weekday rows excluded by an actual or observed public holiday.","example":1},"days":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Inclusive chronological ledger with date, weekday, exclusive classification and public-holiday details.","example":[{"date":"2021-12-31","weekday":"Friday","classification":"holiday","holidays":[{"name":"New Year's Day","localName":"New Year's Day","observed":true,"actualDate":"2022-01-01"}]}]}},"additionalProperties":false},"BusinessDaysCalendarMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["business-days"]},"params":{"type":"object","properties":{"country":{"type":"string","minLength":2,"maxLength":2},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["country","from","to"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/calendar"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"BusinessDaysCalendarEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/BusinessDaysCalendarRecord"},"meta":{"$ref":"#/components/schemas/BusinessDaysCalendarMeta"}},"required":["data","meta"],"additionalProperties":false},"CalendarEventsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","format":"uuid","description":"Fictional deterministic-per-seed event id.","example":"8f76e7de-67dd-49e0-a7c1-43f575cc3381"},"title":{"type":"string","description":"Short generic event title.","example":"Product planning"},"description":{"type":"string","description":"Fixture description coherent with title.","example":"Review priorities, owners and delivery risks for the next iteration."},"status":{"type":"string","description":"confirmed | tentative | cancelled.","example":"confirmed"},"start":{"type":"string","description":"ISO instant for timed events, or YYYY-MM-DD for all-day events.","example":"2026-06-10T09:00:00.000Z"},"end":{"type":"string","description":"Later ISO instant, or exclusive YYYY-MM-DD all-day boundary.","example":"2026-06-10T10:00:00.000Z"},"timezone":{"type":"string","description":"Canonical IANA display timezone.","example":"Europe/Copenhagen"},"allDay":{"type":"boolean","description":"Whether start/end use all-day date semantics.","example":false},"location":{"type":"string","description":"Generic fictional room, call or off-site location.","example":"Video call"},"organizer":{"type":"object","additionalProperties":true,"description":"Fictional organizer name and reserved-domain email.","example":{"name":"Jordan Lee","email":"jordan.lee@example.com"}},"attendees":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Exactly attendeeCount fictional people with reserved-domain email and response.","example":[{"name":"Alex Kim","email":"alex.kim@example.net","response":"accepted"}]}},"additionalProperties":false},"CalendarEventsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["calendar-events"]},"params":{"type":"object","properties":{"status":{"type":"string","enum":["confirmed","tentative","cancelled"]},"allDay":{"type":"boolean"},"timezone":{"type":"string","minLength":1,"maxLength":100},"minDurationMinutes":{"type":"integer","minimum":1,"maximum":43200},"maxDurationMinutes":{"type":"integer","minimum":1,"maximum":43200},"attendeeCount":{"type":"integer","minimum":0,"maximum":20},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["allDay","timezone","attendeeCount"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"CalendarEventsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CalendarEventsRootRecord"}},"meta":{"$ref":"#/components/schemas/CalendarEventsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"CheckDigitsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"scheme":{"type":"string","description":"Scheme id used by the scheme parameter.","example":"gtin13"},"name":{"type":"string","description":"Human name of the identifier scheme.","example":"GTIN-13 (EAN-13)"},"algorithm":{"type":"string","description":"The check-character algorithm in one sentence.","example":"GS1 modulo-10: weights 3 and 1 alternating from the right, subtracted from the next multiple of ten"},"alphabet":{"type":"string","description":"Characters allowed in the payload.","example":"0-9"},"lengths":{"type":"array","items":{"type":"integer"},"description":"Accepted total lengths including the check characters. Empty for variable-length schemes.","example":[13]},"minLength":{"type":"integer","description":"Smallest accepted total length — the only length rule for variable-length schemes.","example":13},"checkCharacters":{"type":"integer","description":"Number of check characters: 1 for most schemes, 2 for MOD 97-10 and LEI.","example":1},"checkAlphabet":{"type":"string","description":"Characters the check position may hold.","example":"0-9"},"checkPosition":{"type":"string","description":"Where the check characters sit in the identifier.","example":"last character"},"scope":{"type":"string","description":"Where the scheme (and its check character) actually applies — regional limits are stated here.","example":"Global GS1 key, printed as an EAN-13 symbol."},"strictRules":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"What strict=true adds on /validate, or null when the alphabet, length and check character are the whole format.","example":null},"detectsAllSingleCharacterErrors":{"type":"boolean","description":"Whether every single-character substitution changes the check character.","example":true},"undetectedSubstitutions":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Which single-character changes slip through, or null when none do.","example":null},"detectsAllAdjacentTranspositions":{"type":"boolean","description":"Whether swapping any two adjacent characters changes the check character.","example":false},"undetectedTranspositions":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Which adjacent swaps slip through, or null when none do.","example":"Swapping two adjacent digits whose values differ by five is undetected (05↔50, 16↔61, 27↔72, 38↔83, 49↔94). Every other adjacent transposition changes the check digit."},"specification":{"type":"string","description":"The published specification this implementation follows.","example":"GS1 General Specifications — check-digit calculation"},"specificationUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Public page for the specification, or null when only a paywalled standard exists.","example":"https://www.gs1.org/standards/barcodes/ean-upc"},"meaning":{"type":"string","description":"What a valid check character does and does not prove for this scheme.","example":"A correct check digit means the digits are internally consistent. It does not mean the GTIN has been allocated to a company or assigned to a product — this endpoint queries no GS1 registry and holds no product catalogue."}},"additionalProperties":false},"CheckDigitsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["check-digits"]},"params":{"type":"object","properties":{"search":{"type":"string","minLength":1,"maxLength":40}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","count"],"additionalProperties":false},"CheckDigitsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CheckDigitsRootRecord"}},"meta":{"$ref":"#/components/schemas/CheckDigitsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"CheckDigitsValidateRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"scheme":{"type":"string","description":"Scheme id exactly as requested.","example":"isbn13"},"canonicalScheme":{"type":"string","description":"Scheme actually applied — 'upca' resolves to 'gtin12'.","example":"isbn13"},"input":{"type":"string","description":"The value exactly as supplied.","example":"978-0-306-40615-7"},"normalized":{"type":"string","description":"Uppercased value, with ASCII spaces and hyphens removed when normalize is true.","example":"9780306406157"},"valid":{"type":"boolean","description":"True only for this endpoint's checks: alphabet, length, check character (where applicable) and any strict rules. It never means the identifier was issued, assigned or registered.","example":true},"reasons":{"type":"array","items":{"type":"string"},"description":"Stable ordered failure codes — EMPTY_AFTER_NORMALIZATION, INVALID_CHARACTERS, WRONG_LENGTH, CHECK_CHARACTER_MISMATCH, STRICT_INVALID_PREFIX, STRICT_INVALID_MODEL_YEAR_CODE, STRICT_INVALID_ROUTING_SYMBOL. Empty exactly when valid is true.","example":[]},"payload":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The value without its check characters, or null when the value was too malformed to split.","example":"978030640615"},"checkCharacter":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The check character(s) found in the input, or null when the value could not be split.","example":"7"},"expectedCheckCharacter":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"What the scheme's algorithm computes for that payload, or null when it could not be computed.","example":"7"},"checkCharacterValid":{"type":"boolean","description":"Whether the supplied check character equals the computed one. Reported even when checkDigitApplicable is false, so a European VIN's position-9 result is still visible.","example":true},"checkDigitApplicable":{"type":"boolean","description":"Whether this endpoint holds the check character against the value. Always true except for a complete VIN whose world manufacturer identifier falls outside the ISO 3780 North American (1-5) and Chinese (L) region blocks, where a mismatch never makes the VIN invalid. That is inferred from the WMI alone, so false means 'not determinable from the VIN alone', not 'not required' — 49 CFR 565 requires a check digit on any vehicle built for sale in the US whatever its WMI. Read checkCharacterValid for the strict answer.","example":true},"actualLength":{"type":"integer","description":"Length of the normalized value.","example":13},"expectedLengths":{"type":"array","items":{"type":"integer"},"description":"Accepted total lengths, or an empty array for a variable-length scheme.","example":[13]},"minLength":{"type":"integer","description":"Smallest accepted total length.","example":13},"invalidCharacters":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Every character outside the scheme's alphabet, in input order, as { index, character } with a zero-based index into the normalized value. When the length is wrong the check position cannot be located, so every character is tested against the scheme's full alphabet rather than the narrower check-position one. Empty when the alphabet check passed.","example":[{"index":4,"character":"#"}]},"algorithm":{"type":"string","description":"The algorithm applied, in one sentence.","example":"GS1 modulo-10 over the thirteen-digit Bookland EAN (weights 3 and 1 alternating from the right)"},"scope":{"type":"string","description":"Where this scheme and its check character actually apply.","example":"Global."},"notes":{"type":"array","items":{"type":"string"},"description":"Situational explanations — VIN regional applicability, the upca alias, a 16-digit IMEISV, a failed strict rule, and the GS1 prefix caveat on every GTIN form. Empty when nothing needs saying.","example":[]}},"additionalProperties":false},"CheckDigitsValidateMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["check-digits"]},"params":{"type":"object","properties":{"scheme":{"type":"string","enum":["luhn","gtin8","gtin12","gtin13","gtin14","upca","isbn10","isbn13","issn","ismn","imei","isin","lei","vin","npi","aba","iso7064-mod11-2","iso7064-mod11-10","iso7064-mod97-10"]},"value":{"type":"string","minLength":1,"maxLength":64},"normalize":{"type":"boolean"},"strict":{"type":"boolean"}},"required":["scheme","value","normalize","strict"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/validate"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"CheckDigitsValidateEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CheckDigitsValidateRecord"},"meta":{"$ref":"#/components/schemas/CheckDigitsValidateMeta"}},"required":["data","meta"],"additionalProperties":false},"CheckDigitsComputeRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"scheme":{"type":"string","description":"Scheme id exactly as requested.","example":"gtin13"},"canonicalScheme":{"type":"string","description":"Scheme actually applied — 'upca' resolves to 'gtin12'.","example":"gtin13"},"input":{"type":"string","description":"The payload exactly as supplied.","example":"590123412345"},"payload":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Normalized payload used for the computation, or null when it was not computable.","example":"590123412345"},"checkCharacter":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The computed check character(s), or null when not computable.","example":"7"},"value":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The complete identifier, with the check character inserted where the scheme puts it (position 9 for a VIN, otherwise appended). Null when not computable.","example":"5901234123457"},"computable":{"type":"boolean","description":"Whether a check character could be computed at all.","example":true},"reasons":{"type":"array","items":{"type":"string"},"description":"Stable ordered failure codes — EMPTY_AFTER_NORMALIZATION, INVALID_CHARACTERS, WRONG_PAYLOAD_LENGTH. Empty exactly when computable is true.","example":[]},"invalidCharacters":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Every character outside the scheme's alphabet, in input order, as { index, character } with a zero-based index into the normalized value. When the length is wrong the check position cannot be located, so every character is tested against the scheme's full alphabet rather than the narrower check-position one. Empty when the alphabet check passed.","example":[{"index":4,"character":"#"}]},"expectedPayloadLengths":{"type":"array","items":{"type":"integer"},"description":"Accepted payload lengths (total length minus the check characters). Empty for variable-length schemes; VIN accepts 16 or a full 17.","example":[12]},"actualPayloadLength":{"type":"integer","description":"Length of the normalized payload as supplied.","example":12},"checkDigitApplicable":{"type":"boolean","description":"Whether this endpoint would hold the computed character against the completed value. Always true except for a VIN whose world manufacturer identifier falls outside the ISO 3780 North American (1-5) and Chinese (L) region blocks — an inference from the WMI, not the regulation, so the value is still returned with the character in place and an explanatory note.","example":true},"algorithm":{"type":"string","description":"The algorithm applied, in one sentence.","example":"GS1 modulo-10: weights 3 and 1 alternating from the right, subtracted from the next multiple of ten"},"scope":{"type":"string","description":"Where this scheme and its check character actually apply.","example":"Global GS1 key, printed as an EAN-13 symbol."},"notes":{"type":"array","items":{"type":"string"},"description":"Situational explanations, such as a VIN placeholder form or the GS1 prefix caveat.","example":[]}},"additionalProperties":false},"CheckDigitsComputeMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["check-digits"]},"params":{"type":"object","properties":{"scheme":{"type":"string","enum":["luhn","gtin8","gtin12","gtin13","gtin14","upca","isbn10","isbn13","issn","ismn","imei","isin","lei","vin","npi","aba","iso7064-mod11-2","iso7064-mod11-10","iso7064-mod97-10"]},"value":{"type":"string","minLength":1,"maxLength":64},"normalize":{"type":"boolean"}},"required":["scheme","value","normalize"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/compute"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"CheckDigitsComputeEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CheckDigitsComputeRecord"},"meta":{"$ref":"#/components/schemas/CheckDigitsComputeMeta"}},"required":["data","meta"],"additionalProperties":false},"CheckDigitsConvertRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"input":{"type":"string","description":"The source value exactly as supplied.","example":"036000291452"},"normalized":{"type":"string","description":"Uppercased source with ASCII spaces and hyphens removed.","example":"036000291452"},"sourceForm":{"type":"string","description":"Detected source form: gtin8, isbn10, gtin12, gtin13 or gtin14.","example":"gtin12"},"sourceCheckCharacter":{"type":"string","description":"The source's own (verified) check character.","example":"2"},"to":{"type":"string","description":"Requested target form.","example":"gtin13"},"value":{"type":"string","description":"The converted identifier, with its check character recomputed for the target form.","example":"0036000291452"},"checkCharacter":{"type":"string","description":"Check character of the converted value.","example":"2"},"checkCharacterChanged":{"type":"boolean","description":"Whether the converted value's check character literally differs from the source's. Zero-padding between GTIN forms never changes it, because GS1 weights run from the right. An ISBN-10 ↔ ISBN-13 conversion always recomputes it under the other algorithm, but about one such conversion in ten lands on the same character and so reports false.","example":false},"notes":{"type":"array","items":{"type":"string"},"description":"What the conversion did and any caveat that applies to it.","example":[]}},"additionalProperties":false},"CheckDigitsConvertMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["check-digits"]},"params":{"type":"object","properties":{"value":{"type":"string","minLength":1,"maxLength":64},"to":{"type":"string","enum":["gtin13","gtin14","upca","isbn10","isbn13"]}},"required":["value","to"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/convert"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"CheckDigitsConvertEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CheckDigitsConvertRecord"},"meta":{"$ref":"#/components/schemas/CheckDigitsConvertMeta"}},"required":["data","meta"],"additionalProperties":false},"CiRunsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Distinct fictional run ID.","example":"run_836f2c4ac196_00"},"runNumber":{"type":"integer","description":"Synthetic display sequence number.","example":1842},"pipeline":{"type":"string","description":"ci | release | docs.","example":"ci"},"trigger":{"type":"string","description":"push | pullRequest | manual | schedule.","example":"pullRequest"},"branch":{"type":"string","description":"Synthetic or explicitly requested branch.","example":"feature/example-checkout"},"commit":{"type":"object","additionalProperties":true,"description":"Synthetic sha, message, author name and reserved-domain email.","example":{"sha":"0123456789abcdef0123456789abcdef01234567","message":"test: cover checkout flow","authorName":"Avery Chen","authorEmail":"avery@example.com"}},"status":{"type":"string","description":"queued | inProgress | success | failure | cancelled.","example":"failure"},"createdAt":{"type":"string","format":"date-time","description":"Run creation time inside from/to.","example":"2026-03-12T08:00:00.000Z"},"startedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"First job start, null while queued.","example":"2026-03-12T08:00:04.000Z"},"completedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Terminal completion time only.","example":"2026-03-12T08:02:20.000Z"},"durationSeconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Exact terminal startedAt→completedAt duration, else null.","example":136},"jobs":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One to three jobs, each with exactly two status-coherent ordered steps.","example":[{"id":"run_demo_job1","name":"test","status":"completed","conclusion":"success","startedAt":"2026-03-12T08:00:04.000Z","completedAt":"2026-03-12T08:01:00.000Z","durationSeconds":56,"steps":[]}]},"artifacts":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One fictional artifact only for successful runs; otherwise empty.","example":[]}},"additionalProperties":false},"CiRunsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["ci-runs"]},"params":{"type":"object","properties":{"status":{"type":"string","enum":["queued","inProgress","success","failure","cancelled"]},"pipeline":{"type":"string","enum":["ci","release","docs"]},"trigger":{"type":"string","enum":["push","pullRequest","manual","schedule"]},"branch":{"type":"string","minLength":1,"maxLength":60},"minJobs":{"type":"integer","minimum":1,"maximum":3},"maxJobs":{"type":"integer","minimum":1,"maximum":3},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["minJobs","maxJobs"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"CiRunsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CiRunsRootRecord"}},"meta":{"$ref":"#/components/schemas/CiRunsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"CitiesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"name":{"type":"string","description":"GeoNames place name — the common international form, diacritics included.","example":"Copenhagen"},"asciiName":{"type":"string","description":"The same name transliterated to plain ASCII by GeoNames (São Paulo → Sao Paulo). Equal to name when it is already ASCII.","example":"Copenhagen"},"country":{"type":"string","description":"English country name, joined from the ISO 3166-1 country dataset.","example":"Denmark"},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","example":"DK"},"admin1":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"First-order administrative division (state, province, region…) in GeoNames' published spelling, diacritics included (`Vlorë County`); null where GeoNames publishes no first-order division for the place.","example":"Capital Region"},"latitude":{"type":"number","description":"GeoNames point latitude (WGS84, 4 decimals).","example":55.6759},"longitude":{"type":"number","description":"GeoNames point longitude (WGS84, 4 decimals).","example":12.5655},"timezone":{"type":"string","description":"The IANA timezone identifier GeoNames records for the place.","example":"Europe/Copenhagen"},"population":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"GeoNames population figure — an APPROXIMATE administrative/city-proper count of mixed vintage, not a metropolitan total and not a census value. null when GeoNames publishes no figure.","example":1153615},"elevation":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Elevation in metres as STATED by the GeoNames source record. It is a sparse column — published for only 4,185 of the 31,793 places (13.2%) — and is null everywhere else. It is never back-filled from the modelled value.","example":10},"demElevation":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Elevation in metres MODELLED at the point coordinate from a digital elevation model (SRTM3, or GTOPO30 above 60°N). Present for 31,734 places (99.8%); GeoNames' -9999 void marker is exposed as null, never as a depth. This is a raster sample, not a survey of the settlement.","example":14},"featureCode":{"type":"string","description":"GeoNames feature classification, verbatim: PPL is a plain populated place, PPLC a capital of a political entity, PPLA…PPLA5 the seat of a first- to fifth-order administrative division.","example":"PPLC"},"isCapital":{"type":"boolean","description":"True when GeoNames codes the place PPLC (capital of a political entity). GeoNames marks at most one capital per country.","example":true}},"additionalProperties":false},"CitiesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["cities"]},"params":{"type":"object","properties":{"country":{"type":"string"},"admin1":{"type":"string"},"timezone":{"type":"string"},"featureCode":{"type":"string","enum":["any","PPL","PPLA","PPLA2","PPLA3","PPLA4","PPLA5","PPLC","PPLF","PPLG","PPLL","PPLR","PPLS","STLMT"]},"search":{"type":"string"},"minPopulation":{"type":"integer","minimum":0},"minDemElevation":{"type":"integer","minimum":-500,"maximum":9000},"maxDemElevation":{"type":"integer","minimum":-500,"maximum":9000},"capital":{"type":"boolean"},"sort":{"type":"string","enum":["population","name"]},"offset":{"type":"integer","minimum":0,"maximum":100000}},"required":["featureCode","sort","offset"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","count"],"additionalProperties":false},"CitiesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CitiesRootRecord"}},"meta":{"$ref":"#/components/schemas/CitiesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"CitiesSearchRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"name":{"type":"string","description":"GeoNames place name — the common international form, diacritics included.","example":"Copenhagen"},"asciiName":{"type":"string","description":"The same name transliterated to plain ASCII by GeoNames (São Paulo → Sao Paulo). Equal to name when it is already ASCII.","example":"Copenhagen"},"country":{"type":"string","description":"English country name, joined from the ISO 3166-1 country dataset.","example":"Denmark"},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","example":"DK"},"admin1":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"First-order administrative division (state, province, region…) in GeoNames' published spelling, diacritics included (`Vlorë County`); null where GeoNames publishes no first-order division for the place.","example":"Capital Region"},"latitude":{"type":"number","description":"GeoNames point latitude (WGS84, 4 decimals).","example":55.6759},"longitude":{"type":"number","description":"GeoNames point longitude (WGS84, 4 decimals).","example":12.5655},"timezone":{"type":"string","description":"The IANA timezone identifier GeoNames records for the place.","example":"Europe/Copenhagen"},"population":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"GeoNames population figure — an APPROXIMATE administrative/city-proper count of mixed vintage, not a metropolitan total and not a census value. null when GeoNames publishes no figure.","example":1153615},"elevation":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Elevation in metres as STATED by the GeoNames source record. It is a sparse column — published for only 4,185 of the 31,793 places (13.2%) — and is null everywhere else. It is never back-filled from the modelled value.","example":10},"demElevation":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Elevation in metres MODELLED at the point coordinate from a digital elevation model (SRTM3, or GTOPO30 above 60°N). Present for 31,734 places (99.8%); GeoNames' -9999 void marker is exposed as null, never as a depth. This is a raster sample, not a survey of the settlement.","example":14},"featureCode":{"type":"string","description":"GeoNames feature classification, verbatim: PPL is a plain populated place, PPLC a capital of a political entity, PPLA…PPLA5 the seat of a first- to fifth-order administrative division.","example":"PPLC"},"isCapital":{"type":"boolean","description":"True when GeoNames codes the place PPLC (capital of a political entity). GeoNames marks at most one capital per country.","example":true}},"additionalProperties":false},"CitiesSearchMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["cities"]},"params":{"type":"object","properties":{"q":{"type":"string"},"country":{"type":"string"},"minPopulation":{"type":"integer","minimum":0}},"required":["q"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/search"]},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","route","count"],"additionalProperties":false},"CitiesSearchEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CitiesSearchRecord"}},"meta":{"$ref":"#/components/schemas/CitiesSearchMeta"}},"required":["data","meta"],"additionalProperties":false},"CitiesNearestRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"name":{"type":"string","description":"GeoNames place name — the common international form, diacritics included.","example":"Copenhagen"},"asciiName":{"type":"string","description":"The same name transliterated to plain ASCII by GeoNames (São Paulo → Sao Paulo). Equal to name when it is already ASCII.","example":"Copenhagen"},"country":{"type":"string","description":"English country name, joined from the ISO 3166-1 country dataset.","example":"Denmark"},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","example":"DK"},"admin1":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"First-order administrative division (state, province, region…) in GeoNames' published spelling, diacritics included (`Vlorë County`); null where GeoNames publishes no first-order division for the place.","example":"Capital Region"},"latitude":{"type":"number","description":"GeoNames point latitude (WGS84, 4 decimals).","example":55.6759},"longitude":{"type":"number","description":"GeoNames point longitude (WGS84, 4 decimals).","example":12.5655},"timezone":{"type":"string","description":"The IANA timezone identifier GeoNames records for the place.","example":"Europe/Copenhagen"},"population":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"GeoNames population figure — an APPROXIMATE administrative/city-proper count of mixed vintage, not a metropolitan total and not a census value. null when GeoNames publishes no figure.","example":1153615},"elevation":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Elevation in metres as STATED by the GeoNames source record. It is a sparse column — published for only 4,185 of the 31,793 places (13.2%) — and is null everywhere else. It is never back-filled from the modelled value.","example":10},"demElevation":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Elevation in metres MODELLED at the point coordinate from a digital elevation model (SRTM3, or GTOPO30 above 60°N). Present for 31,734 places (99.8%); GeoNames' -9999 void marker is exposed as null, never as a depth. This is a raster sample, not a survey of the settlement.","example":14},"featureCode":{"type":"string","description":"GeoNames feature classification, verbatim: PPL is a plain populated place, PPLC a capital of a political entity, PPLA…PPLA5 the seat of a first- to fifth-order administrative division.","example":"PPLC"},"isCapital":{"type":"boolean","description":"True when GeoNames codes the place PPLC (capital of a political entity). GeoNames marks at most one capital per country.","example":true},"distanceKm":{"type":"number","description":"Great-circle distance from the search point to the GeoNames point coordinate, on the mean-Earth sphere; rounded to 3 decimals.","example":0},"model":{"type":"string","description":"Always \"mean-earth-sphere\" — the same surface /api/geodesy documents. Not an ellipsoid, not a road or flight distance.","example":"mean-earth-sphere"},"radiusMeters":{"type":"number","description":"The IUGG mean Earth radius used for every distance in this response, in metres.","example":6371008.8}},"additionalProperties":false},"CitiesNearestMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["cities"]},"params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180},"maxDistanceKm":{"type":"number","minimum":0,"maximum":20020},"country":{"type":"string"},"minPopulation":{"type":"integer","minimum":0},"capital":{"type":"boolean"}},"required":["lat","lng"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/nearest"]},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","route","count"],"additionalProperties":false},"CitiesNearestEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CitiesNearestRecord"}},"meta":{"$ref":"#/components/schemas/CitiesNearestMeta"}},"required":["data","meta"],"additionalProperties":false},"CloudCostsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"AvailabilityZone":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Provider-assigned zone inside the region. Set only on metered rows for zonal SKUs (virtual machines, containers, block volumes, database instances and cache nodes); null everywhere else.","example":"ex-eu-1a"},"BilledCost":{"type":"number","description":"Cost as invoiced in the billing period. 0 on usage rows covered by a commitment (the commitment's Purchase row carries that money instead) and negative on credit and correction rows.","example":8.9856},"BillingAccountId":{"type":"string","description":"Fictional billing-account id, identical on all 100 rows of a seeded period.","example":"EX-BA-4821"},"BillingAccountName":{"type":"string","description":"Display name of that fictional billing account, identical on all 100 rows.","example":"Fixture Industries"},"BillingAccountType":{"type":"string","description":"Provider-defined label for the account type. FOCUS leaves this open; this fictional provider always says 'Billing Account'.","example":"Billing Account"},"BillingCurrency":{"type":"string","description":"ISO 4217 code every price and cost on the row is denominated in — the resolved `currency` param, identical on all 100 rows.","example":"USD"},"BillingPeriodEnd":{"type":"string","format":"date-time","description":"Exclusive end of the billing period: the first instant of the next month. Identical on all 100 rows.","example":"2026-07-01T00:00:00Z"},"BillingPeriodStart":{"type":"string","format":"date-time","description":"Inclusive start of the billing period: the first instant of the resolved billingPeriod month. Identical on all 100 rows, including the correction rows whose charge period lies in the previous month.","example":"2026-06-01T00:00:00Z"},"ChargeCategory":{"type":"string","description":"FOCUS charge classification. This fixture emits Usage, Purchase, Tax and Credit; it never emits Adjustment.","example":"Usage"},"ChargeClass":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"'Correction' on rows that correct the previous, already-closed billing period; null on every other row. Correction is the only value FOCUS allows.","example":null},"ChargeDescription":{"type":"string","description":"Human summary of the charge: service and meter for metered rows, the commitment name for purchase and unused rows, and the corrected month for corrections.","example":"Virtual Machines — Instance uptime (2 vCPU) in ex-eu-1"},"ChargeFrequency":{"type":"string","description":"One-Time | Recurring | Usage-Based. Metered, unused-commitment and correction rows are Usage-Based, commitment purchases and tax are Recurring, credits are One-Time. FOCUS forbids Usage-Based on a Purchase row and this fixture honours that.","example":"Usage-Based"},"ChargePeriodEnd":{"type":"string","format":"date-time","description":"Exclusive end of the charge period. One granularity slot after ChargePeriodStart for metered rows, the billing-period end for period-level rows.","example":"2026-06-04T00:00:00Z"},"ChargePeriodStart":{"type":"string","format":"date-time","description":"Inclusive start of the charge period, always a whole UTC hour or day boundary. Correction rows carry a day in the PREVIOUS month, so the response is not globally sorted by this column.","example":"2026-06-03T00:00:00Z"},"CommitmentDiscountCategory":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"'Usage' on every row tied to a commitment, null otherwise. Spend-based commitments are out of scope, so the FOCUS value 'Spend' never appears.","example":null},"CommitmentDiscountId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Fictional commitment id on the commitment's Purchase, Unused and Used rows; null on on-demand, tax, credit and correction rows.","example":null},"CommitmentDiscountName":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name of that commitment; null exactly when CommitmentDiscountId is null.","example":null},"CommitmentDiscountQuantity":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Committed units in CommitmentDiscountUnit: the whole term quantity on the Purchase row, the drawn-down quantity on a Used row and the leftover on the Unused row. Used + Unused equals Purchase exactly.","example":null},"CommitmentDiscountStatus":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Used or Unused on commitment-related Usage rows; null on the Purchase row (FOCUS scopes the column to usage) and on every unrelated row.","example":null},"CommitmentDiscountType":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Provider-defined commitment type. FOCUS fixes no enum here, so this fictional provider uses 'Capacity Commitment' and 'Usage Commitment'.","example":null},"CommitmentDiscountUnit":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Unit the committed quantity is measured in. Always Hours here, because every commitment-eligible SKU is priced per hour.","example":null},"ConsumedQuantity":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Volume actually consumed, in ConsumedUnit. Exactly PricingQuantity × the SKU's documented integer factor (1 everywhere except the serverless SKU, which prices per hour and consumes per second). Null on Purchase, Tax, Credit, Correction and Unused rows, as FOCUS requires.","example":12},"ConsumedUnit":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"FOCUS UnitFormat unit for ConsumedQuantity — Hours, Seconds, GB or TB here. Null exactly when ConsumedQuantity is null.","example":"Hours"},"ContractedCost":{"type":"number","description":"Cost at the negotiated on-demand rate: exactly ContractedUnitPrice × PricingQuantity when both are set, and equal to BilledCost on the commitment Purchase row and on tax, credit and correction rows.","example":8.9856},"ContractedUnitPrice":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Negotiated unit price in the billing currency — the SKU's list price less its fixed fictional discount, or the commitment rate on the Purchase row. Null wherever SkuPriceId is null (tax, credit and correction rows).","example":0.03744},"EffectiveCost":{"type":"number","description":"Amortized cost. Equals BilledCost on on-demand usage, tax, credit and correction rows; 0 on the commitment Purchase row; and the commitment's amortized share on Used and Unused rows. FOCUS imposes no product rule on this column, which is what makes the exact allocation legal.","example":8.9856},"InvoiceId":{"type":"string","description":"Issuer-assigned invoice id for this billing period and account — identical on all 100 rows.","example":"EX-INV-202606-4821"},"InvoiceIssuerName":{"type":"string","description":"Who issued the invoice. Always the fictional provider itself: this fixture models a direct billing relationship with no reseller or marketplace.","example":"Example Cloud"},"ListCost":{"type":"number","description":"Cost at the public list rate: exactly ListUnitPrice × PricingQuantity when both are set, and equal to BilledCost on tax, credit and correction rows.","example":9.984},"ListUnitPrice":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Public list unit price in the billing currency, before any discount. Null wherever SkuPriceId is null.","example":0.0416},"PricingCategory":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Standard on on-demand usage and on the commitment purchase, Committed on commitment-covered Used and Unused rows, null on tax, credit and correction rows. The FOCUS values Dynamic and Other never appear.","example":"Standard"},"PricingQuantity":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Volume the price is applied to, in PricingUnit. A metered row never bills more of a time unit than its charge period contains; a commitment Purchase or Unused row is an aggregate across instances and can exceed the period length.","example":12},"PricingUnit":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"FOCUS UnitFormat unit PricingQuantity is measured in — Hours, GB or TB here. Null exactly when PricingQuantity is null.","example":"Hours"},"RegionId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Fictional region id. Null only on tax and credit rows, which are not operated in a distinct region.","example":"ex-eu-1"},"RegionName":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name of that region; null exactly when RegionId is null.","example":"Example EU Central"},"ResourceId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Fictional resource id, unique per resource across the period's metered rows. On a commitment purchase row and on its unused-capacity row it is the commitment's own id, because FOCUS requires CommitmentDiscountId to equal ResourceId there. Null on tax, credit and correction rows, which are not attributable to one resource.","example":"EX-RES-0007"},"ResourceName":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name of that resource; the commitment name on purchase and unused rows. Null exactly when ResourceId is null.","example":"fixture-vm-a2-0007"},"ResourceType":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Provider-defined resource type for the SKU (Virtual machine, Block volume, Query workspace, …), or 'Commitment discount' on the purchase and unused rows. Null exactly when ResourceId is null.","example":"Virtual machine"},"ServiceCategory":{"type":"string","description":"One of the 19 FOCUS service categories. This fixture's catalogue uses Compute, Storage, Databases, Networking, Analytics and Security, plus Other for the tax and credit rows.","example":"Compute"},"ServiceName":{"type":"string","description":"Fictional service name — 'Taxes' on the tax row and 'Account Credits' on credit rows.","example":"Virtual Machines"},"ServiceProviderName":{"type":"string","description":"Who operates the service. Always the same fictional provider.","example":"Example Cloud"},"ServiceSubcategory":{"type":"string","description":"FOCUS service subcategory, always a member of the set its ServiceCategory allows (note the lower-case 'c' in the column id).","example":"Virtual Machines"},"SkuId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Fictional SKU id. Null on tax, credit and correction rows — FOCUS requires null for Tax and permits it on a Correction.","example":"EX-CMP-VM-A2"},"SkuMeter":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Short meter label for the SKU; null exactly when SkuId is null.","example":"Instance uptime (2 vCPU)"},"SkuPriceId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Id of the priced SKU variant: the SKU plus region plus '-OD' for on-demand rates or '-CMT' for the commitment rate. Deliberately different from SkuId (FOCUS says they MAY match), which exercises consumers that assume they are equal.","example":"EX-CMP-VM-A2-ex-eu-1-OD"},"SubAccountId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Fictional sub-account id on metered and correction rows; null on the account-level purchase, unused, tax and credit rows (note the capital 'A' in the column id).","example":"EX-SA-0002"},"SubAccountName":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name of that sub account; null exactly when SubAccountId is null.","example":"Data Engineering"},"SubAccountType":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Provider-defined sub-account type, 'Project' for this fictional provider; null exactly when SubAccountId is null, as FOCUS requires.","example":"Project"},"Tags":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"Flat JSON object of exactly two user-defined tags (env and costCenter) on metered usage rows; null on purchase, unused, tax, credit and correction rows. A single user-defined scheme carries no provider prefix, per the FOCUS Tags rule.","example":{"env":"prod","costCenter":"cc-1003"}}},"additionalProperties":false},"CloudCostsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["cloud-costs"]},"params":{"type":"object","properties":{"billingPeriod":{"type":"string"},"currency":{"type":"string"},"granularity":{"type":"string","enum":["hourly","daily"]},"subAccounts":{"type":"integer","minimum":1,"maximum":8},"commitments":{"type":"integer","minimum":0,"maximum":4},"taxRatePercent":{"type":"integer","minimum":0,"maximum":30},"chargeCategory":{"type":"string","enum":["any","Usage","Purchase","Tax","Credit"]},"serviceCategory":{"type":"string","enum":["any","Compute","Storage","Databases","Networking","Analytics","Security","Other"]},"chargeClass":{"type":"string","enum":["any","Correction","regular"]},"subAccountId":{"type":"string"}},"required":["currency","granularity","subAccounts","commitments","taxRatePercent","chargeCategory","serviceCategory","chargeClass"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"CloudCostsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CloudCostsRootRecord"}},"meta":{"$ref":"#/components/schemas/CloudCostsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"CloudCostsSummaryRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"billingPeriod":{"type":"string","description":"Resolved billing month as YYYY-MM.","example":"2026-06"},"billingPeriodStart":{"type":"string","format":"date-time","description":"Inclusive first instant of the period — the BillingPeriodStart of every row.","example":"2026-06-01T00:00:00Z"},"billingPeriodEnd":{"type":"string","format":"date-time","description":"Exclusive first instant of the next period.","example":"2026-07-01T00:00:00Z"},"billingCurrency":{"type":"string","description":"ISO 4217 code all amounts in this response are denominated in.","example":"USD"},"decimalPlaces":{"type":"integer","description":"Fractional digits every monetary value in this response is rounded to. Always 6 — this fixture's precision, not the currency's ISO 4217 minor unit.","example":6},"groupBy":{"type":"string","description":"The FOCUS column (or Day) the groups are keyed on.","example":"ServiceCategory"},"periodRowCount":{"type":"integer","description":"Rows in the whole seeded period before any selection filter. Always 100.","example":100},"rowCount":{"type":"integer","description":"Rows matching the selection filters — exactly what the root route returns at count=100 with the same params.","example":100},"groupCount":{"type":"integer","description":"Number of groups; always equal to groups.length.","example":7},"groups":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One entry per distinct key, ordered by groupKey ascending (code-unit order) with the null key last. Each carries groupKey, rowCount and the four cost measures summed in exact integer micro-units.","example":[{"groupKey":"Compute","rowCount":34,"billedCost":812.4432,"contractedCost":903.16,"effectiveCost":890.2011,"listCost":1003.5111}]},"totals":{"type":"object","additionalProperties":true,"description":"Grand totals over the matching rows. Each cost is the exact sum of the corresponding groups value.","example":{"rowCount":100,"billedCost":4210.9912,"contractedCost":4788.0044,"effectiveCost":4210.9912,"listCost":5602.771}}},"additionalProperties":false},"CloudCostsSummaryMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["cloud-costs"]},"params":{"type":"object","properties":{"billingPeriod":{"type":"string"},"currency":{"type":"string"},"granularity":{"type":"string","enum":["hourly","daily"]},"subAccounts":{"type":"integer","minimum":1,"maximum":8},"commitments":{"type":"integer","minimum":0,"maximum":4},"taxRatePercent":{"type":"integer","minimum":0,"maximum":30},"chargeCategory":{"type":"string","enum":["any","Usage","Purchase","Tax","Credit"]},"serviceCategory":{"type":"string","enum":["any","Compute","Storage","Databases","Networking","Analytics","Security","Other"]},"chargeClass":{"type":"string","enum":["any","Correction","regular"]},"subAccountId":{"type":"string"},"seed":{"type":"integer"},"groupBy":{"type":"string","enum":["ServiceCategory","ServiceSubcategory","ServiceName","SubAccountId","ChargeCategory","PricingCategory","RegionId","CommitmentDiscountId","Day"]}},"required":["currency","granularity","subAccounts","commitments","taxRatePercent","chargeCategory","serviceCategory","chargeClass","seed","groupBy"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/summary"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"CloudCostsSummaryEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CloudCostsSummaryRecord"},"meta":{"$ref":"#/components/schemas/CloudCostsSummaryMeta"}},"required":["data","meta"],"additionalProperties":false},"CloudCostsCommitmentsRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"commitmentDiscountId":{"type":"string","description":"Fictional commitment id, identical to the CommitmentDiscountId on the period's rows.","example":"EX-CMT-0001"},"commitmentDiscountName":{"type":"string","description":"Display name, identical to CommitmentDiscountName on those rows.","example":"Capacity commitment — Virtual Machines (1 year)"},"commitmentDiscountCategory":{"type":"string","description":"Always Usage; spend-based commitments are out of scope.","example":"Usage"},"commitmentDiscountType":{"type":"string","description":"Provider-defined type from this fictional provider's own vocabulary (FOCUS fixes no enum).","example":"Capacity Commitment"},"commitmentDiscountUnit":{"type":"string","description":"Unit the committed quantity is measured in. Always Hours.","example":"Hours"},"skuId":{"type":"string","description":"The single fictional SKU this commitment covers.","example":"EX-CMP-VM-A2"},"regionId":{"type":"string","description":"The single fictional region this commitment covers.","example":"ex-eu-1"},"chargePeriodStart":{"type":"string","format":"date-time","description":"Purchase row's inclusive charge-period start — the billing-period start.","example":"2026-06-01T00:00:00Z"},"chargePeriodEnd":{"type":"string","format":"date-time","description":"Purchase row's exclusive charge-period end — the billing-period end.","example":"2026-07-01T00:00:00Z"},"billingCurrency":{"type":"string","description":"ISO 4217 code for every amount below.","example":"USD"},"committedQuantity":{"type":"number","description":"Purchase row's CommitmentDiscountQuantity for the period, in Hours.","example":412.5},"usedQuantity":{"type":"number","description":"Exact sum of CommitmentDiscountQuantity over this commitment's Used rows.","example":350.625},"unusedQuantity":{"type":"number","description":"Unused row's CommitmentDiscountQuantity. usedQuantity + unusedQuantity equals committedQuantity exactly.","example":61.875},"utilizationPercent":{"type":"number","description":"usedQuantity / committedQuantity × 100, rounded to 2 decimals — the only rounded-for-display value in this response. 0 when committedQuantity is 0.","example":85},"coveredRowCount":{"type":"integer","description":"Number of Used usage rows drawing on this commitment.","example":9},"purchaseBilledCost":{"type":"number","description":"Purchase row's BilledCost — the money actually invoiced for the commitment this period.","example":12.7361},"usedEffectiveCost":{"type":"number","description":"Exact sum of EffectiveCost over the Used rows.","example":10.8257},"unusedEffectiveCost":{"type":"number","description":"Unused row's EffectiveCost. usedEffectiveCost + unusedEffectiveCost equals purchaseBilledCost exactly.","example":1.9104},"onDemandEquivalentCost":{"type":"number","description":"Exact sum of ContractedCost over the Used rows: what that usage would have cost at the negotiated on-demand rate.","example":13.122},"netSavings":{"type":"number","description":"onDemandEquivalentCost − purchaseBilledCost. Negative when poor utilization makes the commitment a loss; the fixture deliberately produces both signs.","example":0.3859}},"additionalProperties":false},"CloudCostsCommitmentsMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["cloud-costs"]},"params":{"type":"object","properties":{"billingPeriod":{"type":"string"},"currency":{"type":"string"},"granularity":{"type":"string","enum":["hourly","daily"]},"subAccounts":{"type":"integer","minimum":1,"maximum":8},"commitments":{"type":"integer","minimum":0,"maximum":4},"taxRatePercent":{"type":"integer","minimum":0,"maximum":30}},"required":["currency","granularity","subAccounts","commitments","taxRatePercent"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/commitments"]},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","route","count","seed"],"additionalProperties":false},"CloudCostsCommitmentsEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CloudCostsCommitmentsRecord"}},"meta":{"$ref":"#/components/schemas/CloudCostsCommitmentsMeta"}},"required":["data","meta"],"additionalProperties":false},"CloudEventsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"specversion":{"type":"string","description":"CloudEvents specification version; always the required wire value 1.0.","example":"1.0"},"id":{"type":"string","format":"uuid","description":"Unique fictional event identifier.","example":"a5a12c9e-d4de-4f0a-a498-2f75b78f0562"},"source":{"type":"string","format":"uri-reference","description":"Validated RFC 3986 event-source URI-reference, preserved exactly.","example":"/acme/orders"},"type":{"type":"string","description":"dev.randomapi.<resource>.<action>.","example":"dev.randomapi.order.updated"},"subject":{"type":"string","description":"Resource name and fictional id, e.g. order/ord_....","example":"order/ord_71d14f42d1804b91"},"time":{"type":"string","format":"date-time","description":"Event instant within the resolved from/to window.","example":"2026-01-18T14:27:31.488Z"},"datacontenttype":{"type":"string","description":"Content type of data; always application/json.","example":"application/json"},"data":{"type":"object","additionalProperties":true,"description":"Mock payload coherent with resource and action; failures contain error, deletions only identity/time.","example":{"id":"ord_71d14f42d1804b91","changes":{"status":"shipped"}}}},"additionalProperties":false},"CloudEventsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["cloud-events"]},"params":{"type":"object","properties":{"resource":{"type":"string","enum":["user","order","file","deployment"]},"action":{"type":"string","enum":["created","updated","deleted","failed"]},"source":{"type":"string","minLength":1,"maxLength":256},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["source"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"CloudEventsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CloudEventsRootRecord"}},"meta":{"$ref":"#/components/schemas/CloudEventsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"CollationSortRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"locale":{"type":"string","description":"The requested locale in canonical BCP 47 form — what was asked for, before the runtime resolved it.","example":"de"},"hasCollationData":{"type":"boolean","description":"Whether this runtime has collation data for the requested locale (Intl.Collator.supportedLocalesOf). False means the ordering below is the fallback locale named in resolvedLocale, not the one you asked for — check it before trusting a locale-specific result, because ICU builds differ and an edge runtime can lack languages a Node build has.","example":true},"resolvedLocale":{"type":"string","description":"The locale Intl.Collator actually used, including any '-u-co-' keyword it kept.","example":"de"},"resolvedOptions":{"type":"object","additionalProperties":true,"description":"The collator's complete ECMA-402 resolvedOptions: locale, usage, sensitivity, ignorePunctuation, collation, numeric and caseFirst. Echoed so the answer stays auditable against the serving runtime's ICU/CLDR version. numeric and caseFirst are null on a runtime that does not implement the optional '-u-kn'/'-u-kf' keys.","example":{"locale":"de","usage":"sort","sensitivity":"variant","ignorePunctuation":false,"collation":"default","numeric":false,"caseFirst":"false"}},"items":{"type":"array","items":{"type":"string"},"description":"The parsed input list, in the order supplied.","example":["b","a","z","ä"]},"sorted":{"type":"array","items":{"type":"string"},"description":"The same entries in this locale's collation order.","example":["a","ä","b","z"]},"movedCount":{"type":"integer","description":"How many positions hold a different string than the input did; 0 means the input was already in this order.","example":4}},"additionalProperties":false},"CollationSortMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["collation"]},"params":{"type":"object","properties":{"items":{"type":"array","items":{"type":"string"},"minItems":1},"locale":{"type":"string","minLength":2,"maxLength":64},"sensitivity":{"type":"string","enum":["base","accent","case","variant"]},"numeric":{"type":"boolean"},"caseFirst":{"type":"string","enum":["false","upper","lower"]},"collation":{"type":"string","minLength":3,"maxLength":32},"descending":{"type":"boolean"}},"required":["items","locale","sensitivity","numeric","caseFirst","descending"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/sort"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"CollationSortEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CollationSortRecord"},"meta":{"$ref":"#/components/schemas/CollationSortMeta"}},"required":["data","meta"],"additionalProperties":false},"CollationCompareRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"left":{"type":"string","description":"The left operand as supplied.","example":"a"},"right":{"type":"string","description":"The right operand as supplied.","example":"á"},"result":{"type":"integer","enum":[-1,0,1],"description":"-1 when left sorts first, 0 when the two are equivalent at the requested sensitivity, 1 when right sorts first.","example":-1},"relation":{"type":"string","enum":["before","equivalent","after"],"description":"The same answer in words: where left falls relative to right.","example":"before"},"locale":{"type":"string","description":"The requested locale in canonical BCP 47 form — what was asked for, before the runtime resolved it.","example":"en"},"hasCollationData":{"type":"boolean","description":"Whether this runtime has collation data for the requested locale (Intl.Collator.supportedLocalesOf). False means the ordering below is the fallback locale named in resolvedLocale, not the one you asked for — check it before trusting a locale-specific result, because ICU builds differ and an edge runtime can lack languages a Node build has.","example":true},"resolvedLocale":{"type":"string","description":"The locale Intl.Collator actually used, including any '-u-co-' keyword it kept.","example":"en"},"resolvedOptions":{"type":"object","additionalProperties":true,"description":"The collator's complete ECMA-402 resolvedOptions: locale, usage, sensitivity, ignorePunctuation, collation, numeric and caseFirst. Echoed so the answer stays auditable against the serving runtime's ICU/CLDR version. numeric and caseFirst are null on a runtime that does not implement the optional '-u-kn'/'-u-kf' keys.","example":{"locale":"en","usage":"sort","sensitivity":"variant","ignorePunctuation":false,"collation":"default","numeric":false,"caseFirst":"false"}},"decidedAt":{"type":"string","enum":["base","accent","case","variant","equivalent-at-all-levels"],"description":"Coarsest sensitivity at which the strings still differ, found by re-running the comparison at base, accent, case then variant with the other options unchanged. Independent of the requested sensitivity.","example":"accent"}},"additionalProperties":false},"CollationCompareMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["collation"]},"params":{"type":"object","properties":{"left":{"type":"string","minLength":1,"maxLength":200},"right":{"type":"string","minLength":1,"maxLength":200},"locale":{"type":"string","minLength":2,"maxLength":64},"sensitivity":{"type":"string","enum":["base","accent","case","variant"]},"numeric":{"type":"boolean"},"caseFirst":{"type":"string","enum":["false","upper","lower"]},"collation":{"type":"string","minLength":3,"maxLength":32}},"required":["left","right","locale","sensitivity","numeric","caseFirst"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/compare"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"CollationCompareEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CollationCompareRecord"},"meta":{"$ref":"#/components/schemas/CollationCompareMeta"}},"required":["data","meta"],"additionalProperties":false},"CollationLocalesRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"requested":{"type":"string","description":"The tag exactly as you sent it (trimmed), so a row maps back to your input list even when canonicalization renames it.","example":"de"},"locale":{"type":"string","description":"The same tag in canonical Unicode BCP 47 form.","example":"de"},"hasCollationData":{"type":"boolean","description":"Whether Intl.Collator.supportedLocalesOf reports collation data for this tag on the runtime answering the request. False means /sort and /compare will answer this tag with the runtime's default ordering and warn about it.","example":true},"resolvedLocale":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The locale Intl.Collator resolves this tag to — usually the tag itself, sometimes a parent when the runtime has no data for the exact tag ('en-GB' typically resolves to 'en', while 'fr-CA' keeps its own backwards-accent tailoring). Always the same language as 'locale'. Null when the runtime has no data for the tag.","example":"de"},"defaultCollation":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"resolvedOptions().collation with no '-u-co-' keyword: the ordering you get when no collation is requested. Reported verbatim, so a runtime that names a locale's standard ordering after its CLDR tailoring (for example 'pinyin' for 'zh') shows that name rather than 'default'. Null when the runtime has no data for the tag.","example":"default"}},"additionalProperties":false},"CollationLocalesMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["collation"]},"params":{"type":"object","properties":{"locales":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["locales"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/locales"]},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","route","count"],"additionalProperties":false},"CollationLocalesEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CollationLocalesRecord"}},"meta":{"$ref":"#/components/schemas/CollationLocalesMeta"}},"required":["data","meta"],"additionalProperties":false},"CollationCollationsRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"collation":{"type":"string","description":"Collation identifier, usable as the 'collation' parameter or a '-u-co-' keyword.","example":"phonebk"},"supportedForLocale":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"True when the runtime kept the '-u-co-' keyword in the resolved locale, which ECMA-402 does only when that locale's collation list contains this identifier. Null when no locale was given.","example":true},"resolvedCollation":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"resolvedOptions().collation for this locale plus this collation. To detect a dropped keyword, compare it with localeDefaultCollation — equal values mean the requested collation was not applied; a runtime may report a locale's standard ordering by its CLDR name ('pinyin' for 'zh') rather than as 'default'. Null when no locale was given.","example":"phonebk"},"resolvedLocale":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The locale the runtime resolved for this collation. Null when no locale was given.","example":"de-u-co-phonebk"},"localeDefaultCollation":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"resolvedOptions().collation for the locale with no '-u-co-' keyword — the ordering you get when no collation is requested. Runtimes report this either as 'default' or as the underlying CLDR tailoring's name, so it is echoed verbatim rather than normalized. Null when no locale was given.","example":"default"},"resolvedOptions":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"The complete ECMA-402 resolvedOptions for this locale plus this collation. Null when no locale was given.","example":{"locale":"de-u-co-phonebk","usage":"sort","sensitivity":"variant","ignorePunctuation":false,"collation":"phonebk","numeric":false,"caseFirst":"false"}}},"additionalProperties":false},"CollationCollationsMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["collation"]},"params":{"type":"object","properties":{"locale":{"type":"string","minLength":2,"maxLength":64},"search":{"type":"string","minLength":1,"maxLength":32}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/collations"]},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","route","count"],"additionalProperties":false},"CollationCollationsEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CollationCollationsRecord"}},"meta":{"$ref":"#/components/schemas/CollationCollationsMeta"}},"required":["data","meta"],"additionalProperties":false},"ColorContrastCheckRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"foreground":{"type":"string","description":"Canonical lowercase six-digit foreground color.","example":"#111827"},"background":{"type":"string","description":"Canonical lowercase six-digit background color.","example":"#ffffff"},"foregroundLuminance":{"type":"number","description":"WCAG relative luminance of the foreground, from 0 through 1.","example":0.009955},"backgroundLuminance":{"type":"number","description":"WCAG relative luminance of the background, from 0 through 1.","example":1},"contrastRatio":{"type":"number","description":"WCAG contrast ratio from 1 through 21.","example":17.739},"passesAaNormalText":{"type":"boolean","description":"Whether the ratio is at least 4.5:1 for WCAG AA normal text.","example":true},"passesAaLargeText":{"type":"boolean","description":"Whether the ratio is at least 3:1 for WCAG AA large text.","example":true},"passesAaaNormalText":{"type":"boolean","description":"Whether the ratio is at least 7:1 for WCAG AAA normal text.","example":true},"passesAaaLargeText":{"type":"boolean","description":"Whether the ratio is at least 4.5:1 for WCAG AAA large text.","example":true}},"additionalProperties":false},"ColorContrastCheckMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["color-contrast"]},"params":{"type":"object","properties":{"foreground":{"type":"string","minLength":1,"maxLength":32},"background":{"type":"string","minLength":1,"maxLength":32}},"required":["foreground","background"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/check"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"ColorContrastCheckEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ColorContrastCheckRecord"},"meta":{"$ref":"#/components/schemas/ColorContrastCheckMeta"}},"required":["data","meta"],"additionalProperties":false},"ColorSpacesConvertRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"input":{"type":"string","description":"The color you supplied, serialized in ITS OWN space in modern CSS Color 4 syntax after any parse-time clamping, with percentages resolved and hue angles normalized to [0, 360) — proof of what was actually parsed.","example":"color(srgb 1 0.33333 0)"},"inputSpace":{"type":"string","description":"Detected source space: srgb for hex, named colors and rgb(); otherwise hsl, hwb, lab, lch, oklab, oklch or the color() space. color(xyz …) reports the canonical xyz-d65.","example":"srgb"},"space":{"type":"string","description":"Destination space id, canonicalized — 'xyz' is reported as 'xyz-d65'.","example":"oklch"},"whitePoint":{"type":"string","description":"Reference white of the destination space: D50 for lab, lch, xyz-d50 and prophoto-rgb, D65 for everything else.","example":"D65"},"chromaticAdaptation":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The adaptation that ran, e.g. 'linear Bradford, D65 to D50'. Null when the source and destination share a white point, which is exactly when no adaptation is performed.","example":null},"components":{"type":"object","additionalProperties":true,"description":"Destination components rounded to `precision`, keyed per space: {r,g,b} for RGB spaces, {x,y,z} for XYZ, {l,a,b} for lab/oklab, {l,c,h} for lch/oklch, {h,s,l} for hsl, {h,w,b} for hwb. A component that became missing is null, never omitted.","example":{"l":0.67589,"c":0.21747,"h":38.80221}},"css":{"type":"string","description":"The result in modern, lossless CSS syntax, with `none` for a missing component. RGB and XYZ spaces use the color() form, which — unlike the legacy comma form — can express an out-of-gamut value.","example":"oklch(0.67589 0.21747 38.80221)"},"hex":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"8-bit #rrggbb (or #rrggbbaa when alpha < 1) ONLY when the color lies inside the sRGB gamut; null otherwise. Never a clipped hex — use /api/color-spaces/gamut to map an out-of-gamut color in. Hex is 8-bit by definition, so it is encoded from the EXACT sRGB value rather than from the rounded `components`, and `precision` does not apply to it.","example":"#ff5500"},"alpha":{"type":"number","minimum":0,"maximum":1,"description":"Alpha carried through unchanged — never composited, never affecting the conversion (CSS clamps it to 0–1 at parse time). Reported rounded to `precision`, while the `css` alpha suffix is present whenever the exact alpha is not 1, so at precision=0 a semi-transparent color reads '/ 1'.","example":1},"inGamut":{"type":"object","additionalProperties":true,"description":"Booleans keyed srgb, display-p3, a98-rgb, prophoto-rgb and rec2020 — the five bounded RGB gamuts, tested on the unrounded result with a tolerance of 1e-7 per component. srgb-linear shares sRGB's gamut and display-p3-linear shares Display P3's; lab, lch, oklab, oklch and xyz-* are unbounded and so are absent.","example":{"srgb":true,"display-p3":true,"a98-rgb":true,"prophoto-rgb":true,"rec2020":true}},"powerlessComponents":{"type":"array","items":{"type":"string"},"description":"Components that CSS Color 4 §4.4.1 makes powerless and therefore missing after a conversion — in practice only 'hue', when the chroma or saturation falls at or below the destination's epsilon. Empty for a normal color.","example":[]},"roundingDeltaEOK":{"type":"number","description":"ΔEOK between the exact result and the result read back from the rounded `components` — exactly what `precision` cost you, rounded to 6 decimals. 0 at high precision.","example":0}},"additionalProperties":false},"ColorSpacesConvertMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["color-spaces"]},"params":{"type":"object","properties":{"color":{"type":"string","minLength":1,"maxLength":128},"to":{"type":"string","enum":["srgb","srgb-linear","display-p3","display-p3-linear","a98-rgb","prophoto-rgb","rec2020","xyz","xyz-d50","xyz-d65","lab","lch","oklab","oklch","hsl","hwb"]},"precision":{"type":"integer","minimum":0,"maximum":12}},"required":["color","to","precision"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/convert"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"ColorSpacesConvertEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ColorSpacesConvertRecord"},"meta":{"$ref":"#/components/schemas/ColorSpacesConvertMeta"}},"required":["data","meta"],"additionalProperties":false},"ColorSpacesDifferenceRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"from":{"type":"string","description":"Canonical serialization of the first color in its own space, at 6 decimals.","example":"color(srgb 0.827451 0.184314 0.184314)"},"to":{"type":"string","description":"Canonical serialization of the second color in its own space, at 6 decimals.","example":"color(srgb 0.862745 0.14902 0.14902)"},"method":{"type":"string","description":"Metric applied.","example":"ciede2000"},"metric":{"type":"string","description":"The formula's full name and citation.","example":"CIEDE2000 (CIE 142:2001), kL = kC = kH = 1"},"coordinateSpace":{"type":"string","description":"Space the distance was computed in: 'lab' or 'oklab'.","example":"lab"},"whitePoint":{"type":"string","description":"D50 or D65 — the white the coordinates are relative to. Always present, including for oklab, which is always D65.","example":"D50"},"fromCoordinates":{"type":"object","additionalProperties":true,"description":"The exact {l, a, b} triple the metric consumed, unrounded to full double precision, so the answer is auditable.","example":{"l":49.508243,"a":65.311663,"b":41.617664}},"toCoordinates":{"type":"object","additionalProperties":true,"description":"The same for the second color.","example":{"l":50.42375,"a":68.166768,"b":44.700709}},"deltaE":{"type":"number","description":"The difference on this metric's own scale, rounded to 6 decimals.","example":1.602137},"jnd":{"type":"number","description":"The just-noticeable-difference CONVENTION for this scale: 2 for the Lab-scale metrics, 0.02 for ΔEOK (CSS Color 4 §14.2.1 states both). A convention, not a perceptual guarantee — echoed on every response.","example":2},"aboveJnd":{"type":"boolean","description":"Whether deltaE >= jnd. A rule of thumb, not a claim about what any person sees.","example":false}},"additionalProperties":false},"ColorSpacesDifferenceMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["color-spaces"]},"params":{"type":"object","properties":{"from":{"type":"string","minLength":1,"maxLength":128},"to":{"type":"string","minLength":1,"maxLength":128},"method":{"type":"string","enum":["cie76","ciede2000","oklab"]},"whitePoint":{"type":"string","enum":["d50","d65"]}},"required":["from","to","method"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/difference"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"ColorSpacesDifferenceEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ColorSpacesDifferenceRecord"},"meta":{"$ref":"#/components/schemas/ColorSpacesDifferenceMeta"}},"required":["data","meta"],"additionalProperties":false},"ColorSpacesGamutRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"input":{"type":"string","description":"Canonical serialization of the input in its own space.","example":"oklch(0.7 0.3 30)"},"gamut":{"type":"string","description":"Destination gamut id.","example":"srgb"},"whitePoint":{"type":"string","description":"Reference white of the destination gamut — D50 for prophoto-rgb, D65 otherwise.","example":"D65"},"inGamut":{"type":"boolean","description":"Whether the INPUT already fits, before any mapping, with a tolerance of 1e-7 per component. When true the color is returned unchanged (a relative colorimetric intent).","example":false},"method":{"type":"string","description":"Method applied.","example":"binary-search-minde"},"algorithm":{"type":"string","description":"The named algorithm and its spec section.","example":"Binary Search Gamut Mapping with Local MINDE (CSS Color 4 §14.2.1)"},"mapped":{"type":"string","description":"The mapped color serialized in the destination gamut.","example":"color(srgb 1 0.34514 0.26458)"},"mappedHex":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"#rrggbb (or #rrggbbaa when alpha < 1) — only when gamut is srgb; null for every other gamut, because hex has no meaning outside sRGB.","example":"#ff5843"},"components":{"type":"object","additionalProperties":true,"description":"Mapped {r, g, b} in the destination gamut, rounded. A mapped color ends with the clip the algorithms mandate, so it is inside [0, 1]; an input that already fitted is passed through and can sit up to 1e-7 outside it.","example":{"r":1,"g":0.34514,"b":0.26458}},"originalChroma":{"type":"number","description":"OKLCh chroma of the input.","example":0.3},"mappedChroma":{"type":"number","description":"OKLCh chroma actually reached — the number the caller came for.","example":0.2062},"chromaReduction":{"type":"number","description":"originalChroma - mappedChroma. Positive for every ordinary mapping, but NOT guaranteed. The mandatory final local clip can nudge the chroma up near white: the largest increase on the wide sweep documented in the overview is +0.0050 (clip into display-p3) and +0.0026 (binary-search-minde), while raytrace never raised it in a physically realizable gamut. In prophoto-rgb — whose primaries are not physically realizable — the ray trace can land as much as 1.34 above where it started. Any increase above 0.02 raises a meta.warnings entry, so a diverged mapping cannot arrive without a signal.","example":0.0938},"deltaEOK":{"type":"number","description":"ΔEOK between the input and the mapped result: the total perceptual cost.","example":0.09532},"hueShiftDegrees":{"type":"number","description":"Absolute OKLCh hue drift, shortest way round (0–180). Every method's final local clip moves the hue: on the 287-colour sweep in the overview the CSS algorithms stay under 16° while clip reaches 69°, but at very low or very high lightness binary-search-minde rotates the hue about as far as clip does (wide-sweep maxima: 69.3° for binary-search-minde, 3.4° for raytrace, 94.2° for clip). 0 when either color is achromatic and therefore has no hue.","example":0.1816},"boundaryCase":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The spec's lightness short-circuit when it fired: 'white (OKLCh L >= 1)' or 'black (OKLCh L <= 0)'; otherwise null.","example":null}},"additionalProperties":false},"ColorSpacesGamutMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["color-spaces"]},"params":{"type":"object","properties":{"color":{"type":"string","minLength":1,"maxLength":128},"gamut":{"type":"string","enum":["srgb","display-p3","a98-rgb","prophoto-rgb","rec2020"]},"method":{"type":"string","enum":["binary-search-minde","raytrace","clip"]},"precision":{"type":"integer","minimum":0,"maximum":12}},"required":["color","gamut","method","precision"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/gamut"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"ColorSpacesGamutEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ColorSpacesGamutRecord"},"meta":{"$ref":"#/components/schemas/ColorSpacesGamutMeta"}},"required":["data","meta"],"additionalProperties":false},"ColorVisionSimulateRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"input":{"type":"string","description":"Canonical lowercase six-digit form of the colour you supplied.","example":"#ed002e"},"model":{"type":"string","description":"Model actually applied: brettel1997, vienot1999 or machado2009.","example":"machado2009"},"type":{"type":"string","description":"Canonical colour-vision-deficiency type that was simulated.","example":"deuteranopia"},"severity":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Machado 2009 severity used (1 for the -opia types). Null for brettel1997 and vienot1999, which define no severity parameter.","example":1},"simulatedHex":{"type":"string","description":"Simulated colour, re-encoded to lowercase six-digit sRGB hex.","example":"#968623"},"simulatedRgb":{"type":"object","additionalProperties":true,"description":"Simulated colour as 8-bit sRGB channels: r, g and b from 0 through 255.","example":{"r":150,"g":134,"b":35}},"deltaFromOriginal":{"type":"number","description":"CIEDE2000 difference between the input and the returned simulated colour, rounded to 4 decimals. 0 means the model leaves the colour unchanged.","example":45.7212},"contrastAgainstOriginal":{"type":"number","minimum":1,"maximum":21,"description":"WCAG 2.2 contrast ratio between the input and the simulated colour, rounded to 4 decimals — how much apparent lightness the model removed.","example":1.2351},"clippedChannels":{"type":"array","items":{"type":"string"},"description":"Linear-light channels ('red', 'green', 'blue') pushed more than 2e-5 outside [0, 1] by the model and then clamped; empty when the simulated colour is inside the sRGB gamut.","example":[]}},"additionalProperties":false},"ColorVisionSimulateMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["color-vision"]},"params":{"type":"object","properties":{"hex":{"type":"string","minLength":1,"maxLength":32},"type":{"type":"string","enum":["protanopia","deuteranopia","tritanopia","protanomaly","deuteranomaly","tritanomaly"]},"model":{"type":"string","enum":["brettel1997","vienot1999","machado2009"]},"severity":{"type":"number","minimum":0,"maximum":1}},"required":["hex","type","model"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/simulate"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"ColorVisionSimulateEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ColorVisionSimulateRecord"},"meta":{"$ref":"#/components/schemas/ColorVisionSimulateMeta"}},"required":["data","meta"],"additionalProperties":false},"ColorVisionPaletteRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"model":{"type":"string","description":"Model applied to every colour in the palette.","example":"vienot1999"},"type":{"type":"string","description":"Canonical colour-vision-deficiency type that was simulated.","example":"deuteranopia"},"severity":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Machado 2009 severity used (1 for the -opia types). Null for vienot1999, which defines no severity parameter.","example":null},"threshold":{"type":"number","description":"Distance used for the indistinguishable verdict on this request.","example":5},"colors":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Per-colour simulation in input order: input, simulatedHex, simulatedRgb, deltaFromOriginal, contrastAgainstOriginal and clippedChannels.","example":[{"input":"#ed002e","simulatedHex":"#888817","simulatedRgb":{"r":136,"g":136,"b":23},"deltaFromOriginal":51.6696,"contrastAgainstOriginal":1.2027,"clippedChannels":[]},{"input":"#00a000","simulatedHex":"#898916","simulatedRgb":{"r":137,"g":137,"b":22},"deltaFromOriginal":19.4091,"contrastAgainstOriginal":1.0663,"clippedChannels":[]}]},"pairs":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Every unordered pair of canonical input colours with its CIEDE2000 distance before and after simulation, and whether the simulated distance is strictly below the threshold.","example":[{"a":"#ed002e","b":"#00a000","originalDistance":78.4845,"simulatedDistance":0.3963,"indistinguishable":true}]},"indistinguishablePairs":{"type":"integer","description":"How many pairs were flagged — the number to assert on in CI.","example":1}},"additionalProperties":false},"ColorVisionPaletteMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["color-vision"]},"params":{"type":"object","properties":{"colors":{"type":"array","items":{"type":"string"},"minItems":1},"type":{"type":"string","enum":["protanopia","deuteranopia","tritanopia","protanomaly","deuteranomaly","tritanomaly"]},"model":{"type":"string","enum":["brettel1997","vienot1999","machado2009"]},"severity":{"type":"number","minimum":0,"maximum":1},"threshold":{"type":"number","minimum":0,"maximum":100}},"required":["colors","type","model","threshold"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/palette"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"ColorVisionPaletteEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ColorVisionPaletteRecord"},"meta":{"$ref":"#/components/schemas/ColorVisionPaletteMeta"}},"required":["data","meta"],"additionalProperties":false},"ColorsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"hex":{"type":"string","description":"Lowercase '#rrggbb'.","example":"#3ea873"},"rgb":{"type":"string","description":"CSS rgb() notation with 0–255 channels — same color as hex.","example":"rgb(62, 168, 115)"},"hsl":{"type":"string","description":"CSS hsl() notation. The color is generated in HSL space, so these are the exact source values the filters constrained.","example":"hsl(150, 46%, 45%)"},"name":{"type":"string","description":"Nearest of the 148 CSS named colors by squared RGB distance (ties resolve alphabetically).","example":"mediumseagreen"},"contrastText":{"type":"string","description":"'#000000' or '#ffffff' — whichever reads better on this color per WCAG relative luminance (threshold 0.179).","example":"#000000"}},"additionalProperties":false},"ColorsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["colors"]},"params":{"type":"object","properties":{"hue":{"type":"string","enum":["red","orange","yellow","green","blue","purple","pink","monochrome","any"]},"luminosity":{"type":"string","enum":["bright","light","dark","any"]}},"required":["hue","luminosity"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"ColorsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ColorsRootRecord"}},"meta":{"$ref":"#/components/schemas/ColorsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"ColorsPaletteRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"base":{"type":"string","description":"The base color normalized to lowercase '#rrggbb' (3-digit shorthand expanded).","example":"#3498db"},"scheme":{"type":"string","description":"The scheme that was applied.","example":"complementary"},"colors":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Palette swatches as { hex, role }, in scheme order: analogous runs −30° → base → +30°, monochromatic runs darkest → lightest, all other schemes lead with the base.","example":[{"hex":"#3498db","role":"base"},{"hex":"#db7734","role":"complement"}]}},"additionalProperties":false},"ColorsPaletteMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["colors"]},"params":{"type":"object","properties":{"base":{"type":"string"},"scheme":{"type":"string","enum":["complementary","analogous","triadic","tetradic","monochromatic"]}},"required":["base","scheme"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/palette"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"ColorsPaletteEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ColorsPaletteRecord"},"meta":{"$ref":"#/components/schemas/ColorsPaletteMeta"}},"required":["data","meta"],"additionalProperties":false},"CompaniesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"name":{"type":"string","description":"Company display name from Faker — locale-aware (try ?locale=de or ?locale=ja).","example":"Greenholt - Kerluke"},"legalName":{"type":"string","description":"The name plus a locale-appropriate legal suffix (Inc., GmbH, ApS, …) — kept as-is when the generated name already carries one (e.g. 'Beier Inc', '株式会社永井不動産').","example":"Greenholt - Kerluke LLC"},"industry":{"type":"string","description":"One of 12 industries; every record matches ?industry when set.","example":"technology"},"catchphrase":{"type":"string","description":"Marketing tagline built from the company's industry vocabulary (English in all locales).","example":"Rethinking cloud infrastructure for modern enterprises"},"foundedYear":{"type":"integer","description":"Founding year, uniform between 1950 and last calendar year (relative to request time).","example":1998},"employees":{"type":"integer","description":"Headcount, log-distributed between 2 and 50 000 — most companies are small, a few are huge (like reality).","example":240},"website":{"type":"string","format":"uri","description":"https://<slugified-name>.example.com — example.com is RFC 2606-reserved, so it can never be a real site. Non-Latin names use a company-NNN slug.","example":"https://greenholt-kerluke.example.com"},"email":{"type":"string","description":"contact@ mailbox on the same reserved, non-deliverable domain as the website.","example":"contact@greenholt-kerluke.example.com"}},"additionalProperties":false},"CompaniesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["companies"]},"params":{"type":"object","properties":{"industry":{"type":"string","enum":["technology","finance","healthcare","retail","manufacturing","energy","media","transportation","hospitality","construction","agriculture","education"]}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295},"locale":{"type":"string","enum":["en","da","de","fr","es","it","pt","ja"]}},"required":["endpoint","params","generatedAt","count","seed","locale"],"additionalProperties":false},"CompaniesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CompaniesRootRecord"}},"meta":{"$ref":"#/components/schemas/CompaniesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"ConfusablesSkeletonRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"text":{"type":"string","description":"The resolved input, unchanged.","example":"раураl"},"nfd":{"type":"string","description":"The input after step 1 of the algorithm (Normalization Form D). The `characters` rows below are positions in this string, not in `text`.","example":"раураl"},"skeleton":{"type":"string","description":"The skeleton. Not intended for display and not stable across Unicode versions — treat it as a hash, and recompute rather than store it.","example":"paypal"},"skeletonCodePoints":{"type":"array","items":{"type":"string"},"description":"The skeleton as U+XXXX code points, so an invisible result is still readable.","example":["U+0070","U+0061","U+0079","U+0070","U+0061","U+006C"]},"changed":{"type":"boolean","description":"Whether the skeleton differs from the input. The skeleton is NFD, so a precomposed input can be `changed` with no prototype substitution at all — check `charactersMapped` for that.","example":true},"definition":{"type":"string","description":"\"skeleton\" when the value returned is exactly UTS #39 skeleton(X) = bidiSkeleton(LTR, X) via the section 4 fast path; \"internalSkeleton\" when the bidi steps were skipped.","example":"skeleton"},"bidiExact":{"type":"boolean","description":"Whether the UTS #39 4 left-to-right fast path applied, making the value returned exactly skeleton(X). False when the input contains a right-to-left or explicit directional-formatting character: we do not implement the UAX #9 bidirectional algorithm.","example":true},"bidiNote":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Why the fast path did not apply, naming the first offending character and its Bidi_Class. Null when the result is bidi-exact.","example":null},"ignorablesRemoved":{"type":"integer","description":"How many Default_Ignorable_Code_Point characters step 2 dropped.","example":0},"charactersMapped":{"type":"integer","description":"How many characters survived step 2 and had a prototype in the confusables data, so were substituted in step 3.","example":5},"characters":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One row per character of `nfd`, in order: character, codePoint (U+XXXX), name (nullable), script and scriptName (ISO 15924 code plus its Unicode long name), identifierStatus and identifierTypes, plus `index` (UTF-16 code-unit offset within `nfd`), `ignorable` (removed by step 2), `prototype` (null when the character has none) and `prototypeCodePoints`.","example":[{"index":0,"character":"р","codePoint":"U+0440","name":"CYRILLIC SMALL LETTER ER","script":"Cyrl","scriptName":"Cyrillic","identifierStatus":"Allowed","identifierTypes":["Recommended"],"ignorable":false,"prototype":"p","prototypeCodePoints":["U+0070"]}]}},"additionalProperties":false},"ConfusablesSkeletonMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["confusables"]},"params":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":256}},"required":["text"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/skeleton"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"ConfusablesSkeletonEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ConfusablesSkeletonRecord"},"meta":{"$ref":"#/components/schemas/ConfusablesSkeletonMeta"}},"required":["data","meta"],"additionalProperties":false},"ConfusablesCompareRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"a":{"type":"string","description":"The first resolved input, unchanged.","example":"paypal"},"b":{"type":"string","description":"The second resolved input, unchanged.","example":"раураl"},"equal":{"type":"boolean","description":"Whether the two inputs are identical UTF-16 sequences.","example":false},"skeletonA":{"type":"string","description":"The UTS #39 skeleton of `a`.","example":"paypal"},"skeletonB":{"type":"string","description":"The UTS #39 skeleton of `b`.","example":"paypal"},"confusable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether the two skeletons are identical. Null when either side is not bidi-exact: UAX #9 reordering could change either skeleton, so no verdict is issued rather than a possibly-wrong false.","example":true},"confusableClass":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Per UTS #39 4 Definitions: \"single-script\" when the resolved script sets share an element, \"mixed-script\" when they are disjoint, \"whole-script\" when they are disjoint and both strings are single-script. The three are not mutually exclusive in the spec — \"all whole-script confusables are also mixed-script confusables\" — and this field reports the narrowest class that applies, so read \"whole-script\" as implying mixed-script and do not filter on the string \"mixed-script\" alone. Null when `confusable` is false or null.","example":"mixed-script"},"bidiExact":{"type":"boolean","description":"Whether the UTS #39 4 left-to-right fast path applied, making the value returned exactly skeleton(X). False when the input contains a right-to-left or explicit directional-formatting character: we do not implement the UAX #9 bidirectional algorithm.","example":true},"undeterminedReason":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Why `confusable` is null, naming the side, the character and its Bidi_Class. Null otherwise.","example":null},"resolvedScriptsA":{"type":"array","items":{"type":"string"},"description":"The resolved script set of `a` as ISO 15924 codes. Empty for a mixed-script string; [\"ALL\"] when every character is Common or Inherited, which section 5.1 treats as every script.","example":["Latn"]},"resolvedScriptsB":{"type":"array","items":{"type":"string"},"description":"The resolved script set of `b`, same conventions as `resolvedScriptsA`.","example":[]},"differences":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Rows where the two inputs differ, compared code point by code point at the same position up to the longer length — a positional comparison, not a diff algorithm. Keys: `index` (zero-based code-point position, not a code-unit offset), `aCharacter`, `aCodePoint`, `aName`, `aScript`, `bCharacter`, `bCodePoint`, `bName`, `bScript`. The shorter side's four keys are null past its end.","example":[{"index":1,"aCharacter":"a","aCodePoint":"U+0061","aName":"LATIN SMALL LETTER A","aScript":"Latn","bCharacter":"а","bCodePoint":"U+0430","bName":"CYRILLIC SMALL LETTER A","bScript":"Cyrl"}]}},"additionalProperties":false},"ConfusablesCompareMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["confusables"]},"params":{"type":"object","properties":{"a":{"type":"string","minLength":1,"maxLength":256},"b":{"type":"string","minLength":1,"maxLength":256}},"required":["a","b"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/compare"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"ConfusablesCompareEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ConfusablesCompareRecord"},"meta":{"$ref":"#/components/schemas/ConfusablesCompareMeta"}},"required":["data","meta"],"additionalProperties":false},"ConfusablesInspectRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"text":{"type":"string","description":"The resolved input, unchanged.","example":"ѕсоре"},"codePointCount":{"type":"integer","description":"Unicode scalar values in the input (not UTF-16 code units).","example":5},"nonAsciiCount":{"type":"integer","description":"How many of those scalar values are above U+007F.","example":5},"scripts":{"type":"array","items":{"type":"string"},"description":"One minimal cover set (UTS #39 5.1): a smallest set of scripts such that every character shares at least one script with it, ordered by first appearance. Section 5.1 notes minimal cover sets are not unique, so this is one of them. Empty when every character is Common or Inherited, because then every script covers the string.","example":["Cyrl"]},"scriptsMinimal":{"type":"boolean","description":"Whether `scripts` is proven to be a smallest cover set. Proving it is an exact set-cover search run under a node budget; it completes for anything resembling an identifier, and only a deliberately pathological mix of dozens of multi-script characters falls back to a greedy cover (still a valid cover, possibly one script too large).","example":true},"singleScript":{"type":"boolean","description":"Whether the resolved script set is non-empty (UTS #39 5.1). Mind the spec's own warning: \"single-script\" means at least one script in the set, not exactly one — 日本語 is single-script with four.","example":true},"mixedScript":{"type":"boolean","description":"The negation of `singleScript`: the resolved script set is empty.","example":false},"restrictionLevel":{"type":"string","description":"One of ASCII-Only, Single Script, Highly Restrictive, Moderately Restrictive, Minimally Restrictive, Unrestricted (UTS #39 5.2, all six computed exactly). The identifier profile applied is the General Security Profile, so a character outside it — a space, an exclamation mark — makes the string Unrestricted no matter how clean its scripts are.","example":"Single Script"},"identifierAllowed":{"type":"boolean","description":"Whether every character has Identifier_Status=Allowed under the General Security Profile (UTS #39 3.1).","example":true},"restrictedCharacters":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Every distinct Identifier_Status=Restricted character, first appearance first: character, codePoint (U+XXXX), name (nullable), script and scriptName (ISO 15924 code plus its Unicode long name), identifierStatus and identifierTypes. `identifierTypes` is the reason for the status — Not_XID, Limited_Use, Obsolete, Not_NFKC, Default_Ignorable, Not_Character and so on. Empty when every character is Allowed.","example":[]},"confusableCharacters":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Every distinct character that has a UTS #39 prototype: character, codePoint (U+XXXX), name (nullable), script and scriptName (ISO 15924 code plus its Unicode long name), identifierStatus and identifierTypes, plus `prototype` and `confusableWithCount`.","example":[{"character":"ѕ","codePoint":"U+0455","name":"CYRILLIC SMALL LETTER DZE","script":"Cyrl","scriptName":"Cyrillic","identifierStatus":"Allowed","identifierTypes":["Recommended"],"prototype":"s","confusableWithCount":21}]},"mixedNumbers":{"type":"boolean","description":"Whether more than one decimal number system appears (UTS #39 5.3).","example":false},"numberSystems":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One row per distinct decimal system found — `zeroCodePoint`, `zeroName` and `digitCount` (how many of the input's digits came from that system) — first appearance first. Only General_Category=Nd characters participate, so Roman numerals and vulgar fractions are absent (they surface in `restrictedCharacters` instead). Empty when the input has no decimal digits.","example":[]},"skeleton":{"type":"string","description":"The same value /skeleton returns, so /inspect answers on its own.","example":"scope"},"bidiExact":{"type":"boolean","description":"Whether the UTS #39 4 left-to-right fast path applied, making the value returned exactly skeleton(X). False when the input contains a right-to-left or explicit directional-formatting character: we do not implement the UAX #9 bidirectional algorithm.","example":true},"characters":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"The full walk over the input's scalar values: character, codePoint (U+XXXX), name (nullable), script and scriptName (ISO 15924 code plus its Unicode long name), identifierStatus and identifierTypes, plus `index` (UTF-16 code-unit offset) and `augmentedScripts` (the section 5.1 augmented script set, [\"ALL\"] for Common and Inherited characters).","example":[{"index":0,"character":"ѕ","codePoint":"U+0455","name":"CYRILLIC SMALL LETTER DZE","script":"Cyrl","scriptName":"Cyrillic","identifierStatus":"Allowed","identifierTypes":["Recommended"],"augmentedScripts":["Cyrl"]}]}},"additionalProperties":false},"ConfusablesInspectMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["confusables"]},"params":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":256}},"required":["text"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/inspect"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"ConfusablesInspectEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ConfusablesInspectRecord"},"meta":{"$ref":"#/components/schemas/ConfusablesInspectMeta"}},"required":["data","meta"],"additionalProperties":false},"ConfusablesCharacterRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"character":{"type":"string","description":"The character itself.","example":"а"},"codePoint":{"type":"string","description":"Its code point in U+XXXX notation.","example":"U+0430"},"decimal":{"type":"integer","description":"The same scalar value as a number.","example":1072},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The Unicode Name, from the pinned UnicodeData.txt. Non-null two ways: the 7559 bundled name rows, which cover everything but the CJK ideographs among the 8853 code points this endpoint can be asked about meaningfully (the 8809 the confusables data mentions plus the 44 decimal-number-system zeros it does not already mention), and every CJK Unified Ideograph, whose name the UAX #44 4.8 rule generates from the code point itself — that rule covers the blocks whole, so all 101984 of them get a name, not only the 1294 the confusables data mentions. Null for everything else: U+2603 SNOWMAN, unassigned code points, Hangul syllables outside the bundled rows. 109543 code points in all — a stated boundary, not a general character-name lookup.","example":"CYRILLIC SMALL LETTER A"},"script":{"type":"string","description":"The ISO 15924 script code (UAX #24); Zzzz for unassigned code points.","example":"Cyrl"},"scriptName":{"type":"string","description":"The script's Unicode long name with underscores rendered as spaces (\"Canadian_Aboriginal\" becomes \"Canadian Aboriginal\").","example":"Cyrillic"},"augmentedScripts":{"type":"array","items":{"type":"string"},"description":"The UTS #39 5.1 augmented script set: Script_Extensions plus the multi-script writing systems (Han adds Hanb, Jpan and Kore; Hiragana and Katakana add Jpan; Hangul adds Kore; Bopomofo adds Hanb). [\"ALL\"] for Common and Inherited characters.","example":["Cyrl"]},"identifierStatus":{"type":"string","description":"Allowed or Restricted under the UTS #39 General Security Profile.","example":"Allowed"},"identifierTypes":{"type":"array","items":{"type":"string"},"description":"The Identifier_Type set — the reason behind the status. Code points the property does not list default to [\"Not_Character\"].","example":["Recommended"]},"prototype":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The UTS #39 prototype this character maps to, which may be several characters (m maps to rn). Null when confusables.txt does not map it.","example":"a"},"prototypeCodePoints":{"type":"array","items":{"type":"string"},"description":"The prototype as U+XXXX code points; empty when there is none.","example":["U+0061"]},"skeleton":{"type":"string","description":"The skeleton of this single character. Empty for a Default_Ignorable character, which step 2 removes entirely.","example":"a"},"confusableWith":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Every other code point in the confusables data whose one-character skeleton is identical: character, codePoint (U+XXXX), name (nullable), script and scriptName (ISO 15924 code plus its Unicode long name), identifierStatus and identifierTypes, plus `prototype`. Bounded — the largest group in this snapshot is 80 code points.","example":[{"character":"a","codePoint":"U+0061","name":"LATIN SMALL LETTER A","script":"Latn","scriptName":"Latin","identifierStatus":"Allowed","identifierTypes":["Recommended"],"prototype":null}]},"confusableWithCount":{"type":"integer","description":"The length of `confusableWith`.","example":23},"intentionalPartners":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Characters paired with this one in Unicode's hand-picked intentional-confusables list (glyphs designed to be identical in shape): character, codePoint (U+XXXX), name (nullable), script and scriptName (ISO 15924 code plus its Unicode long name), identifierStatus and identifierTypes. Empty for most characters — the list has only 77 pairs.","example":[]},"nfkc":{"type":"string","description":"The character under NFKC, for contrast: NFKC is not a confusable check. Computed by the runtime's normalizer rather than from this pinned snapshot.","example":"а"},"inConfusablesData":{"type":"boolean","description":"Whether confusables.txt mentions this code point at all, as a mapped source or inside a prototype.","example":true}},"additionalProperties":false},"ConfusablesCharacterMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["confusables"]},"params":{"type":"object","properties":{"char":{"type":"string","minLength":1,"maxLength":8}},"required":["char"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/character"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"ConfusablesCharacterEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ConfusablesCharacterRecord"},"meta":{"$ref":"#/components/schemas/ConfusablesCharacterMeta"}},"required":["data","meta"],"additionalProperties":false},"ConfusablesIntentionalRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"a":{"type":"string","description":"The pair's first character, in the file's own order.","example":"A"},"b":{"type":"string","description":"The pair's second character.","example":"Α"},"aCodePoint":{"type":"string","description":"`a` in U+XXXX notation.","example":"U+0041"},"bCodePoint":{"type":"string","description":"`b` in U+XXXX notation.","example":"U+0391"},"aName":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The Unicode Name of `a`; null if this snapshot bundles none.","example":"LATIN CAPITAL LETTER A"},"bName":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The Unicode Name of `b`; null if this snapshot bundles none.","example":"GREEK CAPITAL LETTER ALPHA"},"aScript":{"type":"string","description":"The ISO 15924 script code of `a`.","example":"Latn"},"bScript":{"type":"string","description":"The ISO 15924 script code of `b`.","example":"Grek"},"aIdentifierStatus":{"type":"string","description":"Allowed or Restricted for `a` under the General Security Profile.","example":"Allowed"},"bIdentifierStatus":{"type":"string","description":"Allowed or Restricted for `b`.","example":"Allowed"},"sameSkeleton":{"type":"boolean","description":"Whether the pair also shares a UTS #39 skeleton. True for all 77 rows in this snapshot — the field exists so a future release that breaks the agreement is visible rather than silent.","example":true}},"additionalProperties":false},"ConfusablesIntentionalMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["confusables"]},"params":{"type":"object","properties":{"char":{"type":"string","minLength":1,"maxLength":8}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/intentional"]},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","route","count"],"additionalProperties":false},"ConfusablesIntentionalEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ConfusablesIntentionalRecord"}},"meta":{"$ref":"#/components/schemas/ConfusablesIntentionalMeta"}},"required":["data","meta"],"additionalProperties":false},"ContentNegotiationParseRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"accept":{"type":"string","description":"Input Accept field value.","example":"text/html, application/json;q=0.8"},"count":{"type":"integer","description":"Number of parsed media ranges.","example":2},"ranges":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Ranges with normalized type/subtype, parameters, q, specificity and original order.","example":[{"mediaRange":"text/html","type":"text","subtype":"html","parameters":[],"q":1,"specificity":2,"order":0}]}},"additionalProperties":false},"ContentNegotiationParseMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["content-negotiation"]},"params":{"type":"object","properties":{"accept":{"type":"string","minLength":3,"maxLength":2048}},"required":["accept"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/parse"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"ContentNegotiationParseEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ContentNegotiationParseRecord"},"meta":{"$ref":"#/components/schemas/ContentNegotiationParseMeta"}},"required":["data","meta"],"additionalProperties":false},"ContentNegotiationSelectRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"accept":{"type":"string","description":"Input Accept field value.","example":"application/json, text/html;q=0.8"},"available":{"type":"array","items":{"type":"string"},"description":"Parsed concrete representations in supplied order.","example":["text/html","application/json"]},"matched":{"type":"boolean","description":"Whether at least one representation has a controlling range with q above zero.","example":true},"selected":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Selected canonical media type, or null when none is acceptable.","example":"application/json"},"selectedIndex":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Zero-based position in available, or null when unmatched.","example":1},"matchedRange":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Controlling canonical Accept media range, or null.","example":"application/json"},"q":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Quality assigned by the controlling range, or null.","example":1},"specificity":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Controlling wildcard specificity: 0 for */*, 1 for type/*, 2 for exact.","example":2},"matchedParameters":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Number of media parameters on the controlling range, or null.","example":0}},"additionalProperties":false},"ContentNegotiationSelectMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["content-negotiation"]},"params":{"type":"object","properties":{"accept":{"type":"string","minLength":3,"maxLength":2048},"available":{"type":"string","minLength":3,"maxLength":2048}},"required":["accept","available"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/select"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"ContentNegotiationSelectEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ContentNegotiationSelectRecord"},"meta":{"$ref":"#/components/schemas/ContentNegotiationSelectMeta"}},"required":["data","meta"],"additionalProperties":false},"ConversationsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Distinct synthetic conversation ID.","example":"cnv_19a3ef920000"},"channel":{"type":"string","description":"direct | group | support.","example":"group"},"title":{"type":"string","description":"Synthetic title appropriate to the channel.","example":"Product launch"},"participants":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"2–8 participants with stable id, name, avatarUrl and member/support-agent role.","example":[{"id":"usr_a1","name":"Avery Chen","avatarUrl":"https://randomapi.dev/api/avatars/image?seed=usr_a1","role":"member"}]},"messages":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"1–20 chronological messages with id, valid senderId, text, sentAt and read.","example":[{"id":"msg_a1","senderId":"usr_a1","text":"Could you review this?","sentAt":"2026-01-10T12:00:00.000Z","read":false}]},"lastMessageAt":{"type":"string","format":"date-time","description":"Exactly the sentAt of the final chronological message.","example":"2026-01-10T12:00:00.000Z"},"unreadCount":{"type":"integer","description":"Exact count of messages whose read field is false.","example":1}},"additionalProperties":false},"ConversationsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["conversations"]},"params":{"type":"object","properties":{"channel":{"type":"string","enum":["direct","group","support"]},"participantCount":{"type":"integer","minimum":2,"maximum":8},"minMessages":{"type":"integer","minimum":1,"maximum":20},"maxMessages":{"type":"integer","minimum":1,"maximum":20},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["channel","minMessages","maxMessages"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"ConversationsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ConversationsRootRecord"}},"meta":{"$ref":"#/components/schemas/ConversationsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"CookiesParseRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"name":{"type":"string","description":"cookie-name after RFC 6265 §5.2 WSP trimming.","example":"__Host-sid"},"value":{"type":"string","description":"cookie-value after WSP trimming; surrounding double quotes are NOT removed.","example":"a1b2c3"},"attributes":{"type":"object","additionalProperties":true,"description":"Parsed attributes as sent, before any lifetime limit: expires (ISO 8601 or null), maxAge (delta-seconds or null), domain (lower-cased, leading dot removed, otherwise unvalidated), path (raw value or null), secure, httpOnly, sameSite (raw token or null).","example":{"expires":null,"maxAge":3600,"domain":null,"path":"/","secure":true,"httpOnly":true,"sameSite":"Lax"}},"effectiveExpiry":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Expiry a user agent would store: Max-Age wins over Expires (RFC 6265 §5.3), then the rfc6265bis §5.5 400-day lifetime limit is applied. Null for a session cookie.","example":"2026-01-15T10:30:00.000Z"},"expirySource":{"type":"string","description":"Which attribute produced effectiveExpiry: Max-Age, Expires or session.","example":"Max-Age"},"hostOnly":{"type":"boolean","description":"True when there is no usable Domain attribute, locking the cookie to the origin host.","example":true},"cookieDomain":{"type":"string","description":"Domain a user agent would store: the Domain attribute, or the canonicalized origin host when host-only.","example":"app.example.com"},"defaultPath":{"type":"string","description":"RFC 6265 §5.1.4 default-path of the origin URL — everything up to but not including the right-most '/', or '/'. This is what a cookie gets when Path is omitted.","example":"/dashboard"},"cookiePath":{"type":"string","description":"Path a user agent would store: a Path attribute starting with '/', otherwise defaultPath.","example":"/"},"prefix":{"type":"string","description":"Detected name prefix: none, __Host- or __Secure-.","example":"__Host-"},"prefixVerdict":{"type":"string","description":"pass, fail or not-applicable for the detected prefix's requirements.","example":"pass"},"prefixFailure":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The prefix requirement(s) that failed, or null when the prefix passes or is absent.","example":null},"accepted":{"type":"boolean","description":"Whether a user agent applying every rule below would store this cookie, assuming the rules reported as 'not-checked' pass. When that assumption is what makes this true, a warning names the rule.","example":true},"rules":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Ordered storage rules, each with rule, verdict (pass | fail | not-applicable | not-checked), detail and specSource ('RFC 6265' or 'rfc6265bis draft'). Every rule is evaluated, so all failures are visible at once.","example":[{"rule":"__Host- prefix requires Secure, no Domain attribute and an explicit Path=/","verdict":"fail","detail":"__Host- cookies must not carry a Domain attribute. The cookie is ignored entirely.","specSource":"rfc6265bis draft"}]},"rejectedAttributes":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Attributes that were parsed and then discarded, each with attribute, value, reason and specSource.","example":[{"attribute":"Expires","value":"tomorrow","reason":"The value did not parse as a cookie-date under the RFC 6265 §5.1.1 algorithm, so the attribute is ignored and the cookie becomes a session cookie unless Max-Age is present.","specSource":"RFC 6265"}]},"warnings":{"type":"array","items":{"type":"string"},"description":"Advisory notes about this cookie — spec footguns, browser-specific behaviour and checks this API does not perform.","example":["'Domain=example.com' is not host-only: it also sends the cookie to every subdomain of example.com. Omit the Domain attribute if you want a host-only cookie."]}},"additionalProperties":false},"CookiesParseMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["cookies"]},"params":{"type":"object","properties":{"setCookie":{"type":"string","maxLength":4096},"originUrl":{"type":"string","maxLength":2048},"at":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["setCookie","originUrl"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/parse"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"CookiesParseEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CookiesParseRecord"},"meta":{"$ref":"#/components/schemas/CookiesParseMeta"}},"required":["data","meta"],"additionalProperties":false},"CookiesMatchRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"wouldBeSent":{"type":"boolean","description":"Whether a user agent would include this cookie in the request's Cookie header, assuming the set-time rules reported as 'not-checked' pass (a warning names them when that assumption is load-bearing).","example":true},"stored":{"type":"boolean","description":"Whether the cookie was accepted at set time, assuming the rules reported as 'not-checked' pass; a cookie that was never stored can never be sent.","example":true},"decidingRule":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"First rule that excluded the cookie, or null when it is sent.","example":null},"name":{"type":"string","description":"cookie-name being tested.","example":"sid"},"cookieDomain":{"type":"string","description":"Domain a user agent would have stored for this cookie.","example":"app.example.com"},"cookiePath":{"type":"string","description":"Path a user agent would have stored for this cookie.","example":"/dashboard"},"hostOnly":{"type":"boolean","description":"True when the cookie is locked to one host (no Domain attribute).","example":true},"sameSite":{"type":"string","description":"Effective same-site enforcement: Strict, Lax, None or Default (no/unrecognized attribute).","example":"Lax"},"effectiveExpiry":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Expiry used for the expiry check, after the rfc6265bis §5.5 400-day lifetime limit; null for a session cookie.","example":null},"requestHost":{"type":"string","description":"Canonicalized host of the request URL.","example":"app.example.com"},"requestPath":{"type":"string","description":"Path of the request URL used for path-match.","example":"/dashboard/settings/profile"},"cookieHeader":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The Cookie header field value this cookie contributes, or null when it is not sent.","example":"sid=a1b2c3"},"reasons":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Every failing storage rule followed by all retrieval rules — expiry, domain-match, path-match, Secure, SameSite and HttpOnly — each with rule, verdict, detail and specSource.","example":[{"rule":"SameSite enforcement for this request context","verdict":"fail","detail":"'Lax' enforcement withholds the cookie from cross-site subresource requests and non-top-level navigations. Set isTopLevelNavigation=true to model a link click.","specSource":"rfc6265bis draft"}]},"warnings":{"type":"array","items":{"type":"string"},"description":"Advisory notes about the cookie and the modelled request context.","example":[]}},"additionalProperties":false},"CookiesMatchMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["cookies"]},"params":{"type":"object","properties":{"setCookie":{"type":"string","maxLength":4096},"originUrl":{"type":"string","maxLength":2048},"requestUrl":{"type":"string","maxLength":2048},"at":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"sameSiteContext":{"type":"string","enum":["same-site","cross-site"]},"secureContext":{"type":"boolean"},"isTopLevelNavigation":{"type":"boolean"}},"required":["setCookie","originUrl","requestUrl","sameSiteContext","secureContext","isTopLevelNavigation"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/match"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"CookiesMatchEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CookiesMatchRecord"},"meta":{"$ref":"#/components/schemas/CookiesMatchMeta"}},"required":["data","meta"],"additionalProperties":false},"CoordinateFormatsParseRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"input":{"type":"string","description":"The coordinate text exactly as received, before notation folding.","example":"57°42'12.3\"N, 011°58'01\"W"},"detectedFormat":{"type":"string","description":"Notation found in the text: decimal, ddm, dms, mixed (one of each) or iso6709.","example":"dms"},"detectedOrder":{"type":"string","description":"Which coordinate came first — latlng or lnglat. Decided by hemisphere letters, by a value above 90, or by the 'order' parameter.","example":"latlng"},"latitude":{"type":"number","description":"Latitude in WGS 84 decimal degrees, rounded to 9 decimals. No datum transformation is applied.","example":57.703416667},"longitude":{"type":"number","description":"Longitude in WGS 84 decimal degrees, rounded to 9 decimals.","example":-11.966944444},"hemisphereSource":{"type":"string","description":"How the hemispheres were established, per axis: letter (both carry N/S/E/W), sign (signed notation, where an unsigned value means north/east), inferred (neither letters nor signs) or mixed (only one axis carries a letter — the other was assumed, and a warning says which).","example":"letter"},"precisionDigits":{"type":"integer","description":"Fractional digits carried by the smallest unit in the text, taken as the larger of the two coordinates.","example":1},"warnings":{"type":"array","items":{"type":"string"},"description":"Parser notes: an overridden 'order', a missing ISO 6709 solidus, an ignored height, or an axis whose hemisphere was assumed because it carried no letter. Empty when there is nothing to report.","example":[]}},"additionalProperties":false},"CoordinateFormatsParseMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["coordinate-formats"]},"params":{"type":"object","properties":{"value":{"type":"string","minLength":3,"maxLength":128},"order":{"type":"string","enum":["latlng","lnglat"]}},"required":["value"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/parse"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"CoordinateFormatsParseEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CoordinateFormatsParseRecord"},"meta":{"$ref":"#/components/schemas/CoordinateFormatsParseMeta"}},"required":["data","meta"],"additionalProperties":false},"CoordinateFormatsConvertRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"latitude":{"type":"number","description":"Input latitude in WGS 84 decimal degrees, echoed unchanged.","example":57.703417},"longitude":{"type":"number","description":"Input longitude in WGS 84 decimal degrees, echoed unchanged.","example":-11.966944},"format":{"type":"string","description":"Requested output notation: dd, ddm, dms or iso6709.","example":"dms"},"precision":{"type":"integer","description":"Fractional digits applied to the smallest unit of the requested notation.","example":3},"latitudeText":{"type":"string","description":"Formatted latitude. dd is signed decimal degrees, ddm and dms carry an N/S letter, iso6709 is a sign plus two-digit degrees.","example":"57°42'12.301\"N"},"longitudeText":{"type":"string","description":"Formatted longitude; longitude degrees are zero-padded to three digits in ddm, dms and iso6709.","example":"011°58'00.998\"W"},"text":{"type":"string","description":"Both coordinates in one string: comma-separated for dd, space-separated for ddm and dms, concatenated and solidus-terminated for iso6709.","example":"57°42'12.301\"N 011°58'00.998\"W"},"roundedLatitude":{"type":"number","description":"The exact decimal-degree value latitudeText denotes after rounding — nothing about the rounding is left implicit.","example":57.703417},"roundedLongitude":{"type":"number","description":"The exact decimal-degree value longitudeText denotes after rounding.","example":-11.966944},"rounding":{"type":"string","description":"The rounding method, stated rather than left to the reader: always half-away-from-zero.","example":"half-away-from-zero"},"carried":{"type":"boolean","description":"True when rounding pushed seconds or minutes to 60 and the value carried into the next larger unit. Always false for dd and iso6709, which have no sub-degree units.","example":false}},"additionalProperties":false},"CoordinateFormatsConvertMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["coordinate-formats"]},"params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180},"format":{"type":"string","enum":["dd","ddm","dms","iso6709"]},"precision":{"type":"integer","minimum":0,"maximum":8}},"required":["lat","lng","format","precision"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/convert"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"CoordinateFormatsConvertEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CoordinateFormatsConvertRecord"},"meta":{"$ref":"#/components/schemas/CoordinateFormatsConvertMeta"}},"required":["data","meta"],"additionalProperties":false},"CoordinateFormatsMaidenheadRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"operation":{"type":"string","description":"encode when a lat/lng pair was supplied, decode when a locator was supplied.","example":"encode"},"locator":{"type":"string","description":"Canonical locator in this API's mixed-case rendering: uppercase field, digits, lowercase sub-square, digits, lowercase extended sub-square.","example":"JN18du"},"locatorUpperCase":{"type":"string","description":"The same locator in the all-uppercase notation the IARU Region 1 VHF Handbook prescribes. Both strings identify the same squaroid.","example":"JN18DU"},"length":{"type":"integer","description":"Locator length in characters: 2, 4, 6, 8 or 10.","example":6},"latitude":{"type":"number","description":"Latitude of the squaroid's centre, which is the locator's IARU reference location. When encoding this is NOT the point you supplied.","example":48.854166667},"longitude":{"type":"number","description":"Longitude of the squaroid's centre.","example":2.291666667},"south":{"type":"number","description":"Southern edge of the squaroid in decimal degrees. A point exactly on an edge belongs to the square that edge starts, so south is inclusive.","example":48.833333333},"west":{"type":"number","description":"Western edge of the squaroid in decimal degrees, inclusive on the same rule as south.","example":2.25},"north":{"type":"number","description":"Northern edge of the squaroid in decimal degrees, exclusive — except at +90, where the pole is clamped into the top row of squares.","example":48.875},"east":{"type":"number","description":"Eastern edge of the squaroid in decimal degrees, exclusive; +180 is the same meridian as -180 and encodes into the first column.","example":2.333333333},"widthDegrees":{"type":"number","description":"Longitude span of the squaroid in degrees — 1/12, or 5 arcminutes, at six characters.","example":0.083333333},"heightDegrees":{"type":"number","description":"Latitude span of the squaroid in degrees — 1/24, or 2.5 arcminutes, at six characters.","example":0.041666667}},"additionalProperties":false},"CoordinateFormatsMaidenheadMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["coordinate-formats"]},"params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180},"locator":{"type":"string","minLength":2,"maxLength":10},"length":{"type":"integer","minimum":2,"maximum":10}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/maidenhead"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"CoordinateFormatsMaidenheadEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CoordinateFormatsMaidenheadRecord"},"meta":{"$ref":"#/components/schemas/CoordinateFormatsMaidenheadMeta"}},"required":["data","meta"],"additionalProperties":false},"CoordinatesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"latitude":{"type":"number","description":"Latitude in decimal degrees (-90..90), rounded to 6 decimals (~0.11 m).","example":40.782912},"longitude":{"type":"number","description":"Longitude in decimal degrees (-180..180), rounded to 6 decimals.","example":-73.965355},"distanceKm":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Great-circle (haversine, R = 6371 km) distance to the 'near' point in km, rounded to 2 decimals — null unless 'near' is used.","example":7.42}},"additionalProperties":false},"CoordinatesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["coordinates"]},"params":{"type":"object","properties":{"near":{"type":"string"},"radiusKm":{"type":"number","minimum":0.1,"maximum":20000},"bbox":{"type":"string"}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"CoordinatesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CoordinatesRootRecord"}},"meta":{"$ref":"#/components/schemas/CoordinatesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"CorsPreflightPreflightRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"method":{"type":"string","description":"Method token after 'normalize a method', which uppercases only DELETE, GET, HEAD, OPTIONS, POST and PUT.","example":"PUT"},"mode":{"type":"string","description":"Request mode that was evaluated: cors, no-cors or same-origin.","example":"cors"},"credentials":{"type":"string","description":"Credentials mode echoed back. It does not affect whether a preflight is required.","example":"same-origin"},"origin":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Requesting origin after the URL Standard's host serializer — lowercased, IPv6 literal compressed, default port dropped — or null when none was supplied.","example":"https://app.example.com"},"preflightRequired":{"type":"boolean","description":"Whether a browser with a cold preflight cache would send an OPTIONS request first.","example":true},"reasons":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Conditions that force the preflight: { code, header, detail }. code is one of non-safelisted-method, non-safelisted-header-name, unsafe-content-type, unsafe-header-value-byte, unsafe-range-value, header-value-too-long or safelist-value-size-exceeded; header names the header for the five per-header codes and is null for the two whole-request ones. Empty when no preflight is required.","example":[{"code":"non-safelisted-method","header":null,"detail":"'PUT' is not a CORS-safelisted method; only GET, HEAD and POST avoid a preflight."}]},"headers":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Per-header verdict: { name, valueLength, forbidden, safelisted, unsafe, note }. safelisted and unsafe are null for forbidden headers. In mode=no-cors the note also says when the Headers guard drops the header outright, which it does to Range even though Range is CORS-safelisted.","example":[{"name":"content-type","valueLength":16,"forbidden":false,"safelisted":false,"unsafe":true,"note":"The Content-Type essence 'application/json' is not safelisted. Only application/x-www-form-urlencoded, multipart/form-data and text/plain avoid a preflight."}]},"unsafeRequestHeaderNames":{"type":"array","items":{"type":"string"},"description":"The CORS-unsafe request-header names for this header list: lowercased, de-duplicated and sorted. A preflight puts exactly this list in Access-Control-Request-Headers.","example":["content-type"]},"safelistValueSize":{"type":"integer","description":"Combined byte length of the safelisted header values; above 1024 every safelisted name becomes CORS-unsafe too.","example":16},"preflightRequest":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"The CORS headers of the OPTIONS request the browser would send, or null when there is no preflight.","example":{"method":"OPTIONS","headers":[{"name":"Accept","value":"*/*"},{"name":"Access-Control-Request-Method","value":"PUT"},{"name":"Access-Control-Request-Headers","value":"content-type"}]}}},"additionalProperties":false},"CorsPreflightPreflightMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["cors-preflight"]},"params":{"type":"object","properties":{"method":{"type":"string","minLength":1,"maxLength":64},"requestHeaders":{"type":"array","items":{"type":"string"},"minItems":1},"mode":{"type":"string","enum":["cors","no-cors","same-origin"]},"credentials":{"type":"string","enum":["omit","same-origin","include"]},"origin":{"type":"string","maxLength":256}},"required":["method","mode","credentials"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/preflight"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"CorsPreflightPreflightEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CorsPreflightPreflightRecord"},"meta":{"$ref":"#/components/schemas/CorsPreflightPreflightMeta"}},"required":["data","meta"],"additionalProperties":false},"CorsPreflightCheckRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"method":{"type":"string","description":"Normalized method token used for the preflight method check.","example":"PUT"},"origin":{"type":"string","description":"Requesting origin after serialization (lowercased host, IPv6 literal compressed, default port dropped) — the exact bytes Access-Control-Allow-Origin is compared against. allowOrigin itself is never rewritten.","example":"https://app.example.com"},"credentials":{"type":"string","description":"Credentials mode of the request: omit, same-origin or include.","example":"include"},"preflightRequired":{"type":"boolean","description":"Whether the Access-Control-Allow-Methods and Access-Control-Allow-Headers rules apply at all.","example":true},"allowed":{"type":"boolean","description":"Whether every modeled step passes, so the browser would hand the response to JavaScript.","example":false},"failedStep":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The first failing step, or null when nothing fails: cors-check-allow-origin-missing, cors-check-allow-origin-mismatch, cors-check-allow-credentials-not-true, preflight-method-not-allowed, preflight-non-wildcard-header-not-allowed or preflight-unsafe-header-not-allowed.","example":"cors-check-allow-origin-mismatch"},"failureDetail":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Sentence explaining the failing step and how to fix it, or null when the request is allowed.","example":"Access-Control-Allow-Origin: * is compared byte-for-byte with 'https://app.example.com' once the credentials mode is 'include', and the wildcard never matches. Echo the exact origin instead and add Access-Control-Allow-Credentials: true."},"originAllowed":{"type":"boolean","description":"Whether Access-Control-Allow-Origin covers this origin, honoring the rule that '*' stops matching once credentials are included.","example":false},"credentialsAllowed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether credentials would be honored: Access-Control-Allow-Credentials is true AND the origin is named exactly. Null when the credentials mode attaches no credentials.","example":false},"methodAllowed":{"type":"boolean","description":"Whether the preflight method check passes. Always true without a preflight, and true for GET/HEAD/POST even when Access-Control-Allow-Methods omits them.","example":true},"headersAllowed":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One verdict per CORS-unsafe request-header name: { name, allowed, nonWildcard, reason }. Empty without a preflight.","example":[{"name":"authorization","allowed":false,"nonWildcard":true,"reason":"'authorization' is a CORS-non-wildcard request-header name, so Access-Control-Allow-Headers must name it explicitly; '*' never covers it."}]},"readableResponseHeaders":{"type":"array","items":{"type":"string"},"description":"Response header names JavaScript could read: the seven CORS-safelisted names plus Access-Control-Expose-Headers entries. Empty when allowed is false, because a blocked response exposes nothing.","example":["cache-control","content-language","content-length","content-type","expires","last-modified","pragma"]},"allResponseHeadersReadable":{"type":"boolean","description":"True only when the response is allowed and Access-Control-Expose-Headers is '*' with a credentials mode other than 'include', which exposes every response header except the forbidden response-header names Set-Cookie and Set-Cookie2.","example":false},"maxAge":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"Preflight cache lifetime { seconds, source, note }; source is 'header' or 'default'. Null unless a preflight both happens and succeeds.","example":{"seconds":5,"source":"default","note":"Browsers cap this at their own upper limit, which the Fetch Standard leaves unspecified, and may drop the entry sooner. Preflight cache entries are keyed by origin, URL, credentials mode and the individual method or header name."}},"varyOriginAdvice":{"type":"string","description":"Caching advice about Vary: Origin for this configuration. Vary is not part of the CORS check and never changes 'allowed'.","example":"Access-Control-Allow-Origin: * is a constant, so Vary: Origin is not required — just make sure the header is sent on every response for this resource, including non-CORS ones."}},"additionalProperties":false},"CorsPreflightCheckMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["cors-preflight"]},"params":{"type":"object","properties":{"method":{"type":"string","minLength":1,"maxLength":64},"origin":{"type":"string","maxLength":256},"requestHeaders":{"type":"array","items":{"type":"string"},"minItems":1},"credentials":{"type":"string","enum":["omit","same-origin","include"]},"allowOrigin":{"type":"string","maxLength":256},"allowMethods":{"type":"array","items":{"type":"string"},"minItems":1},"allowHeaders":{"type":"array","items":{"type":"string"},"minItems":1},"allowCredentials":{"type":"boolean"},"exposeHeaders":{"type":"array","items":{"type":"string"},"minItems":1},"maxAge":{"type":"integer","minimum":0,"maximum":31536000}},"required":["method","origin","credentials","allowCredentials"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/check"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"CorsPreflightCheckEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CorsPreflightCheckRecord"},"meta":{"$ref":"#/components/schemas/CorsPreflightCheckMeta"}},"required":["data","meta"],"additionalProperties":false},"CountriesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"name":{"type":"string","description":"Common English country or territory name.","example":"Denmark"},"code":{"type":"string","description":"ISO 3166-1 alpha-2 code.","example":"DK"},"alpha3":{"type":"string","description":"ISO 3166-1 alpha-3 code.","example":"DNK"},"numeric":{"type":"string","description":"Three-digit ISO 3166-1 numeric code, kept as text to preserve leading zeroes.","example":"208"},"capital":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Capital; multiple official seats are separated by semicolons. Null for territories without a capital.","example":"Copenhagen"},"region":{"type":"string","description":"Lowercase geographic region: africa, americas, asia, europe, oceania or antarctic.","example":"europe"},"subregion":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"UN M49 geographic subregion where assigned; otherwise null.","example":"Northern Europe"},"currencyCode":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Primary active ISO 4217 currency code. Null where no single active ISO currency is assigned.","example":"DKK"},"languages":{"type":"array","items":{"type":"string"},"description":"English labels normalized to the LOC ISO 639 Set 1 registry; Papiamento is included explicitly for Aruba and Curaçao despite having no Set 1 code.","example":["Danish"]},"callingCode":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Primary international calling prefix. Shared numbering plans may include the destination prefix; null where none is assigned.","example":"+45"},"flagEmoji":{"type":"string","description":"Unicode regional-indicator flag sequence for the alpha-2 code.","example":"🇩🇰"},"latitude":{"type":"number","description":"Latitude of a label-safe point inside the largest/main land unit (WGS84), not the capital's latitude.","example":56},"longitude":{"type":"number","description":"Longitude of a label-safe point inside the largest/main land unit (WGS84), not the capital's longitude.","example":10},"areaSqKm":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Total area in square kilometres (land plus inland water) as published by GeoNames — one rounded figure per entry, not a measurement we computed. Null where GeoNames publishes no usable figure; today that is only UM (United States Minor Outlying Islands), which it prints as 0.","example":43094},"continent":{"type":"string","description":"GeoNames physical continent code: AF, AN, AS, EU, NA, OC or SA. This is a different classification from region, which is UN M49 statistical geography, and the two genuinely disagree for some entries (Cyprus is region asia but continent EU).","example":"EU"},"ccTLD":{"type":"string","description":"Country-code top-level domain recorded by GeoNames, leading dot included. Every entry has one. The United Kingdom's is .uk, not .gb; Saint Barthélemy (BL) and Saint Martin (MF) both carry Guadeloupe's .gp because .bl and .mf have never been delegated.","example":".dk"},"languageTags":{"type":"array","items":{"type":"string"},"description":"GeoNames' raw language column split on commas: mostly ISO 639-1 alpha-2, ISO 639-2/-3 alpha-3 (including collective codes such as cau and tut) where no alpha-2 exists, each optionally carrying an ISO 3166-1 region subtag. Not validated against the IANA Language Subtag Registry and far broader than the languages field. Empty for AQ, BV and HM.","example":["da-DK","en","fo","de-DK"]}},"additionalProperties":false},"CountriesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["countries"]},"params":{"type":"object","properties":{"region":{"type":"string","enum":["any","africa","americas","asia","europe","oceania","antarctic"]},"continent":{"type":"string","enum":["any","AF","AN","AS","EU","NA","OC","SA"]},"search":{"type":"string","minLength":1,"maxLength":100},"minArea":{"type":"number","minimum":0},"maxArea":{"type":"number","minimum":0},"sort":{"type":"string","enum":["name","area-desc","area-asc"]}},"required":["region","continent","sort"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","count"],"additionalProperties":false},"CountriesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CountriesRootRecord"}},"meta":{"$ref":"#/components/schemas/CountriesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"CountriesLookupRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"name":{"type":"string","description":"Common English country or territory name.","example":"Denmark"},"code":{"type":"string","description":"ISO 3166-1 alpha-2 code.","example":"DK"},"alpha3":{"type":"string","description":"ISO 3166-1 alpha-3 code.","example":"DNK"},"numeric":{"type":"string","description":"Three-digit ISO 3166-1 numeric code, kept as text to preserve leading zeroes.","example":"208"},"capital":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Capital; multiple official seats are separated by semicolons. Null for territories without a capital.","example":"Copenhagen"},"region":{"type":"string","description":"Lowercase geographic region: africa, americas, asia, europe, oceania or antarctic.","example":"europe"},"subregion":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"UN M49 geographic subregion where assigned; otherwise null.","example":"Northern Europe"},"currencyCode":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Primary active ISO 4217 currency code. Null where no single active ISO currency is assigned.","example":"DKK"},"languages":{"type":"array","items":{"type":"string"},"description":"English labels normalized to the LOC ISO 639 Set 1 registry; Papiamento is included explicitly for Aruba and Curaçao despite having no Set 1 code.","example":["Danish"]},"callingCode":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Primary international calling prefix. Shared numbering plans may include the destination prefix; null where none is assigned.","example":"+45"},"flagEmoji":{"type":"string","description":"Unicode regional-indicator flag sequence for the alpha-2 code.","example":"🇩🇰"},"latitude":{"type":"number","description":"Latitude of a label-safe point inside the largest/main land unit (WGS84), not the capital's latitude.","example":56},"longitude":{"type":"number","description":"Longitude of a label-safe point inside the largest/main land unit (WGS84), not the capital's longitude.","example":10},"areaSqKm":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Total area in square kilometres (land plus inland water) as published by GeoNames — one rounded figure per entry, not a measurement we computed. Null where GeoNames publishes no usable figure; today that is only UM (United States Minor Outlying Islands), which it prints as 0.","example":43094},"continent":{"type":"string","description":"GeoNames physical continent code: AF, AN, AS, EU, NA, OC or SA. This is a different classification from region, which is UN M49 statistical geography, and the two genuinely disagree for some entries (Cyprus is region asia but continent EU).","example":"EU"},"ccTLD":{"type":"string","description":"Country-code top-level domain recorded by GeoNames, leading dot included. Every entry has one. The United Kingdom's is .uk, not .gb; Saint Barthélemy (BL) and Saint Martin (MF) both carry Guadeloupe's .gp because .bl and .mf have never been delegated.","example":".dk"},"languageTags":{"type":"array","items":{"type":"string"},"description":"GeoNames' raw language column split on commas: mostly ISO 639-1 alpha-2, ISO 639-2/-3 alpha-3 (including collective codes such as cau and tut) where no alpha-2 exists, each optionally carrying an ISO 3166-1 region subtag. Not validated against the IANA Language Subtag Registry and far broader than the languages field. Empty for AQ, BV and HM.","example":["da-DK","en","fo","de-DK"]}},"additionalProperties":false},"CountriesLookupMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["countries"]},"params":{"type":"object","properties":{"code":{"type":"string","minLength":2,"maxLength":3}},"required":["code"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/lookup"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"CountriesLookupEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CountriesLookupRecord"},"meta":{"$ref":"#/components/schemas/CountriesLookupMeta"}},"required":["data","meta"],"additionalProperties":false},"CountryBordersRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"code":{"type":"string","description":"ISO 3166-1 alpha-2 code, or XK — the one user-assigned code carried here.","example":"DE"},"name":{"type":"string","description":"English name, joined from this project's ISO 3166-1 country dataset.","example":"Germany"},"region":{"type":"string","description":"Lowercase geographic region: africa, americas, asia, europe, oceania or antarctic.","example":"europe"},"neighbours":{"type":"array","items":{"type":"string"},"description":"Alpha-2 codes of every country sharing a LAND border, alphabetically sorted. Maritime neighbours are never included, so FR-GB, US-RU and JP-KR are absent by design. Empty for the 87 entries with no land neighbour.","example":["AT","BE","CH","CZ","DK","FR","LU","NL","PL"]},"neighbourCount":{"type":"integer","description":"Number of land neighbours, 0–14 (CN and RU share the maximum).","example":9},"totalBorderLengthKm":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Sum of the published lengths of the neighbours listed here, excluding any neighbour with no published figure; null when no neighbour has one. This is our sum, not the upstream's own published total: the two differ for 15 entries, and for 1 more (GF) the upstream publishes no total at all. All 16 are explained in notes.","example":3694},"unknownLengthNeighbours":{"type":"array","items":{"type":"string"},"description":"Codes in neighbours for which no border length is published. Empty for 246 of the 250 entries: the only adjacencies without a published figure are AL-RS and CU-US — AL and RS because each country's entry publishes its Kosovo boundary instead, CU and US because the only published segment there is a base perimeter with no ISO code.","example":[]},"coastlineKm":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Published coastline length. Null for the 12 entries where the upstream has no separate record (AX, BQ, GF, GP, MQ, RE, YT), publishes a per-island breakdown or the literal NA instead of one figure (GS, SH, TF, UM), or publishes no Coastline field at all (BL). Never inferred and never coerced from a non-numeric value.","example":2389},"landlocked":{"type":"boolean","description":"True when the upstream explicitly annotates the coastline as (landlocked) or (doubly landlocked). Never derived from a numeric zero and never from a missing value.","example":false},"doublyLandlocked":{"type":"boolean","description":"Landlocked and every land neighbour is itself landlocked. True for exactly LI and UZ.","example":false},"isoStatus":{"type":"string","description":"officially-assigned for the 249 ISO 3166-1 entries, user-assigned for XK only. Filter on this to drop XK in one line.","example":"officially-assigned"},"notes":{"type":"array","items":{"type":"string"},"description":"Hand-authored caveats naming the upstream responsible where the two sources disagree, or where an ISO entity does not line up with an upstream entity. Empty for 210 of the 250 entries.","example":[]}},"additionalProperties":false},"CountryBordersRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["country-borders"]},"params":{"type":"object","properties":{"region":{"type":"string","enum":["africa","americas","asia","europe","oceania","antarctic"]},"search":{"type":"string","minLength":1,"maxLength":100},"landlocked":{"type":"boolean"},"doublyLandlocked":{"type":"boolean"},"neighbourOf":{"type":"string"},"minNeighbours":{"type":"integer","minimum":0,"maximum":14},"maxNeighbours":{"type":"integer","minimum":0,"maximum":14},"sort":{"type":"string","enum":["name","neighbours","borderLength"]},"offset":{"type":"integer","minimum":0,"maximum":249}},"required":["sort","offset"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","count"],"additionalProperties":false},"CountryBordersRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CountryBordersRootRecord"}},"meta":{"$ref":"#/components/schemas/CountryBordersRootMeta"}},"required":["data","meta"],"additionalProperties":false},"CountryBordersLookupRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"code":{"type":"string","description":"ISO 3166-1 alpha-2 code, or XK — the one user-assigned code carried here.","example":"DE"},"name":{"type":"string","description":"English name, joined from this project's ISO 3166-1 country dataset.","example":"Germany"},"region":{"type":"string","description":"Lowercase geographic region: africa, americas, asia, europe, oceania or antarctic.","example":"europe"},"isoStatus":{"type":"string","description":"officially-assigned for the 249 ISO 3166-1 entries, user-assigned for XK only. Filter on this to drop XK in one line.","example":"officially-assigned"},"neighbourCount":{"type":"integer","description":"Number of land neighbours in the neighbours array.","example":9},"neighbours":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One entry per LAND neighbour, alphabetical by code. Keys: code, name, borderLengthKm (float|null), borderLengthKmAlternate (float|null — the other side's published figure where the two upstream entries disagree; non-null for the 3 pairs DE-PL, IL-JO, MX-US only) and isoStatus.","example":[{"code":"AT","name":"Austria","borderLengthKm":801,"borderLengthKmAlternate":null,"isoStatus":"officially-assigned"}]},"totalBorderLengthKm":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Sum of the published lengths of the neighbours listed here, excluding any neighbour with no published figure; null when no neighbour has one. This is our sum, not the upstream's own published total: the two differ for 15 entries, and for 1 more (GF) the upstream publishes no total at all. All 16 are explained in notes.","example":3694},"unknownLengthNeighbours":{"type":"array","items":{"type":"string"},"description":"Codes in neighbours for which no border length is published. Empty for 246 of the 250 entries: the only adjacencies without a published figure are AL-RS and CU-US — AL and RS because each country's entry publishes its Kosovo boundary instead, CU and US because the only published segment there is a base perimeter with no ISO code.","example":[]},"coastlineKm":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Published coastline length. Null for the 12 entries where the upstream has no separate record (AX, BQ, GF, GP, MQ, RE, YT), publishes a per-island breakdown or the literal NA instead of one figure (GS, SH, TF, UM), or publishes no Coastline field at all (BL). Never inferred and never coerced from a non-numeric value.","example":2389},"landlocked":{"type":"boolean","description":"True when the upstream explicitly annotates the coastline as (landlocked) or (doubly landlocked). Never derived from a numeric zero and never from a missing value.","example":false},"doublyLandlocked":{"type":"boolean","description":"Landlocked and every land neighbour is itself landlocked. True for exactly LI and UZ.","example":false},"notes":{"type":"array","items":{"type":"string"},"description":"Hand-authored caveats naming the upstream responsible where the two sources disagree, or where an ISO entity does not line up with an upstream entity. Empty for 210 of the 250 entries.","example":[]}},"additionalProperties":false},"CountryBordersLookupMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["country-borders"]},"params":{"type":"object","properties":{"code":{"type":"string"}},"required":["code"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/lookup"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"CountryBordersLookupEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CountryBordersLookupRecord"},"meta":{"$ref":"#/components/schemas/CountryBordersLookupMeta"}},"required":["data","meta"],"additionalProperties":false},"CountryBordersPathRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"from":{"type":"string","description":"Canonical alpha-2 code of the origin.","example":"PT"},"to":{"type":"string","description":"Canonical alpha-2 code of the destination.","example":"PL"},"reachable":{"type":"boolean","description":"Whether a chain of land borders connects the two entries at all.","example":true},"hops":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Border crossings, i.e. path.length - 1. 0 when from equals to; null when unreachable.","example":4},"path":{"type":"array","items":{"type":"string"},"description":"Alpha-2 codes from origin to destination inclusive, empty when unreachable. Deterministic: several chains can be equally short, and the one returned is always the same.","example":["PT","ES","FR","DE","PL"]},"crossings":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One entry per crossing (path.length - 1 of them), keys from, to and borderLengthKm (float|null). Empty when unreachable or when from equals to.","example":[{"from":"PT","to":"ES","borderLengthKm":1224}]},"unreachableReason":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Null when reachable, otherwise exactly one of origin-has-no-land-neighbours, destination-has-no-land-neighbours or separate-land-masses. The origin is checked first, so this value names which side is isolated and is therefore direction-sensitive; reachable, hops and path are not.","example":null}},"additionalProperties":false},"CountryBordersPathMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["country-borders"]},"params":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}},"required":["from","to"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/path"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"CountryBordersPathEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CountryBordersPathRecord"},"meta":{"$ref":"#/components/schemas/CountryBordersPathMeta"}},"required":["data","meta"],"additionalProperties":false},"CountryBordersLandlockedRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"code":{"type":"string","description":"ISO 3166-1 alpha-2 code, or XK — the one user-assigned code carried here.","example":"UZ"},"name":{"type":"string","description":"English name, joined from this project's ISO 3166-1 country dataset.","example":"Uzbekistan"},"region":{"type":"string","description":"Lowercase geographic region: africa, americas, asia, europe, oceania or antarctic.","example":"asia"},"isoStatus":{"type":"string","description":"officially-assigned for the 249 ISO 3166-1 entries, user-assigned for XK only. Filter on this to drop XK in one line.","example":"officially-assigned"},"coastlineKm":{"type":"number","description":"Always 0 on this route — the published figure the classification rests on.","example":0},"doublyLandlocked":{"type":"boolean","description":"Landlocked and every land neighbour is itself landlocked. True for exactly LI and UZ.","example":true},"neighbours":{"type":"array","items":{"type":"string"},"description":"Alpha-2 codes of every country sharing a land border, alphabetically sorted.","example":["AF","KG","KZ","TJ","TM"]},"landlockedNeighbours":{"type":"array","items":{"type":"string"},"description":"Subset of neighbours that are themselves landlocked. Equal to neighbours exactly when doublyLandlocked is true.","example":["AF","KG","KZ","TJ","TM"]},"hopsToCoast":{"type":"integer","description":"Fewest border crossings from here to a country with a published coastline above zero. 1 for 43 of the entries, 2 for LI and UZ.","example":2}},"additionalProperties":false},"CountryBordersLandlockedMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["country-borders"]},"params":{"type":"object","properties":{"doubly":{"type":"boolean"},"region":{"type":"string","enum":["africa","americas","asia","europe","oceania","antarctic"]}},"required":["doubly"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/landlocked"]},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","route","count"],"additionalProperties":false},"CountryBordersLandlockedEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CountryBordersLandlockedRecord"}},"meta":{"$ref":"#/components/schemas/CountryBordersLandlockedMeta"}},"required":["data","meta"],"additionalProperties":false},"CountryStatsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"country":{"type":"string","description":"English country name, joined from the ISO 3166-1 dataset.","example":"Germany"},"code":{"type":"string","description":"ISO 3166-1 alpha-2 code.","example":"DE"},"alpha3":{"type":"string","description":"ISO 3166-1 alpha-3 code — the key the World Bank publishes under.","example":"DEU"},"region":{"type":"string","description":"Continental region shared with /api/countries.","example":"europe"},"worldBankRegion":{"type":"string","description":"World Bank operational region, verbatim (this is what its regional aggregates are built from).","example":"Europe & Central Asia"},"incomeGroup":{"type":"string","description":"World Bank income classification, verbatim.","example":"High income"},"indicators":{"type":"object","additionalProperties":true,"description":"One entry per requested indicator: `{ value, year }`. `year` is the year the value was actually observed; both are null where the World Bank publishes nothing — never interpolated.","example":{"population":{"value":83516593,"year":2024},"gdp":{"value":4685590000000,"year":2024}}}},"additionalProperties":false},"CountryStatsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["country-stats"]},"params":{"type":"object","properties":{"country":{"type":"array","items":{"type":"string"},"minItems":1},"indicators":{"type":"array","items":{"type":"string"},"minItems":1},"year":{"type":"string"},"region":{"type":"string","enum":["africa","americas","asia","europe","oceania","any"]},"incomeGroup":{"type":"string","enum":["high","upper-middle","lower-middle","low","any"]},"minPopulation":{"type":"integer","minimum":0},"maxPopulation":{"type":"integer","minimum":0}},"required":["year","region","incomeGroup"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","count"],"additionalProperties":false},"CountryStatsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CountryStatsRootRecord"}},"meta":{"$ref":"#/components/schemas/CountryStatsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"CountryStatsSeriesRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"economy":{"type":"string","description":"English name of the country or World Bank aggregate.","example":"Germany"},"alpha3":{"type":"string","description":"ISO 3166-1 alpha-3 code for countries; the World Bank's own three-letter code when `isAggregate` is true.","example":"DEU"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ISO 3166-1 alpha-2 code; null for aggregates, which have none.","example":"DE"},"isAggregate":{"type":"boolean","description":"True for World Bank groupings (World, Euro area, income groups); false for real countries.","example":false},"indicator":{"type":"string","description":"Indicator key: population, surfaceArea, populationDensity, gdp, gdpPerCapita, lifeExpectancy, urbanPopulationPercent, internetUsersPercent.","example":"population"},"year":{"type":"integer","description":"Calendar year of this observation.","example":2024},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"The published value, or null when the World Bank publishes nothing for that economy and year. Never interpolated.","example":83516593}},"additionalProperties":false},"CountryStatsSeriesMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["country-stats"]},"params":{"type":"object","properties":{"economy":{"type":"string"},"indicators":{"type":"array","items":{"type":"string"},"minItems":1},"from":{"type":"integer","minimum":1960,"maximum":2025},"to":{"type":"integer","minimum":1960,"maximum":2025}},"required":["economy"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/series"]},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","route","count"],"additionalProperties":false},"CountryStatsSeriesEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CountryStatsSeriesRecord"}},"meta":{"$ref":"#/components/schemas/CountryStatsSeriesMeta"}},"required":["data","meta"],"additionalProperties":false},"CountryStatsRankingRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"rank":{"type":"integer","description":"1-based position among the countries that have a value for this year; equal values share a rank.","example":1},"country":{"type":"string","description":"English country name.","example":"India"},"code":{"type":"string","description":"ISO 3166-1 alpha-2 code.","example":"IN"},"alpha3":{"type":"string","description":"ISO 3166-1 alpha-3 code.","example":"IND"},"region":{"type":"string","description":"Continental region shared with /api/countries.","example":"asia"},"worldBankRegion":{"type":"string","description":"World Bank operational region, verbatim.","example":"South Asia"},"incomeGroup":{"type":"string","description":"World Bank income classification, verbatim.","example":"Lower middle income"},"indicator":{"type":"string","description":"The indicator ranked on: population, surfaceArea, populationDensity, gdp, gdpPerCapita, lifeExpectancy, urbanPopulationPercent, internetUsersPercent.","example":"population"},"year":{"type":"integer","description":"The single year every row in this ranking is measured in.","example":2025},"value":{"type":"number","description":"The published value for that year.","example":1463865525}},"additionalProperties":false},"CountryStatsRankingMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["country-stats"]},"params":{"type":"object","properties":{"indicator":{"type":"string","enum":["population","surfaceArea","populationDensity","gdp","gdpPerCapita","lifeExpectancy","urbanPopulationPercent","internetUsersPercent"]},"year":{"type":"string"},"order":{"type":"string","enum":["desc","asc"]},"region":{"type":"string","enum":["africa","americas","asia","europe","oceania","any"]},"incomeGroup":{"type":"string","enum":["high","upper-middle","lower-middle","low","any"]}},"required":["indicator","order","region","incomeGroup"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/ranking"]},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","route","count"],"additionalProperties":false},"CountryStatsRankingEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CountryStatsRankingRecord"}},"meta":{"$ref":"#/components/schemas/CountryStatsRankingMeta"}},"required":["data","meta"],"additionalProperties":false},"CountryStatsAggregatesRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"aggregate":{"type":"string","description":"The World Bank's own label for the grouping.","example":"Euro area"},"code":{"type":"string","description":"The World Bank's three-letter aggregate code. It is not an ISO 3166-1 code.","example":"EMU"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The World Bank's own note on what the aggregate covers, verbatim; null where it publishes none.","example":"Euro area aggregate."},"indicators":{"type":"object","additionalProperties":true,"description":"One entry per requested indicator: `{ value, year }`, both null where nothing is published.","example":{"population":{"value":8215424893,"year":2025}}}},"additionalProperties":false},"CountryStatsAggregatesMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["country-stats"]},"params":{"type":"object","properties":{"aggregate":{"type":"array","items":{"type":"string"},"minItems":1},"indicators":{"type":"array","items":{"type":"string"},"minItems":1},"year":{"type":"string"}},"required":["year"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/aggregates"]},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","route","count"],"additionalProperties":false},"CountryStatsAggregatesEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CountryStatsAggregatesRecord"}},"meta":{"$ref":"#/components/schemas/CountryStatsAggregatesMeta"}},"required":["data","meta"],"additionalProperties":false},"CountryStatsIndicatorsRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"key":{"type":"string","description":"The key used by the `indicators` and `indicator` params.","example":"population"},"code":{"type":"string","description":"World Bank series code.","example":"SP.POP.TOTL"},"name":{"type":"string","description":"Indicator name exactly as the World Bank publishes it.","example":"Population, total"},"unit":{"type":"string","description":"Unit the values are expressed in.","example":"people"},"definition":{"type":"string","description":"The World Bank's own definition of the series.","example":"Total population is based on the de facto definition of population…"},"sourceOrganization":{"type":"string","description":"The statistical organisations the World Bank credits upstream of this series, verbatim.","example":"World Population Prospects, United Nations (UN), uri: https://population.un.org/wpp/, publisher: UN Population Division"},"firstYear":{"type":"integer","description":"First year column in the source file.","example":1960},"lastYear":{"type":"integer","description":"Last year column in the source file.","example":2025},"latestComparableYear":{"type":"integer","description":"The year /ranking ranks against by default: the newest year still covering at least 80% of the countries this series covers in its best-covered year.","example":2025},"significantDigits":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Significant digits kept when packing the snapshot; null when the series is stored exactly as published.","example":6},"countriesWithData":{"type":"integer","description":"How many of the 215 covered countries have at least one observation.","example":215},"observations":{"type":"integer","description":"Non-null observations across every economy and year in this series.","example":17262}},"additionalProperties":false},"CountryStatsIndicatorsMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["country-stats"]},"params":{"type":"object","properties":{"indicators":{"type":"array","items":{"type":"string"},"minItems":1}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/indicators"]},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","route","count"],"additionalProperties":false},"CountryStatsIndicatorsEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CountryStatsIndicatorsRecord"}},"meta":{"$ref":"#/components/schemas/CountryStatsIndicatorsMeta"}},"required":["data","meta"],"additionalProperties":false},"CountrySubdivisionsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"code":{"type":"string","description":"The ISO 3166-2 code in canonical uppercase-with-hyphen form: the alpha-2 country code plus 1–3 characters. Reproduced from CLDR 48's `subdivisionContainment`; see `countryCode` for what containment does and does not assert.","example":"US-CA"},"name":{"type":"string","description":"English name from CLDR, with CLDR's disambiguation mark stripped (see `cldrName`). CLDR's spelling is its own English form and is sometimes transliterated with diacritics the official English spelling omits (`IN-TS` is `Telangāna`, `JP-01` is `Hokkaidō`) — `search` folds diacritics so plain ASCII still finds them.","example":"California"},"cldrName":{"type":"string","description":"The exact string CLDR publishes for this code. Differs from `name` only for the 25 rows where CLDR appends a disambiguation mark (`²`, `³` or ` †`), e.g. `FR-IDF` → `\"Île-de-France²\"`. For the 19 `aliasOf` rows CLDR publishes no subdivision string at all, so this is its `<territory>` name for the alias target instead — `US-PR` is `\"Puerto Rico\"` from `<territory type=\"PR\">`, and you will not find `uspr` in `common/subdivisions/en.xml`.","example":"California"},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 of the country that CLDR 48's `subdivisionContainment` places this subdivision under — reproduced from CLDR / ISO 3166-2, never asserted by this API. Containment is a code-registry relationship, not a claim about status: `CN-HK`, `CN-MO` and `CN-TW` are listed under `CN` because ISO 3166-2:CN and CLDR list them there, while `HK`, `MO` and `TW` are simultaneously their own ISO 3166-1 rows in `/api/countries` — and `/api/country-borders` carries a 250th row, `XK`, that `/api/countries` excludes as user-assigned. Each surface reproduces its own cited source; see the neutrality statement above.","example":"US"},"country":{"type":"string","description":"English country name, joined from this project's ISO 3166-1 countries dataset.","example":"United States"},"parentCode":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The ISO 3166-2 code of the parent subdivision when CLDR nests this one, else null. Nesting is exactly two levels deep — never more.","example":"GB-ENG"},"level":{"type":"integer","description":"1 for a subdivision contained directly by the country, 2 for one contained by another subdivision. Only these two values occur (3,590 level-1 / 1,456 level-2).","example":1},"aliasOf":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Non-null for the 19 codes CLDR declares an `overlong` alias of an ISO 3166-1 region and still lists in the containment (`US-PR` → `\"PR\"`, `NL-AW` → `\"AW\"`, `FI-01` → `\"AX\"`). For these, `name` is CLDR's English **territory** name, because CLDR publishes no separate subdivision name for them. null for the other 5,027.","example":null}},"additionalProperties":false},"CountrySubdivisionsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["country-subdivisions"]},"params":{"type":"object","properties":{"country":{"type":"string"},"search":{"type":"string","minLength":2,"maxLength":60},"parent":{"type":"string","minLength":3,"maxLength":12},"level":{"type":"integer","minimum":1,"maximum":2},"offset":{"type":"integer","minimum":0,"maximum":5045}},"required":["offset"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","count"],"additionalProperties":false},"CountrySubdivisionsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CountrySubdivisionsRootRecord"}},"meta":{"$ref":"#/components/schemas/CountrySubdivisionsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"CountrySubdivisionsLookupRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"code":{"type":"string","description":"The ISO 3166-2 code in canonical uppercase-with-hyphen form: the alpha-2 country code plus 1–3 characters. Reproduced from CLDR 48's `subdivisionContainment`; see `countryCode` for what containment does and does not assert.","example":"US-CA"},"name":{"type":"string","description":"English name from CLDR, with CLDR's disambiguation mark stripped (see `cldrName`). CLDR's spelling is its own English form and is sometimes transliterated with diacritics the official English spelling omits (`IN-TS` is `Telangāna`, `JP-01` is `Hokkaidō`) — `search` folds diacritics so plain ASCII still finds them.","example":"California"},"cldrName":{"type":"string","description":"The exact string CLDR publishes for this code. Differs from `name` only for the 25 rows where CLDR appends a disambiguation mark (`²`, `³` or ` †`), e.g. `FR-IDF` → `\"Île-de-France²\"`. For the 19 `aliasOf` rows CLDR publishes no subdivision string at all, so this is its `<territory>` name for the alias target instead — `US-PR` is `\"Puerto Rico\"` from `<territory type=\"PR\">`, and you will not find `uspr` in `common/subdivisions/en.xml`.","example":"California"},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 of the country that CLDR 48's `subdivisionContainment` places this subdivision under — reproduced from CLDR / ISO 3166-2, never asserted by this API. Containment is a code-registry relationship, not a claim about status: `CN-HK`, `CN-MO` and `CN-TW` are listed under `CN` because ISO 3166-2:CN and CLDR list them there, while `HK`, `MO` and `TW` are simultaneously their own ISO 3166-1 rows in `/api/countries` — and `/api/country-borders` carries a 250th row, `XK`, that `/api/countries` excludes as user-assigned. Each surface reproduces its own cited source; see the neutrality statement above.","example":"US"},"country":{"type":"string","description":"English country name, joined from this project's ISO 3166-1 countries dataset.","example":"United States"},"parentCode":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The ISO 3166-2 code of the parent subdivision when CLDR nests this one, else null. Nesting is exactly two levels deep — never more.","example":"GB-ENG"},"level":{"type":"integer","description":"1 for a subdivision contained directly by the country, 2 for one contained by another subdivision. Only these two values occur (3,590 level-1 / 1,456 level-2).","example":1},"aliasOf":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Non-null for the 19 codes CLDR declares an `overlong` alias of an ISO 3166-1 region and still lists in the containment (`US-PR` → `\"PR\"`, `NL-AW` → `\"AW\"`, `FI-01` → `\"AX\"`). For these, `name` is CLDR's English **territory** name, because CLDR publishes no separate subdivision name for them. null for the other 5,027.","example":null},"childCount":{"type":"integer","description":"Direct children CLDR nests under this code (0 for a leaf). The maximum in this release is 152 (`GB-ENG`).","example":152},"children":{"type":"array","items":{"type":"string"},"description":"Those children's ISO 3166-2 codes, ascending. Empty for a leaf.","example":["GB-BAS","GB-BBD","GB-BCP"]}},"additionalProperties":false},"CountrySubdivisionsLookupMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["country-subdivisions"]},"params":{"type":"object","properties":{"code":{"type":"string","minLength":3,"maxLength":12}},"required":["code"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/lookup"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"CountrySubdivisionsLookupEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CountrySubdivisionsLookupRecord"},"meta":{"$ref":"#/components/schemas/CountrySubdivisionsLookupMeta"}},"required":["data","meta"],"additionalProperties":false},"CountrySubdivisionsCountriesRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 code of an officially assigned country or territory.","example":"US"},"country":{"type":"string","description":"English country name, joined from this project's ISO 3166-1 countries dataset.","example":"United States"},"subdivisionCount":{"type":"integer","description":"Codes this API serves for the country. Sums to 5,046 across all 249 rows.","example":57},"level1Count":{"type":"integer","description":"Of those, how many CLDR contains directly under the country.","example":57},"level2Count":{"type":"integer","description":"Of those, how many CLDR nests inside another subdivision.","example":0},"sourceStatement":{"type":"string","description":"What CLDR says about this country: `subdivisions` (CLDR lists at least one — 200 countries), `none` (CLDR's own file carries an explicit \"NO SUBDIVISIONS\" statement — 48 countries), `unstated` (neither; only GS). Note that `HK` and `MO` are `none` here *and* are served as `CN-HK`/`CN-MO` on the main route — see the `countryCode` field.","example":"subdivisions"},"deprecatedCodeCount":{"type":"integer","description":"Codes CLDR marks deprecated for this country, so a legacy dataset holding dead codes is explicable rather than mysterious. Browse them at /api/country-subdivisions/deprecated.","example":0},"aliasedCodeCount":{"type":"integer","description":"Of `subdivisionCount`, how many CLDR declares `overlong` aliases of an ISO 3166-1 region code (19 in total, across 5 countries).","example":6}},"additionalProperties":false},"CountrySubdivisionsCountriesMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["country-subdivisions"]},"params":{"type":"object","properties":{"sourceStatement":{"type":"string","enum":["any","subdivisions","none","unstated"]},"hasSubdivisions":{"type":"boolean"},"search":{"type":"string","minLength":2,"maxLength":60},"offset":{"type":"integer","minimum":0,"maximum":248}},"required":["sourceStatement","offset"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/countries"]},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","route","count"],"additionalProperties":false},"CountrySubdivisionsCountriesEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CountrySubdivisionsCountriesRecord"}},"meta":{"$ref":"#/components/schemas/CountrySubdivisionsCountriesMeta"}},"required":["data","meta"],"additionalProperties":false},"CountrySubdivisionsDeprecatedRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"code":{"type":"string","description":"The deprecated ISO 3166-2 code, in canonical uppercase-with-hyphen form.","example":"IT-CI"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"CLDR's English name, mark-stripped. null for the 227 codes CLDR deprecates without ever publishing a name.","example":"Carbonia-Iglesias"},"cldrName":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The verbatim CLDR string; null on the same rows as `name`.","example":"Carbonia-Iglesias"},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 of the country the deprecated code belonged to.","example":"IT"},"country":{"type":"string","description":"English country name, joined from this project's ISO 3166-1 countries dataset.","example":"Italy"},"replacedBy":{"type":"array","items":{"type":"string"},"description":"CLDR's recorded replacement codes, canonicalized. Empty when CLDR records none (it writes an `xx?` \"unknown\" form). Otherwise 1–9 entries — `NZ-N` split into 9. Three classes of CLDR's replacement values do not resolve to a current subdivision on this endpoint, and all three are reproduced rather than repaired: 3 point at an ISO 3166-1 country code instead of a subdivision (`FR-GUA`→`GP`, `FR-LRE`→`RE`, `FR-MAY`→`YT`); 7 point at another code that is itself deprecated (`CZ-10A`→`CZ-110` … `CZ-10F`→`CZ-115`, and `FR-H`→`FR-COR`); and 2 name a code CLDR 48 itself lists neither as current nor as deprecated, so `/lookup` answers it with a 404 (`CN-15`→`CN-MN`, where CLDR's Inner Mongolia is `CN-NM`, and `CZ-611`→`CZ-663`). This API reproduces CLDR exactly and does **not** follow chains or correct dead targets; the parity script pins all three counts, so a release that changes them fails instead of quietly falsifying this description.","example":[]},"replacementKnown":{"type":"boolean","description":"Whether `replacedBy` is non-empty — i.e. whether CLDR records a replacement at all.","example":false}},"additionalProperties":false},"CountrySubdivisionsDeprecatedMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["country-subdivisions"]},"params":{"type":"object","properties":{"country":{"type":"string"},"search":{"type":"string","minLength":2,"maxLength":60},"hasReplacement":{"type":"boolean"},"offset":{"type":"integer","minimum":0,"maximum":598}},"required":["offset"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/deprecated"]},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","route","count"],"additionalProperties":false},"CountrySubdivisionsDeprecatedEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CountrySubdivisionsDeprecatedRecord"}},"meta":{"$ref":"#/components/schemas/CountrySubdivisionsDeprecatedMeta"}},"required":["data","meta"],"additionalProperties":false},"CrawlersRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"pattern":{"type":"string","description":"The regular expression this row is matched by, verbatim. Matched case-sensitively with RegExp.test, because the upstream patterns encode their own case alternatives ([cC]laude[bB]ot). 13 patterns are anchored to the start of the string, so leading whitespace changes the answer.","example":"[cC]laude[bB]ot"},"patternSource":{"type":"string","description":"crawler-user-agents (the pinned community list, 1,498 rows) or operator-documentation (a token the operator documents that the community list does not carry, so the exact literal pattern was authored from the operator's own page — exactly 4 rows: OAI-AdsBot, Applebot-Extended, MistralAI-Index and MistralAI-Training).","example":"crawler-user-agents"},"tags":{"type":"array","items":{"type":"string"},"description":"The upstream project's own classification, from its fixed 12-value vocabulary, in canonical order. It is the maintainers' judgement, not the operator's self-description. Empty on the 4 operator-documentation rows — the project has not classified them and we do not classify on its behalf, so those rows appear under no tag filter.","example":["ai-crawler"]},"operator":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Company or project that operates this crawler — set only for rows curated against the operator's own published documentation. null on the 1,475 community rows: we do not guess who runs a bot.","example":"Anthropic"},"operatorId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The value to pass back as ?operator=. null whenever operator is.","example":"anthropic"},"robotsToken":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The exact token to write after 'User-agent:', as the operator publishes it. null on every uncurated row — a token derived from a regular expression would be a guess about capitalisation, and a wrong token in your robots.txt is worse than no token.","example":"ClaudeBot"},"purpose":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"What this crawler is for: search, ai-training, user-triggered, advertising, site-owner-requested, link-preview or general. A randomapi.dev classification based on the operator's published purpose, with the source wording preserved in the note. On 3 non-literal mappings (Amazonbot, CCBot and meta-webindexer), the note explicitly labels the category as a randomapi.dev classification. null when uncurated.","example":"ai-training"},"exampleUserAgent":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"One real User-Agent string, observed in the wild, that this pattern matches — the longest entry the upstream snapshot carries for this row. Paste it into /api/crawlers/detect. Non-null on 118 of the 1,502 rows by a published rule: the rows a curated operator token points at, every row the upstream list tags ai-crawler, and a committed high-traffic list, minus the control tokens that send no requests. For any other pattern, paste a line from your own access log instead. Never the operator's own published template — that is fullUserAgentExample on /robots-tokens.","example":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"},"referenceUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The reference link the community list carries for this crawler, copied and NOT verified: 162 rows have none, 298 are plain http://, 2 are malformed upstream (a missing or truncated scheme) and are still copied byte for byte because inventing a scheme would be inventing provenance, and for a few hundred it points at a third-party bot directory, a forge or a forum thread rather than the operator's own site. Use operatorDocsUrl when you need a citable page.","example":"http://www.google.com/bot.html"},"operatorDocsUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The operator's own crawler-documentation page — the primary citable source for curated rows. Supplemental first-party policy pages used by behavioural notes are cited in this endpoint's data sources.","example":"https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler"},"verification":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"How to check a request really came from this operator: { method, url }, where method is published-ip-ranges, reverse-dns, reverse-dns-and-ip-ranges or none-published, and url is the operator's own list (or null). We never fetch it — it is a URL for you to use. Present on curated rows only.","example":{"method":"published-ip-ranges","url":"https://claude.com/crawling/bots.json"}},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"One curated caveat in our own words, where the operator's documentation says something that changes how you use the token. Curated rows only.","example":"Control token only: Google states it has no separate HTTP request user-agent string, that crawling is done with existing Google user-agent strings and the token is used in a control capacity."},"addedOn":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Date the pattern entered the community list — NOT the date the crawler began operating. null on 57 rows.","example":"2015-04-14"}},"additionalProperties":false},"CrawlersRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["crawlers"]},"params":{"type":"object","properties":{"tag":{"type":"string","enum":["search-engine","advertising","feed-reader","http-library","social-preview","archiver","seo","monitoring","scanner","ai-crawler","academic","browser-automation","any"]},"operator":{"type":"string","enum":["openai","anthropic","perplexity","google","apple","common-crawl","meta","amazon","mistral","any"]},"documented":{"type":"boolean"},"search":{"type":"string","maxLength":64},"offset":{"type":"integer","minimum":0,"maximum":5000}},"required":["tag","operator","offset"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","count"],"additionalProperties":false},"CrawlersRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CrawlersRootRecord"}},"meta":{"$ref":"#/components/schemas/CrawlersRootMeta"}},"required":["data","meta"],"additionalProperties":false},"CrawlersDetectRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"userAgent":{"type":"string","description":"The string that was tested, echoed exactly as supplied — nothing is trimmed.","example":"CCBot/2.0 (https://commoncrawl.org/faq/)"},"isKnownCrawler":{"type":"boolean","description":"Whether at least one bundled pattern matched. false means 'no pattern in this snapshot matched' — it never means the request came from a human. Anyone can send any User-Agent, and crawlers that disguise themselves as browsers are exactly the ones a string list cannot see.","example":true},"matchCount":{"type":"integer","description":"Exact number of patterns that matched, even when matches is capped at 25.","example":1},"matches":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Every matching row in the same 13-field shape as /api/crawlers, ordered curated-first, then longest pattern first, then pattern ascending. Capped at 25 entries with a warning; matchCount stays exact. Empty array when nothing matched.","example":[{"pattern":"CCBot","robotsToken":"CCBot","operator":"Common Crawl"}]},"operators":{"type":"array","items":{"type":"string"},"description":"Distinct curated operators among the returned matches, in first-appearance order. Empty when no matched row is curated.","example":["Common Crawl"]},"robotsTokens":{"type":"array","items":{"type":"string"},"description":"Distinct curated robotsToken values among the returned matches — the lines to write in robots.txt if you want to control this traffic. Empty when nothing curated matched.","example":["CCBot"]}},"additionalProperties":false},"CrawlersDetectMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["crawlers"]},"params":{"type":"object","properties":{"userAgent":{"type":"string"}},"required":["userAgent"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/detect"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"CrawlersDetectEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CrawlersDetectRecord"},"meta":{"$ref":"#/components/schemas/CrawlersDetectMeta"}},"required":["data","meta"],"additionalProperties":false},"CrawlersRobotsTokensRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"operatorId":{"type":"string","description":"Filter value for ?operator=.","example":"openai"},"operator":{"type":"string","description":"Operator's name as it writes it.","example":"OpenAI"},"token":{"type":"string","description":"The token, in the operator's own spelling. RFC 9309, Section 2.2.1 requires crawlers to match product tokens case-insensitively, so the capitalisation is cosmetic; every token here also satisfies that section's product-token grammar (letters, '_' and '-' only), so no conforming parser truncates it.","example":"GPTBot"},"robotsTxtLine":{"type":"string","description":"The line to paste: 'User-agent: ' + token. Add your own Disallow: line under it, then test the whole file with /api/robots-txt/check.","example":"User-agent: GPTBot"},"purpose":{"type":"string","description":"search, ai-training, user-triggered, advertising, site-owner-requested, link-preview or general. A randomapi.dev classification based on the operator's published purpose, with the source wording preserved in the note. On 3 non-literal mappings (Amazonbot, CCBot and meta-webindexer), the note explicitly labels the category as a randomapi.dev classification.","example":"ai-training"},"sendsRequests":{"type":"boolean","description":"Whether any request actually carries this string. false for Google-Extended and Applebot-Extended: control tokens only, so you will never see them in an access log.","example":true},"robotsTxtBehavior":{"type":"string","description":"obeys, obeys-except-integrity-checks or user-triggered-may-ignore, as the operator publishes it about itself. We do not measure compliance and this is not a claim that any crawler behaves as documented.","example":"obeys"},"fullUserAgentExample":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The User-Agent string the operator publishes for this token, verbatim — including the operator's own placeholder version tokens (Google and Amazon both publish Chrome/W.X.Y.Z). We never fill a placeholder in. null where the operator publishes none: Anthropic publishes tokens but no strings, Google publishes none for Google-Extended and only a substring for Google-CloudVertexBot.","example":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot"},"pattern":{"type":"string","description":"The bundled pattern that detects this token on /api/crawlers/detect, so the two routes are visibly the same universe.","example":"GPTBot"},"patternSource":{"type":"string","description":"crawler-user-agents when the community list already carries the exact pattern for this token; operator-documentation for the 4 missing exact patterns authored literally from first-party pages (OAI-AdsBot, Applebot-Extended, MistralAI-Index and MistralAI-Training).","example":"crawler-user-agents"},"docsUrl":{"type":"string","description":"The operator's own crawler-documentation page — the primary citable source for this row. Supplemental first-party policy pages used by behavioural notes are cited in this endpoint's data sources.","example":"https://developers.openai.com/api/docs/bots"},"verificationMethod":{"type":"string","description":"published-ip-ranges, reverse-dns, reverse-dns-and-ip-ranges or none-published. For the two control-only tokens this describes how to verify the operator's actual crawler traffic, since nothing ever sends the control token itself.","example":"published-ip-ranges"},"verificationUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The operator's own IP-range list. Never fetched by this API.","example":"https://openai.com/gptbot.json"},"note":{"type":"string","description":"One caveat in our own words, where the operator's page says something that changes how the token behaves.","example":"Apple states that if robots.txt does not mention Applebot but does mention Googlebot, Applebot follows the Googlebot group."},"verifiedOn":{"type":"string","format":"date","description":"The date this table was last checked against the operators' own pages. A module constant, identical on every row — never the current time.","example":"2026-08-27"}},"additionalProperties":false},"CrawlersRobotsTokensMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["crawlers"]},"params":{"type":"object","properties":{"operator":{"type":"string","enum":["openai","anthropic","perplexity","google","apple","common-crawl","meta","amazon","mistral","any"]},"purpose":{"type":"string","enum":["search","ai-training","user-triggered","advertising","site-owner-requested","link-preview","general","any"]},"robotsTxtBehavior":{"type":"string","enum":["obeys","obeys-except-integrity-checks","user-triggered-may-ignore","any"]}},"required":["operator","purpose","robotsTxtBehavior"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/robots-tokens"]},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","route","count"],"additionalProperties":false},"CrawlersRobotsTokensEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CrawlersRobotsTokensRecord"}},"meta":{"$ref":"#/components/schemas/CrawlersRobotsTokensMeta"}},"required":["data","meta"],"additionalProperties":false},"CreditCardsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"number":{"type":"string","description":"Card number, digits only (no spaces). Luhn-valid with the brand's correct prefix and length, but tied to no real account.","example":"4539148803436467"},"brand":{"type":"string","description":"visa | mastercard | amex | discover — always consistent with the number's prefix.","example":"visa"},"expMonth":{"type":"integer","description":"Expiry month, 1–12.","example":9},"expYear":{"type":"integer","description":"Expiry year — always strictly in the future (request year +1 to +5).","example":2029},"cvv":{"type":"string","description":"Card verification code: 4 digits for amex, 3 for every other brand. String because it may start with 0.","example":"417"},"holderName":{"type":"string","description":"Cardholder's full name in UPPERCASE, as embossed on a physical card.","example":"EMILY CARTER"}},"additionalProperties":false},"CreditCardsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["credit-cards"]},"params":{"type":"object","properties":{"brand":{"type":"string","enum":["visa","mastercard","amex","discover"]}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"CreditCardsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CreditCardsRootRecord"}},"meta":{"$ref":"#/components/schemas/CreditCardsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"CronDescribeRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"expression":{"type":"string","description":"The expression, normalized: whitespace collapsed, names uppercased.","example":"*/5 * * * *"},"description":{"type":"string","description":"The schedule in plain English.","example":"Every 5 minutes"},"nextRuns":{"type":"array","items":{"type":"string","format":"date-time"},"description":"The next `count` run times, minute-aligned, strictly after `from`.","example":["2026-01-01T00:05:00Z","2026-01-01T00:10:00Z","2026-01-01T00:15:00Z"]},"fields":{"type":"object","additionalProperties":true,"description":"The five parsed field specs: minute, hour, dayOfMonth, month, dayOfWeek (normalized strings).","example":{"minute":"*/5","hour":"*","dayOfMonth":"*","month":"*","dayOfWeek":"*"}}},"additionalProperties":false},"CronDescribeMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["cron"]},"params":{"type":"object","properties":{"expression":{"type":"string"},"count":{"type":"integer","minimum":1,"maximum":20},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["expression","count"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/describe"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"CronDescribeEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CronDescribeRecord"},"meta":{"$ref":"#/components/schemas/CronDescribeMeta"}},"required":["data","meta"],"additionalProperties":false},"CspCheckRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"decision":{"type":"string","description":"allowed, blocked or ambiguous. Blocked when any enforced policy blocks (§8.1); report-only policies never contribute. ambiguous fires only for the enumerated draft contradictions in ambiguities that actually change this answer.","example":"blocked"},"explanation":{"type":"string","description":"One sentence naming what decided and why — the answer to read first.","example":"'strict-dynamic' is present in 'script-src', so the parser-inserted script request is blocked before the host allowlist is ever consulted."},"effectiveDirective":{"type":"string","description":"The effective directive name for this context (§6.8.1), or the non-fetch check name for context=base-uri, form-action or frame-ancestors.","example":"script-src-elem"},"fallbackChain":{"type":"array","items":{"type":"string"},"description":"The ordered §6.8.3 list walked, most relevant first, including the effective directive itself. A single-item list for the three non-fetch checks — they have no default-src fallback.","example":["script-src-elem","script-src","default-src"]},"governed":{"type":"boolean","description":"Whether any enforced policy declares a directive in the chain. False means the load is simply not restricted by what you pasted.","example":true},"decidedBy":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"{ policyIndex, directive, sourceList, step, specSection, specUrl } for the first enforced policy that blocks, or — when allowed — the last enforced policy that had to be satisfied. Null when nothing governs the load. step is one of nonce-match, integrity-match, strict-dynamic-parser-inserted, strict-dynamic-non-parser-inserted, source-list-match, source-list-no-match, empty-source-list, none-keyword, not-governed, ignored-in-meta or ignored-in-report-only.","example":{"policyIndex":0,"directive":"script-src","sourceList":["'nonce-r4nd0mB4se64Value1234567'","'strict-dynamic'"],"step":"strict-dynamic-parser-inserted","specSection":"6.7.1.1","specUrl":"https://www.w3.org/TR/CSP3/#script-pre-request"}},"matchedExpression":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The source expression that matched, verbatim as written in the policy, or null when nothing matched or matching never ran.","example":null},"wouldReport":{"type":"boolean","description":"Whether at least one policy — enforced or report-only — would generate a violation report.","example":true},"policies":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Per policy: { index, disposition, decision, chainWalk, expressionResults, reason }. chainWalk is one entry per name in fallbackChain: { name, present, executed, note } — at most one entry can be executed, because §6.8.4 lets only the first declared name in the chain execute and every other directive defers. expressionResults is one entry per source expression of the executing directive, and is empty whenever URL matching never ran: { raw, matches, failedAt, detail } with failedAt one of scheme-part, host-part, port-part, path-part, null-host, not-a-domain, self-mismatch, keyword-not-a-url-match, not-a-url-source-expression, none-with-siblings, or null when it matched.","example":[{"index":0,"disposition":"enforce","decision":"blocked","chainWalk":[{"name":"script-src-elem","present":false,"executed":false,"note":"Not declared, so it defers to the next name in the chain."},{"name":"script-src","present":true,"executed":true,"note":null},{"name":"default-src","present":true,"executed":false,"note":"Declared, but 'script-src' is more relevant and executes instead."}],"expressionResults":[],"reason":"strict-dynamic-parser-inserted"}]},"ambiguities":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Same shape and closed vocabulary as /evaluate, present here only when a contradiction in the pinned draft bears on this exact decision.","example":[]}},"additionalProperties":false},"CspCheckMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["csp"]},"params":{"type":"object","properties":{"policy":{"type":"string","minLength":1,"maxLength":4096},"resource":{"type":"string","minLength":1,"maxLength":2048},"self":{"type":"string","minLength":1,"maxLength":256},"context":{"type":"string","enum":["script","xslt","audioworklet","paintworklet","style","image","font","audio","video","track","frame","iframe","object","embed","manifest","worker","serviceworker","sharedworker","empty","json","text","webidentity","base-uri","form-action","frame-ancestors"]},"parserInserted":{"type":"boolean"},"nonce":{"type":"string","maxLength":256},"integrity":{"type":"string","maxLength":512},"redirectCount":{"type":"integer","minimum":0,"maximum":20},"disposition":{"type":"string","enum":["enforce","report"]},"source":{"type":"string","enum":["header","meta"]}},"required":["policy","resource","self","context","parserInserted","redirectCount","disposition","source"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/check"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"CspCheckEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CspCheckRecord"},"meta":{"$ref":"#/components/schemas/CspCheckMeta"}},"required":["data","meta"],"additionalProperties":false},"CspParseRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"policyCount":{"type":"integer","description":"Number of serialized policies found in the value; a comma starts a new one (§2.2.2). A policy whose directive set is empty is reported here so you can see you wrote it, even though §2.2.2 drops such a policy when it builds the CSP list — an empty policy restricts nothing.","example":1},"normalized":{"type":"string","description":"Conservative re-serialization: directive names ASCII-lowercased, runs of ASCII whitespace collapsed to one space, ignored tokens and duplicate directives removed, directives joined with \"; \" and policies with \", \". Source-expression text is never rewritten — nonces are compared byte-for-byte, so rewriting them would be a lie.","example":"default-src 'self'; script-src 'nonce-r4nd0mB4se64Value1234567' 'strict-dynamic'"},"unknownDirectives":{"type":"array","items":{"type":"string"},"description":"Lowercased directive names this API's directive table does not know, de-duplicated and sorted. A user agent keeps them in the policy but has no algorithm for them, so they are inert.","example":["script-scr"]},"duplicateDirectives":{"type":"array","items":{"type":"string"},"description":"Names that appeared more than once; every occurrence after the first is ignored (§2.2.1). Sorted and de-duplicated.","example":["script-src"]},"policies":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One entry per policy: { index, disposition, source, directives, ignoredTokens }. Each directives entry is { name, rawName, value, type, status, fallbackChain, ignored, ignoredReason, specSection, specUrl, sources }; every field but the first three is null for a directive outside the table. sources is present only for source-list-valued directives and each entry is { raw, kind, valid, keyword, scheme, host, port, path, hashAlgorithm, base64Value, note } where kind is one of scheme-source, host-source, keyword-source, nonce-source, hash-source, none or invalid. ignoredReason is duplicate-directive, ignored-in-meta, ignored-in-report-only or null. ignoredTokens entries are { raw, reason } with reason empty-token or non-ascii-token — §2.2.1 skips both.","example":[{"index":0,"disposition":"enforce","source":"header","directives":[{"name":"script-src","rawName":"script-src","value":["'nonce-abc'","'strict-dynamic'"],"type":"fetch","status":"csp3","fallbackChain":["script-src"],"ignored":false,"ignoredReason":null,"specSection":"6.1.10","specUrl":"https://www.w3.org/TR/CSP3/#directive-script-src","sources":[{"raw":"'nonce-abc'","kind":"nonce-source","valid":true,"keyword":null,"scheme":null,"host":null,"port":null,"path":null,"hashAlgorithm":null,"base64Value":"abc","note":"A nonce shorter than 22 base64 characters carries fewer than the 128 bits CSP3 §7.1 recommends."}]}],"ignoredTokens":[]}]}},"additionalProperties":false},"CspParseMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["csp"]},"params":{"type":"object","properties":{"policy":{"type":"string","minLength":1,"maxLength":4096},"source":{"type":"string","enum":["header","meta"]},"disposition":{"type":"string","enum":["enforce","report"]}},"required":["policy","source","disposition"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/parse"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"CspParseEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CspParseRecord"},"meta":{"$ref":"#/components/schemas/CspParseMeta"}},"required":["data","meta"],"additionalProperties":false},"CspEvaluateRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"policyCount":{"type":"integer","description":"Policies evaluated.","example":1},"findings":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"{ id, severity, policyIndex, directive, expression, occurrences, title, detail, specSection, specUrl }. severity is high, medium, low or info — this API's own documented ranking of how much of the policy's protection the condition removes. It is not a CVSS score, not a vulnerability rating, and there is no aggregate grade. directive and expression are null for whole-policy findings. There is one finding per condition per directive: expression names the first offending expression and occurrences counts how many expressions in that directive share the condition, so sixty subdomain wildcards are one finding rather than sixty. Sorted by severity, then policy, then id.","example":[{"id":"object-src-not-restricted","severity":"high","policyIndex":0,"directive":null,"expression":null,"occurrences":1,"title":"object and embed loads are unrestricted","detail":"Neither 'object-src' nor 'default-src' is present, so nothing in the « object-src, default-src » fallback chain governs object and embed requests. 'object-src' is the one fetch directive worth setting to 'none' on almost every page.","specSection":"6.1.9","specUrl":"https://www.w3.org/TR/CSP3/#directive-object-src"}]},"findingCounts":{"type":"object","additionalProperties":true,"description":"{ high, medium, low, info } — counts only. There is no total, no score and no grade.","example":{"high":1,"medium":2,"low":0,"info":1}},"coverage":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Fifteen fixed rows: the twelve effective fetch-directive names §6.8.3 defines a fallback list for, plus base-uri, form-action and frame-ancestors. Each row is { effectiveDirective, fallbackChain, restricted, perPolicy }; perPolicy entries are { policyIndex, governedBy, sourceList, allowsAllInline }. governedBy is the first name in the chain the policy actually declares (§6.8.4), and both it and sourceList are null when the policy does not govern the surface at all. allowsAllInline is the §6.7.3.2 answer for the four inline surfaces, and null for the other eleven rows and for an ungoverned surface. restricted is true when at least one enforced policy governs the surface.","example":[{"effectiveDirective":"script-src-elem","fallbackChain":["script-src-elem","script-src","default-src"],"restricted":true,"perPolicy":[{"policyIndex":0,"governedBy":"script-src","sourceList":["'nonce-r4nd0mB4se64Value1234567'","'strict-dynamic'"],"allowsAllInline":false}]}]},"ambiguities":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Places where the pinned CSP3 draft contradicts itself that this policy actually triggers: { id, detail, normativeReading, informativeReading, specSections }. The vocabulary is closed at three ids — ip-literal-host-vs-host-part-match, explicit-insecure-default-port-vs-secure-upgrade and unsafe-allow-redirects-undefined — and empty for most policies. This API always follows the normative algorithm and says so.","example":[]}},"additionalProperties":false},"CspEvaluateMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["csp"]},"params":{"type":"object","properties":{"policy":{"type":"string","minLength":1,"maxLength":4096},"source":{"type":"string","enum":["header","meta"]},"disposition":{"type":"string","enum":["enforce","report"]}},"required":["policy","source","disposition"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/evaluate"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"CspEvaluateEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CspEvaluateRecord"},"meta":{"$ref":"#/components/schemas/CspEvaluateMeta"}},"required":["data","meta"],"additionalProperties":false},"CspDirectivesRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"name":{"type":"string","description":"Lowercased directive name.","example":"frame-src"},"type":{"type":"string","description":"The CSP3 §6.1–§6.5 grouping: fetch, other, document, navigation or reporting. 'unclassified' is every row the pinned draft does not group — the four directives defined by other W3C specifications, the CSP2-only row and the two removed-draft rows.","example":"fetch"},"status":{"type":"string","description":"csp3 (defined in the pinned draft), csp3-deprecated, other-spec (defined by another W3C specification), other-spec-obsolete, csp2-only or removed-draft.","example":"csp3"},"statusNote":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"One sentence of provenance for a non-csp3 status; null for a plain csp3 row. Our own wording, never copied prose.","example":null},"governs":{"type":"string","description":"One original sentence describing what the directive controls, written from the specification's normative prose rather than copied from it.","example":"Requests that populate a child navigable, such as an iframe or frame navigation."},"valueGrammar":{"type":"string","description":"The ABNF production the directive's value follows.","example":"serialized-source-list"},"fallbackChain":{"type":"array","items":{"type":"string"},"description":"The ordered §6.8.3 fallback list, most relevant first, including the directive itself. Just [name] for the directives §6.8.3 does not cover — which includes script-src, style-src, child-src and every non-fetch directive.","example":["frame-src","child-src","default-src"]},"fallbackParent":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The next name after this one in fallbackChain, or null.","example":"child-src"},"destinations":{"type":"array","items":{"type":"string"},"description":"Fetch request destinations for which §6.8.1 returns exactly this name. Empty for every directive reached only as a fallback (child-src, script-src, style-src) and for the non-fetch directives.","example":["frame","iframe"]},"ignoredInMeta":{"type":"boolean","description":"Whether a <meta>-delivered policy ignores this directive (§3.3: report-uri, frame-ancestors and sandbox).","example":false},"ignoredInReportOnly":{"type":"boolean","description":"Whether a report-only policy ignores it (§6.3.2: sandbox only).","example":false},"consultsNonce":{"type":"boolean","description":"Whether this directive's own pre-request check consults the request's cryptographic nonce metadata (§6.7.2.3) — directly for the script and style directives, and for default-src through the check it delegates to (§6.1.3.1). False for the two attribute directives, which have an inline check and no pre-request check.","example":false},"consultsIntegrity":{"type":"boolean","description":"Whether it consults the request's integrity metadata (§6.7.2.4). The script element directives only, plus default-src by delegation.","example":false},"honorsStrictDynamic":{"type":"boolean","description":"Whether 'strict-dynamic' changes the URL matching this directive performs (§6.7.1.1): true for script-src, script-src-elem and default-src, false for every other directive — in img-src the keyword is inert. /evaluate narrows this per policy, because default-src only reaches the script check when no script directive is declared.","example":false},"ianaRegistered":{"type":"boolean","description":"Whether the name appears in the pinned IANA Content Security Policy Directives registry snapshot (last updated 2023-02-03). The registry still holds only the sixteen CSP Level 2 names, so most CSP3 additions are false.","example":true},"specSection":{"type":"string","description":"Section number in the document that defines it.","example":"6.1.5"},"specUrl":{"type":"string","description":"Deep link to that section.","example":"https://www.w3.org/TR/CSP3/#directive-frame-src"}},"additionalProperties":false},"CspDirectivesMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["csp"]},"params":{"type":"object","properties":{"search":{"type":"string","minLength":1,"maxLength":64},"type":{"type":"string","enum":["fetch","other","document","navigation","reporting","unclassified"]},"status":{"type":"string","enum":["csp3","csp3-deprecated","other-spec","other-spec-obsolete","csp2-only","removed-draft"]},"hasFallback":{"type":"boolean"},"ignoredInMeta":{"type":"boolean"}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/directives"]},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","route","count"],"additionalProperties":false},"CspDirectivesEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CspDirectivesRecord"}},"meta":{"$ref":"#/components/schemas/CspDirectivesMeta"}},"required":["data","meta"],"additionalProperties":false},"CspLookupRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"name":{"type":"string","description":"Lowercased directive name.","example":"frame-src"},"type":{"type":"string","description":"The CSP3 §6.1–§6.5 grouping: fetch, other, document, navigation or reporting. 'unclassified' is every row the pinned draft does not group — the four directives defined by other W3C specifications, the CSP2-only row and the two removed-draft rows.","example":"fetch"},"status":{"type":"string","description":"csp3 (defined in the pinned draft), csp3-deprecated, other-spec (defined by another W3C specification), other-spec-obsolete, csp2-only or removed-draft.","example":"csp3"},"statusNote":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"One sentence of provenance for a non-csp3 status; null for a plain csp3 row. Our own wording, never copied prose.","example":null},"governs":{"type":"string","description":"One original sentence describing what the directive controls, written from the specification's normative prose rather than copied from it.","example":"Requests that populate a child navigable, such as an iframe or frame navigation."},"valueGrammar":{"type":"string","description":"The ABNF production the directive's value follows.","example":"serialized-source-list"},"fallbackChain":{"type":"array","items":{"type":"string"},"description":"The ordered §6.8.3 fallback list, most relevant first, including the directive itself. Just [name] for the directives §6.8.3 does not cover — which includes script-src, style-src, child-src and every non-fetch directive.","example":["frame-src","child-src","default-src"]},"fallbackParent":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The next name after this one in fallbackChain, or null.","example":"child-src"},"destinations":{"type":"array","items":{"type":"string"},"description":"Fetch request destinations for which §6.8.1 returns exactly this name. Empty for every directive reached only as a fallback (child-src, script-src, style-src) and for the non-fetch directives.","example":["frame","iframe"]},"ignoredInMeta":{"type":"boolean","description":"Whether a <meta>-delivered policy ignores this directive (§3.3: report-uri, frame-ancestors and sandbox).","example":false},"ignoredInReportOnly":{"type":"boolean","description":"Whether a report-only policy ignores it (§6.3.2: sandbox only).","example":false},"consultsNonce":{"type":"boolean","description":"Whether this directive's own pre-request check consults the request's cryptographic nonce metadata (§6.7.2.3) — directly for the script and style directives, and for default-src through the check it delegates to (§6.1.3.1). False for the two attribute directives, which have an inline check and no pre-request check.","example":false},"consultsIntegrity":{"type":"boolean","description":"Whether it consults the request's integrity metadata (§6.7.2.4). The script element directives only, plus default-src by delegation.","example":false},"honorsStrictDynamic":{"type":"boolean","description":"Whether 'strict-dynamic' changes the URL matching this directive performs (§6.7.1.1): true for script-src, script-src-elem and default-src, false for every other directive — in img-src the keyword is inert. /evaluate narrows this per policy, because default-src only reaches the script check when no script directive is declared.","example":false},"ianaRegistered":{"type":"boolean","description":"Whether the name appears in the pinned IANA Content Security Policy Directives registry snapshot (last updated 2023-02-03). The registry still holds only the sixteen CSP Level 2 names, so most CSP3 additions are false.","example":true},"specSection":{"type":"string","description":"Section number in the document that defines it.","example":"6.1.5"},"specUrl":{"type":"string","description":"Deep link to that section.","example":"https://www.w3.org/TR/CSP3/#directive-frame-src"}},"additionalProperties":false},"CspLookupMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["csp"]},"params":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64}},"required":["name"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/lookup"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"CspLookupEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CspLookupRecord"},"meta":{"$ref":"#/components/schemas/CspLookupMeta"}},"required":["data","meta"],"additionalProperties":false},"CurrenciesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"code":{"type":"string","description":"ISO 4217 alphabetic code — 3 letters, uppercase.","example":"DKK"},"name":{"type":"string","description":"Official ISO 4217 English currency name.","example":"Danish Krone"},"symbol":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Symbol in common written use ($, €, kr, ¥, د.ك …). Null when none is widely used (e.g. XDR). Symbols are not unique — many currencies share '$'.","example":"kr"},"decimalDigits":{"type":"integer","description":"ISO 4217 minor-unit digits: 2 for most currencies, 0 for JPY-style ones, 3 for the dinar family (BHD, IQD, JOD, KWD, LYD, OMR, TND). MGA/MRU are 2 per ISO despite their fifth subdivisions; XDR has no ISO minor unit and is reported as 2 (CLDR convention).","example":2},"countries":{"type":"array","items":{"type":"string"},"description":"ISO 3166-1 alpha-2 codes of every country/territory where the currency is legal tender, per the ISO 4217 country table. Empty for the supranational XDR.","example":["DK","FO","GL"]}},"additionalProperties":false},"CurrenciesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["currencies"]},"params":{"type":"object","properties":{"search":{"type":"string"}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","count"],"additionalProperties":false},"CurrenciesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CurrenciesRootRecord"}},"meta":{"$ref":"#/components/schemas/CurrenciesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"CurrenciesLookupRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"code":{"type":"string","description":"ISO 4217 alphabetic code — 3 letters, uppercase.","example":"DKK"},"name":{"type":"string","description":"Official ISO 4217 English currency name.","example":"Danish Krone"},"symbol":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Symbol in common written use ($, €, kr, ¥, د.ك …). Null when none is widely used (e.g. XDR). Symbols are not unique — many currencies share '$'.","example":"kr"},"decimalDigits":{"type":"integer","description":"ISO 4217 minor-unit digits: 2 for most currencies, 0 for JPY-style ones, 3 for the dinar family (BHD, IQD, JOD, KWD, LYD, OMR, TND). MGA/MRU are 2 per ISO despite their fifth subdivisions; XDR has no ISO minor unit and is reported as 2 (CLDR convention).","example":2},"countries":{"type":"array","items":{"type":"string"},"description":"ISO 3166-1 alpha-2 codes of every country/territory where the currency is legal tender, per the ISO 4217 country table. Empty for the supranational XDR.","example":["DK","FO","GL"]}},"additionalProperties":false},"CurrenciesLookupMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["currencies"]},"params":{"type":"object","properties":{"code":{"type":"string","minLength":3,"maxLength":3}},"required":["code"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/lookup"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"CurrenciesLookupEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CurrenciesLookupRecord"},"meta":{"$ref":"#/components/schemas/CurrenciesLookupMeta"}},"required":["data","meta"],"additionalProperties":false},"DateInfoRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"date":{"type":"string","format":"date","description":"The resolved UTC calendar date the facts describe.","example":"2026-06-11"},"weekday":{"type":"string","description":"English weekday name, Monday–Sunday.","example":"Thursday"},"isoWeek":{"type":"integer","description":"ISO 8601 week number (1–53). Weeks start Monday; week 1 is the week containing the year's first Thursday.","example":24},"isoWeekYear":{"type":"integer","description":"ISO week-based year the week belongs to — differs from the calendar year around New Year (2021-01-01 → 2020).","example":2026},"dayOfYear":{"type":"integer","description":"Ordinal day of the year: 1 (Jan 1) up to 365, or 366 in leap years.","example":162},"quarter":{"type":"integer","description":"Calendar quarter, 1–4 (Q2 = April–June).","example":2},"isLeapYear":{"type":"boolean","description":"Full Gregorian leap rule: divisible by 4, except centuries not divisible by 400 (2000 yes, 1900 no).","example":false},"daysInMonth":{"type":"integer","description":"Length of the date's month in days (28–31).","example":30},"isWeekend":{"type":"boolean","description":"True when the weekday is Saturday or Sunday.","example":false},"unix":{"type":"integer","description":"Unix timestamp in seconds of the date at midnight UTC.","example":1781136000}},"additionalProperties":false},"DateInfoRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["date-info"]},"params":{"type":"object","properties":{"date":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}}},"required":["endpoint","params","generatedAt"],"additionalProperties":false},"DateInfoRootEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DateInfoRootRecord"},"meta":{"$ref":"#/components/schemas/DateInfoRootMeta"}},"required":["data","meta"],"additionalProperties":false},"DatesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"iso":{"type":"string","format":"date-time","description":"The generated instant in UTC, with millisecond precision.","example":"2026-03-14T09:26:53.123Z"},"unix":{"type":"integer","description":"Seconds since the Unix epoch (floor of the instant; negative before 1970).","example":1773480413},"date":{"type":"string","format":"date","description":"UTC calendar date of the instant.","example":"2026-03-14"},"time":{"type":"string","description":"UTC wall-clock time of the instant, seconds precision (milliseconds live in iso).","example":"09:26:53"},"weekday":{"type":"string","description":"English weekday name of the UTC date — never Saturday/Sunday when weekdaysOnly=true.","example":"Saturday"}},"additionalProperties":false},"DatesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["dates"]},"params":{"type":"object","properties":{"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"weekdaysOnly":{"type":"boolean"}},"required":["weekdaysOnly"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"DatesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DatesRootRecord"}},"meta":{"$ref":"#/components/schemas/DatesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"DeploymentsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Distinct dep_-prefixed fictional deployment identifier.","example":"dep_staging_01_a1b2c3d4e5"},"service":{"type":"string","description":"Fictional vendor-neutral workload name.","example":"checkout-api"},"environment":{"type":"string","description":"preview | staging | production.","example":"staging"},"status":{"type":"string","description":"queued | running | succeeded | failed | cancelled | rolled_back.","example":"succeeded"},"trigger":{"type":"string","description":"Synthetic trigger class: push, manual, schedule or api; never a person identity.","example":"push"},"commitSha":{"type":"string","description":"Synthetic 40-character lowercase hexadecimal commit fixture.","example":"0123456789abcdef0123456789abcdef01234567"},"artifact":{"type":"object","additionalProperties":true,"description":"Service-coherent artifact: tag derived from commitSha plus a synthetic sha256 digest and matching reserved-registry reference.","example":{"name":"checkout-api","tag":"build-0123456789ab","digest":"sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef","reference":"registry.example.test/checkout-api@sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"}},"initiatedAt":{"type":"string","format":"date-time","description":"Synthetic initiation inside the requested inclusive window.","example":"2026-05-12T09:00:00.000Z"},"startedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Start after initiation, or null only while queued.","example":"2026-05-12T09:00:17.000Z"},"finishedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Primary rollout completion for terminal states; null while queued/running.","example":"2026-05-12T09:04:17.000Z"},"durationSeconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Exact finishedAt minus startedAt in seconds, or null before completion.","example":240},"rollback":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"Completed same-environment restoration with a different target commit/artifact; present only for rolled_back.","example":null}},"additionalProperties":false},"DeploymentsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["deployments"]},"params":{"type":"object","properties":{"environment":{"type":"string","enum":["any","preview","staging","production"]},"service":{"type":"string","enum":["any","checkout-api","customer-web","event-worker","report-scheduler"]},"status":{"type":"string","enum":["any","queued","running","succeeded","failed","cancelled","rolled_back"]},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["environment","service","status","from","to"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"DeploymentsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentsRootRecord"}},"meta":{"$ref":"#/components/schemas/DeploymentsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"DeploymentsTimelinesRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"deploymentId":{"type":"string","description":"ID shared with the root snapshot for identical params, seed and record index.","example":"dep_staging_01_a1b2c3d4e5"},"service":{"type":"string","description":"Fictional workload shared with the snapshot.","example":"checkout-api"},"environment":{"type":"string","description":"Environment shared by rollout and any rollback events.","example":"staging"},"finalStatus":{"type":"string","description":"Snapshot status reached by the final lifecycle event.","example":"rolled_back"},"events":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Strictly ordered lifecycle events with contiguous sequence numbers and coherent artifact digests.","example":[{"sequence":0,"type":"deployment_queued","at":"2026-05-12T09:00:00.000Z","artifactDigest":"sha256:0123"}]}},"additionalProperties":false},"DeploymentsTimelinesMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["deployments"]},"params":{"type":"object","properties":{"environment":{"type":"string","enum":["any","preview","staging","production"]},"service":{"type":"string","enum":["any","checkout-api","customer-web","event-worker","report-scheduler"]},"status":{"type":"string","enum":["any","queued","running","succeeded","failed","cancelled","rolled_back"]},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["environment","service","status","from","to"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/timelines"]},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","route","count","seed"],"additionalProperties":false},"DeploymentsTimelinesEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentsTimelinesRecord"}},"meta":{"$ref":"#/components/schemas/DeploymentsTimelinesMeta"}},"required":["data","meta"],"additionalProperties":false},"DiceRollRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"index":{"type":"integer","description":"Zero-based position of this independent roll in the returned batch.","example":0},"notation":{"type":"string","description":"Canonical lowercase echo of the roll: explicit dice count ('d20' → '1d20'), zero modifier omitted.","example":"2d6+3"},"dice":{"type":"array","items":{"type":"integer"},"description":"Each individual die result in roll order — exactly N values, every one between 1 and S.","example":[4,2]},"modifier":{"type":"integer","description":"The flat modifier from the notation (0 when it has none).","example":3},"total":{"type":"integer","description":"Sum of all dice plus the modifier.","example":9}},"additionalProperties":false},"DiceRollMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["dice"]},"params":{"type":"object","properties":{"notation":{"type":"string"}},"required":["notation"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/roll"]},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","route","count","seed"],"additionalProperties":false},"DiceRollEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DiceRollRecord"}},"meta":{"$ref":"#/components/schemas/DiceRollMeta"}},"required":["data","meta"],"additionalProperties":false},"DiffsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"path":{"type":"string","description":"Post-image path (the `b/` side). For a deletion this is the path that was removed.","example":"src/lib/cache.js"},"oldPath":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pre-image path (the `a/` side); `null` for an added file. Differs from `path` only for a rename.","example":"src/lib/cache.js"},"changeType":{"type":"string","description":"modify | add | delete | rename | mode | binary.","example":"modify"},"oldMode":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Six-digit octal pre-image mode (100644 regular, 100755 executable); `null` for an added file.","example":"100644"},"newMode":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Six-digit octal post-image mode; `null` for a deleted file. Differs from `oldMode` only for a mode change.","example":"100644"},"insertions":{"type":"integer","description":"Added lines, summed from the hunks. Always 0 for mode-only and binary changes.","example":2},"deletions":{"type":"integer","description":"Removed lines, summed from the hunks. Always 0 for mode-only and binary changes.","example":1},"date":{"type":"string","format":"date-time","description":"Authoring date in UTC, uniformly random within [`from`, `to`] — whole seconds, like real git timestamps, dropping to millisecond precision only when the window is narrower than one second and holds no whole-second instant. Metadata only: git's own patch output carries no timestamps, so this is not part of `patch`.","example":"2026-03-14T09:26:53Z"},"hunks":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Structured hunks: `header`, `oldStart`, `oldLines`, `newStart`, `newLines` and `lines` (each `{ type: context|add|remove, text }`, plus `noNewline: true` on a line whose file version has no trailing newline). `oldLines` always equals the context+removed line count and `newLines` the context+added count. Empty for mode-only and binary changes.","example":[{"header":"@@ -12,2 +12,3 @@","oldStart":12,"oldLines":2,"newStart":12,"newLines":3,"lines":[{"type":"context","text":"  const cache = new Map();"},{"type":"remove","text":"  return cache.get(key);"},{"type":"add","text":"  const hit = cache.get(key);"},{"type":"add","text":"  return hit ?? null;"}]}]},"patch":{"type":"string","description":"The complete git-style patch for this file, rendered from `hunks` (never authored separately) and terminated with a newline.","example":"diff --git a/src/lib/cache.js b/src/lib/cache.js\nindex 4b1e2c7..9af0d31 100644\n--- a/src/lib/cache.js\n+++ b/src/lib/cache.js\n@@ -12,2 +12,3 @@\n   const cache = new Map();\n-  return cache.get(key);\n+  const hit = cache.get(key);\n+  return hit ?? null;\n"}},"additionalProperties":false},"DiffsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["diffs"]},"params":{"type":"object","properties":{"hunksPerFile":{"type":"integer","minimum":1,"maximum":6},"contextLines":{"type":"integer","minimum":0,"maximum":5},"changeType":{"type":"string","enum":["mixed","modify","add","delete","rename","mode","binary"]},"language":{"type":"string","enum":["javascript","typescript","python","go","ruby","java","json","markdown"]},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["hunksPerFile","contextLines","changeType"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"DiffsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DiffsRootRecord"}},"meta":{"$ref":"#/components/schemas/DiffsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"DiffsPatchRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"patch":{"type":"string","description":"The complete multi-file unified patch, files concatenated in ascending path order and terminated with a newline.","example":"diff --git a/src/lib/cache.js b/src/lib/cache.js\nindex 4b1e2c7..9af0d31 100644\n--- a/src/lib/cache.js\n+++ b/src/lib/cache.js\n@@ -12,2 +12,3 @@\n   const cache = new Map();\n-  return cache.get(key);\n+  const hit = cache.get(key);\n+  return hit ?? null;\n"},"files":{"type":"integer","description":"Number of files in the patch.","example":3},"hunks":{"type":"integer","description":"Total hunk count across every file in the patch.","example":4},"insertions":{"type":"integer","description":"Total added lines — the sum of `summary[].insertions`.","example":9},"deletions":{"type":"integer","description":"Total removed lines — the sum of `summary[].deletions`.","example":5},"summary":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Per-file entries in patch order: `path`, `oldPath`, `changeType`, `insertions`, `deletions` and `hunks`.","example":[{"path":"src/lib/cache.js","oldPath":"src/lib/cache.js","changeType":"modify","insertions":5,"deletions":3,"hunks":2},{"path":"src/lib/queue.js","oldPath":null,"changeType":"add","insertions":4,"deletions":0,"hunks":1}]}},"additionalProperties":false},"DiffsPatchMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["diffs"]},"params":{"type":"object","properties":{"files":{"type":"integer","minimum":1,"maximum":10},"hunksPerFile":{"type":"integer","minimum":1,"maximum":6},"contextLines":{"type":"integer","minimum":0,"maximum":5},"changeType":{"type":"string","enum":["mixed","modify","add","delete","rename","mode","binary"]},"language":{"type":"string","enum":["javascript","typescript","python","go","ruby","java","json","markdown"]},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["files","hunksPerFile","contextLines","changeType","seed"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/patch"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"DiffsPatchEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DiffsPatchRecord"},"meta":{"$ref":"#/components/schemas/DiffsPatchMeta"}},"required":["data","meta"],"additionalProperties":false},"DistributionsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"index":{"type":"integer","description":"0-based record position. It exists so repeated discrete draws remain distinct records without any jitter being added to `value`.","example":0},"value":{"type":"number","description":"The draw. A decimal rounded to `precision` for uniform, normal, lognormal, exponential and pareto; a whole number for poisson, binomial and zipf.","example":106.9337},"percentile":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Theoretical CDF evaluated at the returned `value`, 0–1, rounded to 6 decimals. Null for poisson, binomial and zipf, whose CDF is a step function.","example":0.678048},"method":{"type":"string","description":"The sampler branch actually used: inverse-cdf, box-muller, knuth, bernoulli-sum or normal-approximation.","example":"box-muller"}},"additionalProperties":false},"DistributionsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["distributions"]},"params":{"type":"object","properties":{"dist":{"type":"string","enum":["uniform","normal","lognormal","exponential","poisson","binomial","pareto","zipf"]},"min":{"type":"number","minimum":-1000000000,"maximum":1000000000},"max":{"type":"number","minimum":-1000000000,"maximum":1000000000},"mean":{"type":"number","minimum":-1000000000,"maximum":1000000000},"stddev":{"type":"number","maximum":1000000000},"rate":{"type":"number","maximum":1000000000},"lambda":{"type":"number","maximum":1000000000},"trials":{"type":"integer","minimum":1,"maximum":10000},"probability":{"type":"number"},"alpha":{"type":"number","maximum":1000},"xmin":{"type":"number","maximum":1000000000},"support":{"type":"integer","minimum":1,"maximum":100000},"precision":{"type":"integer","minimum":0,"maximum":10}},"required":["dist"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"DistributionsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DistributionsRootRecord"}},"meta":{"$ref":"#/components/schemas/DistributionsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"DistributionsSummaryRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"dist":{"type":"string","description":"The distribution that was sampled.","example":"normal"},"size":{"type":"integer","description":"Number of values drawn.","example":1000},"parameters":{"type":"object","additionalProperties":true,"description":"The resolved distribution parameters that were used, defaults included (plus `precision` for the continuous distributions).","example":{"mean":100,"stddev":15,"precision":4}},"empirical":{"type":"object","additionalProperties":true,"description":"Statistics of the drawn sample: `mean`, population `variance`, `stddev`, `min`, `max`, `median`, `p25`, `p75`, `p95`. Quantiles are nearest-rank, so each is an actual draw.","example":{"mean":99.9571,"variance":220.5983,"stddev":14.8525,"min":52.7431,"max":148.9902,"median":99.9128,"p25":89.7712,"p75":110.0264,"p95":124.3187}},"theoretical":{"type":"object","additionalProperties":true,"description":"Closed-form `mean` and `variance` of the distribution itself. Either is null when the moment does not exist, or cannot be represented as a double, and `note` then explains which.","example":{"mean":100,"variance":225,"note":null}},"method":{"type":"string","description":"The sampler branch used for every value in the sample.","example":"box-muller"},"seed":{"type":"integer","description":"The seed the sample was drawn from.","example":42}},"additionalProperties":false},"DistributionsSummaryMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["distributions"]},"params":{"type":"object","properties":{"dist":{"type":"string","enum":["uniform","normal","lognormal","exponential","poisson","binomial","pareto","zipf"]},"size":{"type":"integer","minimum":1,"maximum":10000},"seed":{"type":"integer"},"min":{"type":"number","minimum":-1000000000,"maximum":1000000000},"max":{"type":"number","minimum":-1000000000,"maximum":1000000000},"mean":{"type":"number","minimum":-1000000000,"maximum":1000000000},"stddev":{"type":"number","maximum":1000000000},"rate":{"type":"number","maximum":1000000000},"lambda":{"type":"number","maximum":1000000000},"trials":{"type":"integer","minimum":1,"maximum":10000},"probability":{"type":"number"},"alpha":{"type":"number","maximum":1000},"xmin":{"type":"number","maximum":1000000000},"support":{"type":"integer","minimum":1,"maximum":100000},"precision":{"type":"integer","minimum":0,"maximum":10}},"required":["dist","size","seed"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/summary"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"DistributionsSummaryEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DistributionsSummaryRecord"},"meta":{"$ref":"#/components/schemas/DistributionsSummaryMeta"}},"required":["data","meta"],"additionalProperties":false},"DnsRecordTypesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"type":{"type":"string","description":"IANA RR TYPE mnemonic in canonical registry spelling.","example":"AAAA"},"value":{"type":"integer","description":"Individually assigned numeric RR TYPE value.","example":28},"meaning":{"type":"string","description":"Meaning text from the IANA RR TYPE registry, including obsolete/deprecated labels where present.","example":"IP6 Address"},"reference":{"type":"string","description":"The defining reference cell from IANA, with whitespace normalized to one line.","example":"[RFC3596]"}},"additionalProperties":false},"DnsRecordTypesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["dns-record-types"]},"params":{"type":"object","properties":{"search":{"type":"string","maxLength":100}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","count"],"additionalProperties":false},"DnsRecordTypesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DnsRecordTypesRootRecord"}},"meta":{"$ref":"#/components/schemas/DnsRecordTypesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"DnsRecordTypesLookupRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"type":{"type":"string","description":"IANA RR TYPE mnemonic in canonical registry spelling.","example":"AAAA"},"value":{"type":"integer","description":"Individually assigned numeric RR TYPE value.","example":28},"meaning":{"type":"string","description":"Meaning text from the IANA RR TYPE registry, including obsolete/deprecated labels where present.","example":"IP6 Address"},"reference":{"type":"string","description":"The defining reference cell from IANA, with whitespace normalized to one line.","example":"[RFC3596]"}},"additionalProperties":false},"DnsRecordTypesLookupMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["dns-record-types"]},"params":{"type":"object","properties":{"type":{"type":"string","minLength":1,"maxLength":64}},"required":["type"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/lookup"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"DnsRecordTypesLookupEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DnsRecordTypesLookupRecord"},"meta":{"$ref":"#/components/schemas/DnsRecordTypesLookupMeta"}},"required":["data","meta"],"additionalProperties":false},"DnsRecordsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Distinct deterministic fixture identifier; not a DNS field.","example":"rr_a_00_4e19c0a27b"},"zone":{"type":"string","description":"Canonical reserved fixture zone without a trailing dot.","example":"example.test"},"owner":{"type":"string","description":"Absolute owner name with a trailing dot; SRV owners include service and protocol labels.","example":"host-1-a1b2c3.example.test."},"ttl":{"type":"integer","description":"Record TTL in seconds.","example":300},"type":{"type":"string","description":"A | AAAA | CNAME | MX | TXT | CAA | SRV.","example":"A"},"value":{"type":"string","description":"Type-correct RDATA payload: documentation IP, absolute target, TXT text or CAA presentation value.","example":"192.0.2.1"},"priority":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Required for MX/SRV and null for every other type.","example":10},"weight":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"SRV weight from 0 through 100; null for all other types.","example":null},"port":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Service-coherent SRV port; null for all other types.","example":null}},"additionalProperties":false},"DnsRecordsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["dns-records"]},"params":{"type":"object","properties":{"type":{"type":"string","enum":["any","A","AAAA","CNAME","MX","TXT","CAA","SRV"]},"zone":{"type":"string","minLength":3,"maxLength":191},"ttl":{"type":"integer","minimum":30,"maximum":86400}},"required":["type","zone","ttl"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"DnsRecordsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DnsRecordsRootRecord"}},"meta":{"$ref":"#/components/schemas/DnsRecordsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"DnsRecordsSrvRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Distinct deterministic fixture identifier; not a DNS field.","example":"rr_a_00_4e19c0a27b"},"zone":{"type":"string","description":"Canonical reserved fixture zone without a trailing dot.","example":"example.test"},"owner":{"type":"string","description":"Absolute owner name with a trailing dot; SRV owners include service and protocol labels.","example":"host-1-a1b2c3.example.test."},"ttl":{"type":"integer","description":"Record TTL in seconds.","example":300},"type":{"type":"string","description":"A | AAAA | CNAME | MX | TXT | CAA | SRV.","example":"A"},"value":{"type":"string","description":"Type-correct RDATA payload: documentation IP, absolute target, TXT text or CAA presentation value.","example":"192.0.2.1"},"priority":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Required for MX/SRV and null for every other type.","example":10},"weight":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"SRV weight from 0 through 100; null for all other types.","example":null},"port":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Service-coherent SRV port; null for all other types.","example":null}},"additionalProperties":false},"DnsRecordsSrvMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["dns-records"]},"params":{"type":"object","properties":{"service":{"type":"string","enum":["https","sip","xmpp-client"]},"zone":{"type":"string","minLength":3,"maxLength":191},"ttl":{"type":"integer","minimum":30,"maximum":86400}},"required":["service","zone","ttl"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/srv"]},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","route","count","seed"],"additionalProperties":false},"DnsRecordsSrvEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DnsRecordsSrvRecord"}},"meta":{"$ref":"#/components/schemas/DnsRecordsSrvMeta"}},"required":["data","meta"],"additionalProperties":false},"DurationsParseRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"value":{"type":"string","description":"The validated input duration, unchanged.","example":"P1Y2M3DT4H5M6S"},"normalized":{"type":"string","description":"Canonical re-rendering with zero components dropped and a full stop as decimal sign; an all-zero duration becomes PT0S.","example":"P1Y2M3DT4H5M6S"},"negative":{"type":"boolean","description":"True when the duration carries a leading '-'. A duration whose components are all zero is never reported as negative.","example":false},"years":{"type":"number","description":"Unsigned magnitude of the years component; 0 when absent. Nominal unit.","example":1},"months":{"type":"number","description":"Unsigned magnitude of the months component; 0 when absent. Nominal unit.","example":2},"weeks":{"type":"number","description":"Unsigned magnitude of the weeks component; 0 when absent. Never combined with other components.","example":0},"days":{"type":"number","description":"Unsigned magnitude of the days component; 0 when absent. Calendar unit.","example":3},"hours":{"type":"number","description":"Unsigned magnitude of the hours component; 0 when absent. Exact unit.","example":4},"minutes":{"type":"number","description":"Unsigned magnitude of the minutes component; 0 when absent. Exact unit.","example":5},"seconds":{"type":"number","description":"Unsigned magnitude of the seconds component; 0 when absent. Exact unit.","example":6},"classification":{"type":"object","additionalProperties":true,"description":"Which of the PRESENT units are nominal (years, months — no fixed length), calendar (weeks, days — exactly 24h in UTC, wall-clock days in a zone) and exact (hours, minutes, seconds).","example":{"nominal":["years","months"],"calendar":["days"],"exact":["hours","minutes","seconds"]}},"nominalMonths":{"type":"number","description":"12 × years + months. Exact as a count of months; it cannot be converted to a fixed number of days.","example":14},"calendarDays":{"type":"number","description":"7 × weeks + days, as calendar days.","example":3},"exactSeconds":{"type":"number","description":"Seconds contributed by the hours, minutes and seconds components only — exact under every interpretation of the calendar units, and summed on the decimal text rather than as a floating-point product, so PT1.1H is 3960 and not 3960.0000000000005.","example":14706},"approximate":{"type":"object","additionalProperties":true,"description":"Clearly-labelled approximation of the whole duration in seconds and days, plus the assumption used. Never treat it as an exact conversion of years or months.","example":{"seconds":37090350,"days":429.2864583333333,"assumption":"Mean Gregorian conversion: 1 year = 31556952 s (365.2425 days), 1 month = 2629746 s, 1 week = 604800 s, 1 day = 86400 s."}}},"additionalProperties":false},"DurationsParseMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["durations"]},"params":{"type":"object","properties":{"value":{"type":"string","maxLength":64}},"required":["value"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/parse"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"DurationsParseEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurationsParseRecord"},"meta":{"$ref":"#/components/schemas/DurationsParseMeta"}},"required":["data","meta"],"additionalProperties":false},"DurationsBetweenRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"from":{"type":"string","format":"date-time","description":"Resolved start instant.","example":"2026-01-31T00:00:00.000Z"},"to":{"type":"string","format":"date-time","description":"Resolved end instant; the request time when 'to' was omitted.","example":"2026-03-01T00:00:00.000Z"},"timeZone":{"type":"string","description":"Canonical IANA zone the calendar breakdown was computed in.","example":"Europe/Copenhagen"},"negative":{"type":"boolean","description":"True when 'to' is earlier than 'from'; the breakdown is then how far back you must go from 'from'.","example":false},"years":{"type":"integer","description":"Whole calendar years from 'from', applied first.","example":0},"months":{"type":"integer","description":"Whole calendar months after the years step, with end-of-month clamping.","example":1},"days":{"type":"integer","description":"Whole wall-clock days after the years and months steps.","example":1},"hours":{"type":"integer","description":"Whole hours left over. Can reach 24 inside a 25-hour fall-back day.","example":0},"minutes":{"type":"integer","description":"Whole minutes left over.","example":0},"seconds":{"type":"number","description":"Seconds left over, carrying the millisecond fraction of the inputs — the nearest JSON number to that exact decimal, so it never disagrees with 'iso' or 'totalSeconds'.","example":0},"iso":{"type":"string","description":"The breakdown as an ISO 8601 duration, signed. Feeding it to /add with the same 'from' and 'tz' reproduces 'to' when truncated is false.","example":"P1M1D"},"truncated":{"type":"boolean","description":"True when maxUnits dropped a non-zero unit.","example":false},"remainderSeconds":{"type":"number","description":"Exact seconds still between /add(from, iso) and 'to' — always 0 unless maxUnits truncated the breakdown.","example":0},"totalSeconds":{"type":"number","description":"Exact elapsed SI seconds between the two instants, signed. Unaffected by the zone.","example":2505600},"totalDays":{"type":"number","description":"totalSeconds ÷ 86400 as an IEEE-754 double — elapsed days, not calendar days.","example":29}},"additionalProperties":false},"DurationsBetweenMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["durations"]},"params":{"type":"object","properties":{"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"tz":{"type":"string","minLength":1,"maxLength":64},"maxUnits":{"type":"integer","minimum":1,"maximum":6}},"required":["from","tz","maxUnits"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/between"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"DurationsBetweenEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurationsBetweenRecord"},"meta":{"$ref":"#/components/schemas/DurationsBetweenMeta"}},"required":["data","meta"],"additionalProperties":false},"DurationsAddRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"start":{"type":"string","format":"date-time","description":"Resolved starting instant.","example":"2026-01-31T00:00:00.000Z"},"startLocal":{"type":"string","description":"Wall-clock value of 'start' in the requested zone.","example":"2026-01-31T00:00:00.000"},"startOffset":{"type":"string","description":"UTC offset in effect at 'start'.","example":"+00:00"},"timeZone":{"type":"string","description":"Canonical IANA zone the calendar part was applied in.","example":"UTC"},"duration":{"type":"string","description":"Normalized form of the duration that was applied.","example":"P1M"},"steps":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"The four ordered steps (years, months, days, time) with the signed amount, the wall clock after the step and whether an end-of-month clamp fired. The calendar steps run on the wall clock; the zone is applied once afterwards.","example":[{"unit":"years","amount":0,"local":"2026-01-31T00:00:00.000","clamped":false},{"unit":"months","amount":1,"local":"2026-02-28T00:00:00.000","clamped":true},{"unit":"days","amount":0,"local":"2026-02-28T00:00:00.000","clamped":false},{"unit":"time","amount":0,"local":"2026-02-28T00:00:00.000","clamped":false}]},"clamped":{"type":"boolean","description":"True when the years or months step clamped the day of month to the end of a shorter month.","example":true},"dstAdjustment":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"Null when the duration has no calendar part (nothing is resolved through the wall clock) or when the calendar result was an ordinary wall-clock value. Otherwise names the gap (shifted forward by the missing interval) or fold (earlier instant chosen) and by how much.","example":null},"result":{"type":"string","format":"date-time","description":"The resulting instant.","example":"2026-02-28T00:00:00.000Z"},"resultLocal":{"type":"string","description":"Wall-clock value of the result in the requested zone.","example":"2026-02-28T00:00:00.000"},"resultOffset":{"type":"string","description":"UTC offset in effect at the result.","example":"+00:00"},"exactSecondsApplied":{"type":"number","description":"Signed seconds added by the exact time components (H, M, S) after the calendar steps.","example":0},"calendarDaysApplied":{"type":"integer","description":"Signed calendar days added by the day step, counting each week as 7 days.","example":0}},"additionalProperties":false},"DurationsAddMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["durations"]},"params":{"type":"object","properties":{"start":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"duration":{"type":"string","maxLength":64},"tz":{"type":"string","minLength":1,"maxLength":64}},"required":["start","duration","tz"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/add"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"DurationsAddEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurationsAddRecord"},"meta":{"$ref":"#/components/schemas/DurationsAddMeta"}},"required":["data","meta"],"additionalProperties":false},"DurationsHumanizeRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"value":{"type":"string","description":"The validated input duration, unchanged.","example":"PT1H30M"},"normalized":{"type":"string","description":"What was actually formatted: the input with any fraction carried exactly into the next smaller exact unit, and truncated to maxUnits.","example":"PT1H30M"},"text":{"type":"string","description":"The rendered duration, produced from the runtime's CLDR data: Intl.DurationFormat where the runtime provides it, otherwise the same unit and list patterns composed from Intl.NumberFormat and Intl.ListFormat.","example":"1 hour, 30 minutes"},"style":{"type":"string","description":"Requested style: long, short or digital.","example":"long"},"locale":{"type":"string","description":"The BCP 47 tag exactly as requested.","example":"en"},"resolvedLocale":{"type":"string","description":"resolvedOptions().locale of the formatter that ran — the locale the runtime actually matched, which reveals any fallback.","example":"en"},"numberingSystem":{"type":"string","description":"resolvedOptions().numberingSystem of the formatter that ran, used for the digits.","example":"latn"},"units":{"type":"array","items":{"type":"string"},"description":"Units with a non-zero value that were handed to the formatter, largest first.","example":["hours","minutes"]},"truncated":{"type":"boolean","description":"True when maxUnits dropped a non-zero unit.","example":false},"remainder":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The dropped part as an ISO 8601 duration, or null when nothing was dropped. Nothing is rounded away silently.","example":null},"negative":{"type":"boolean","description":"True when the duration carries a leading '-'.","example":false}},"additionalProperties":false},"DurationsHumanizeMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["durations"]},"params":{"type":"object","properties":{"value":{"type":"string","maxLength":64},"style":{"type":"string","enum":["long","short","digital"]},"maxUnits":{"type":"integer","minimum":1,"maximum":6},"locale":{"type":"string","minLength":2,"maxLength":35}},"required":["value","style","maxUnits","locale"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/humanize"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"DurationsHumanizeEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DurationsHumanizeRecord"},"meta":{"$ref":"#/components/schemas/DurationsHumanizeMeta"}},"required":["data","meta"],"additionalProperties":false},"ElementsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"atomicNumber":{"type":"integer","description":"Proton count, 1–118.","example":26},"symbol":{"type":"string","description":"IUPAC chemical symbol.","example":"Fe"},"name":{"type":"string","description":"IUPAC English name, spelled as PubChem publishes it.","example":"Iron"},"atomicMass":{"type":"number","description":"Relative atomic mass. For the 34 elements with no IUPAC standard atomic weight this is the mass of the longest-lived isotope, not an abundance-weighted average — check massIsMostStableIsotope before treating it as a measurement.","example":55.84},"massIsMostStableIsotope":{"type":"boolean","description":"True where the element has no CIAAW standard atomic weight (Tc, Pm and everything from Po upward except Th, Pa and U). Derived by randomapi.dev, not published by PubChem.","example":false},"group":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"IUPAC group 1–18; null across the f-block, which IUPAC does not number. Derived from the atomic number, not published by PubChem.","example":8},"period":{"type":"integer","description":"Period 1–7. Derived from the atomic number, not published by PubChem.","example":4},"block":{"type":"string","description":"s, p, d or f. Derived from the layout, not published by PubChem.","example":"d"},"groupBlock":{"type":"string","description":"PubChem's own category string, e.g. Transition metal or Noble gas.","example":"Transition metal"},"standardState":{"type":"string","description":"solid, liquid or gas at standard conditions.","example":"solid"},"standardStatePredicted":{"type":"boolean","description":"True for the 9 superheavy elements whose state PubChem records as \"Expected to be a …\" rather than measured.","example":false},"electronConfiguration":{"type":"string","description":"Ground-state configuration; carries PubChem's own \"(predicted)\" marker where PubChem marks it.","example":"[Ar]4s2 3d6"},"electronegativity":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Pauling electronegativity; null where PubChem publishes none.","example":1.83},"atomicRadius":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Atomic radius in picometres as published by PubChem; null where none.","example":194},"ionizationEnergy":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"First ionization energy in electronvolts; null where none.","example":7.902},"electronAffinity":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Electron affinity in electronvolts; null where none.","example":0.163},"oxidationStates":{"type":"array","items":{"type":"string"},"description":"Common oxidation states in PubChem's order; empty where PubChem lists none.","example":["+3","+2"]},"meltingPoint":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Melting point in kelvin; null where none.","example":1811},"boilingPoint":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Boiling point in kelvin; null where none.","example":3134},"density":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Density in g/cm³ (gases at STP); null where none.","example":7.874},"cpkHexColor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"PubChem's CPK colour as \"#RRGGBB\"; null for the 10 elements PubChem leaves blank.","example":"#E06633"},"yearDiscovered":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Discovery year, or null for the 13 elements PubChem records as \"Ancient\" instead of a year.","example":1766},"discoveryRecord":{"type":"string","description":"PubChem's literal year-discovered value, e.g. \"1766\" or \"Ancient\".","example":"1766"}},"additionalProperties":false},"ElementsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["elements"]},"params":{"type":"object","properties":{"order":{"type":"string","enum":["random","atomicNumber"]},"groupBlock":{"type":"string","enum":["actinide","alkali-metal","alkaline-earth-metal","halogen","lanthanide","metalloid","noble-gas","nonmetal","post-transition-metal","transition-metal","any"]},"block":{"type":"string","enum":["s","p","d","f","any"]},"state":{"type":"string","enum":["solid","liquid","gas","any"]},"group":{"type":"integer","minimum":1,"maximum":18},"period":{"type":"integer","minimum":1,"maximum":7},"minMass":{"type":"number","minimum":0,"maximum":400},"maxMass":{"type":"number","minimum":0,"maximum":400},"minElectronegativity":{"type":"number","minimum":0,"maximum":4},"maxElectronegativity":{"type":"number","minimum":0,"maximum":4},"era":{"type":"string","enum":["ancient","dated","any"]},"discoveredFrom":{"type":"integer","minimum":1000,"maximum":2100},"discoveredTo":{"type":"integer","minimum":1000,"maximum":2100}},"required":["order","groupBlock","block","state","era"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"ElementsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ElementsRootRecord"}},"meta":{"$ref":"#/components/schemas/ElementsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"ElementsLookupRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"atomicNumber":{"type":"integer","description":"Proton count, 1–118.","example":26},"symbol":{"type":"string","description":"IUPAC chemical symbol.","example":"Fe"},"name":{"type":"string","description":"IUPAC English name, spelled as PubChem publishes it.","example":"Iron"},"atomicMass":{"type":"number","description":"Relative atomic mass. For the 34 elements with no IUPAC standard atomic weight this is the mass of the longest-lived isotope, not an abundance-weighted average — check massIsMostStableIsotope before treating it as a measurement.","example":55.84},"massIsMostStableIsotope":{"type":"boolean","description":"True where the element has no CIAAW standard atomic weight (Tc, Pm and everything from Po upward except Th, Pa and U). Derived by randomapi.dev, not published by PubChem.","example":false},"group":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"IUPAC group 1–18; null across the f-block, which IUPAC does not number. Derived from the atomic number, not published by PubChem.","example":8},"period":{"type":"integer","description":"Period 1–7. Derived from the atomic number, not published by PubChem.","example":4},"block":{"type":"string","description":"s, p, d or f. Derived from the layout, not published by PubChem.","example":"d"},"groupBlock":{"type":"string","description":"PubChem's own category string, e.g. Transition metal or Noble gas.","example":"Transition metal"},"standardState":{"type":"string","description":"solid, liquid or gas at standard conditions.","example":"solid"},"standardStatePredicted":{"type":"boolean","description":"True for the 9 superheavy elements whose state PubChem records as \"Expected to be a …\" rather than measured.","example":false},"electronConfiguration":{"type":"string","description":"Ground-state configuration; carries PubChem's own \"(predicted)\" marker where PubChem marks it.","example":"[Ar]4s2 3d6"},"electronegativity":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Pauling electronegativity; null where PubChem publishes none.","example":1.83},"atomicRadius":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Atomic radius in picometres as published by PubChem; null where none.","example":194},"ionizationEnergy":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"First ionization energy in electronvolts; null where none.","example":7.902},"electronAffinity":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Electron affinity in electronvolts; null where none.","example":0.163},"oxidationStates":{"type":"array","items":{"type":"string"},"description":"Common oxidation states in PubChem's order; empty where PubChem lists none.","example":["+3","+2"]},"meltingPoint":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Melting point in kelvin; null where none.","example":1811},"boilingPoint":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Boiling point in kelvin; null where none.","example":3134},"density":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Density in g/cm³ (gases at STP); null where none.","example":7.874},"cpkHexColor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"PubChem's CPK colour as \"#RRGGBB\"; null for the 10 elements PubChem leaves blank.","example":"#E06633"},"yearDiscovered":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Discovery year, or null for the 13 elements PubChem records as \"Ancient\" instead of a year.","example":1766},"discoveryRecord":{"type":"string","description":"PubChem's literal year-discovered value, e.g. \"1766\" or \"Ancient\".","example":"1766"}},"additionalProperties":false},"ElementsLookupMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["elements"]},"params":{"type":"object","properties":{"element":{"type":"string","minLength":1,"maxLength":20}},"required":["element"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/lookup"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"ElementsLookupEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ElementsLookupRecord"},"meta":{"$ref":"#/components/schemas/ElementsLookupMeta"}},"required":["data","meta"],"additionalProperties":false},"ElementsTableRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"layout":{"type":"object","additionalProperties":true,"description":"Grid dimensions and where the f-block strip sits.","example":{"rows":9,"columns":18,"mainRows":7,"fBlockRows":[8,9],"fBlockColumns":[3,17]}},"grid":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One entry per grid row: the row number and an array of `layout.columns` cells, null in every empty position and the `gridValues` value elsewhere.","example":[{"row":1,"cells":[1,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,2]}]},"cells":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Every element placed in the grid: atomic number, symbol, name, row, column, group, period, block, PubChem category and CPK colour.","example":[{"atomicNumber":26,"symbol":"Fe","name":"Iron","row":4,"column":8,"group":8,"period":4,"block":"d","groupBlock":"Transition metal","cpkHexColor":"#E06633"}]},"placeholders":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"The two cells the main body leaves behind because the f-block is printed separately — row 6 column 3 stands for elements 57-71, row 7 column 3 for 89-103.","example":[{"row":6,"column":3,"label":"57–71","block":"f","firstAtomicNumber":57,"lastAtomicNumber":71}]}},"additionalProperties":false},"ElementsTableMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["elements"]},"params":{"type":"object","properties":{"gridValues":{"type":"string","enum":["atomicNumber","symbol"]}},"required":["gridValues"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/table"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"ElementsTableEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ElementsTableRecord"},"meta":{"$ref":"#/components/schemas/ElementsTableMeta"}},"required":["data","meta"],"additionalProperties":false},"EmailMessagesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"messageId":{"type":"string","description":"Message-ID in <local@domain> form; the domain is always an RFC 2606 reserved name.","example":"<20260721T120311.9c1d4a7f0b23@northwind.test>"},"inReplyTo":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Parent's Message-ID, or null. Always null here — the list route returns root messages; /thread builds the chain.","example":null},"references":{"type":"array","items":{"type":"string"},"description":"Ordered ancestor Message-IDs, root first, ending with the direct parent. Always empty here (root messages).","example":[]},"from":{"type":"object","additionalProperties":true,"description":"Sender mailbox: { name, address }.","example":{"name":"Ada Lovelace","address":"ada.lovelace@northwind.test"}},"to":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One or two primary recipient mailboxes (usually one), always distinct — the same mailbox is never listed twice.","example":[{"name":"Ada Lovelace","address":"ada.lovelace@northwind.test"}]},"cc":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Zero or one copied mailbox; empty when no Cc header is emitted.","example":[]},"subject":{"type":"string","description":"Decoded subject. With unicode=true the wire form in headers.Subject is RFC 2047 encoded-words instead.","example":"Q3 roadmap review: agenda and open questions"},"date":{"type":"string","format":"date-time","description":"The same instant as the Date header, in UTC at second precision — the RFC 5322 form lives in headers.Date.","example":"2026-07-21T12:03:11Z"},"headers":{"type":"object","additionalProperties":true,"description":"Top-level header values in unfolded wire form, keyed by canonical field name (Date, From, To, Cc, Subject, Message-ID, MIME-Version, Content-Type…).","example":{"Date":"Tue, 21 Jul 2026 14:03:11 +0200","From":"\"Ada Lovelace\" <ada.lovelace@northwind.test>","To":"\"Grace Hopper\" <grace.hopper@example.net>","Subject":"Q3 roadmap review: agenda and open questions","Message-ID":"<20260721T120311.9c1d4a7f0b23@northwind.test>","MIME-Version":"1.0","Content-Type":"multipart/alternative; boundary=\"----=_Part_4f2a91c0_8b3d17e6\""}},"structure":{"type":"object","additionalProperties":true,"description":"Part tree — shape only: contentType, boundary and nested parts for containers; contentType, charset, contentTransferEncoding, decoded sizeBytes and disposition for leaves. Attachment filenames and Content-IDs live in `attachments`.","example":{"contentType":"multipart/alternative","boundary":"----=_Part_4f2a91c0_8b3d17e6","parts":[{"contentType":"text/plain","charset":"utf-8","contentTransferEncoding":"quoted-printable","sizeBytes":412},{"contentType":"text/html","charset":"utf-8","contentTransferEncoding":"quoted-printable","sizeBytes":733}]}},"attachments":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One entry per attachment part, in part order: filename, contentType, decoded sizeBytes, contentTransferEncoding and contentId.","example":[{"filename":"q3-report.pdf","contentType":"application/pdf","sizeBytes":1843,"contentTransferEncoding":"base64","contentId":"<9f0c2a71b4d8@northwind.test>"}]},"bodyPreview":{"type":"string","description":"First 80 characters of the decoded text/plain part with whitespace collapsed, truncated with an ellipsis.","example":"Hi Grace, Thanks for the quick turnaround on the last batch - the totals line…"}},"additionalProperties":false},"EmailMessagesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["email-messages"]},"params":{"type":"object","properties":{"structure":{"type":"string","enum":["plain","alternative","mixed","nested"]},"attachments":{"type":"integer","minimum":0,"maximum":3},"encoding":{"type":"string","enum":["7bit","quotedPrintable","base64"]},"unicode":{"type":"boolean"},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["structure","attachments","encoding","unicode"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"EmailMessagesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/EmailMessagesRootRecord"}},"meta":{"$ref":"#/components/schemas/EmailMessagesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"EmailMessagesRawRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"raw":{"type":"string","description":"The complete message: CRLF line endings, pure US-ASCII, no trailing newline. Never larger than about 16 KB (three base64 attachments of at most 2400 octets each).","example":"Date: Tue, 21 Jul 2026 14:03:11 +0200\r\nFrom: \"Ada Lovelace\" <ada.lovelace@northwind.test>\r\n…"},"messageId":{"type":"string","description":"The Message-ID of this message, including angle brackets.","example":"<20260721T120311.9c1d4a7f0b23@northwind.test>"},"subject":{"type":"string","description":"Decoded subject — the wire form inside `raw` is RFC 2047 encoded-words when unicode=true.","example":"Q3 roadmap review: agenda and open questions"},"date":{"type":"string","format":"date-time","description":"The instant in the Date header, in UTC. Derived from `seed` inside a fixed 2020-01-01…2029-12-31 window, so the message never changes over time.","example":"2026-07-21T12:03:11Z"},"structure":{"type":"object","additionalProperties":true,"description":"The part tree of this exact message, with the boundary strings that appear in `raw`.","example":{"contentType":"multipart/alternative","boundary":"----=_Part_4f2a91c0_8b3d17e6","parts":[{"contentType":"text/plain","charset":"utf-8","contentTransferEncoding":"quoted-printable","sizeBytes":412},{"contentType":"text/html","charset":"utf-8","contentTransferEncoding":"quoted-printable","sizeBytes":733}]}},"attachments":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One entry per attachment part, in part order: filename, contentType, decoded sizeBytes, contentTransferEncoding and contentId.","example":[{"filename":"q3-report.pdf","contentType":"application/pdf","sizeBytes":1843,"contentTransferEncoding":"base64","contentId":"<9f0c2a71b4d8@northwind.test>"}]},"boundaries":{"type":"array","items":{"type":"string"},"description":"Every boundary string used, outermost first. Empty for structure=plain. None of them occurs inside any part body.","example":["----=_Part_4f2a91c0_8b3d17e6"]},"sizeBytes":{"type":"integer","description":"Byte length of `raw`. Equal to its character count, because the message is pure US-ASCII.","example":1893},"lineCount":{"type":"integer","description":"Number of CRLF-separated lines in `raw`. Every line is at most 998 characters, per RFC 5322 §2.1.1.","example":42}},"additionalProperties":false},"EmailMessagesRawMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["email-messages"]},"params":{"type":"object","properties":{"structure":{"type":"string","enum":["plain","alternative","mixed","nested"]},"attachments":{"type":"integer","minimum":0,"maximum":3},"encoding":{"type":"string","enum":["7bit","quotedPrintable","base64"]},"unicode":{"type":"boolean"},"seed":{"type":"integer","minimum":0,"maximum":2147483647}},"required":["structure","attachments","encoding","unicode","seed"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/raw"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"EmailMessagesRawEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/EmailMessagesRawRecord"},"meta":{"$ref":"#/components/schemas/EmailMessagesRawMeta"}},"required":["data","meta"],"additionalProperties":false},"EmailMessagesThreadRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"subject":{"type":"string","description":"Base subject. The root uses it verbatim; every reply uses 'Re: ' plus the base (never stacked).","example":"Q3 roadmap review: agenda and open questions"},"depth":{"type":"integer","minimum":1,"maximum":8,"description":"Replies after the root, as requested.","example":3},"messageCount":{"type":"integer","description":"Messages in the chain — always depth + 1.","example":4},"participants":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"The two or three mailboxes in the conversation, in send-rotation order: message i is sent by participants[i % participants.length]. Everyone else on a message is a To or Cc recipient, so at depth=1 a third participant is only ever copied, never a sender.","example":[{"name":"Ada Lovelace","address":"ada.lovelace@northwind.test"},{"name":"Grace Hopper","address":"grace.hopper@example.net"},{"name":"Marcus Bennett","address":"marcus.bennett@meridian.test"}]},"messages":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"The chain, oldest first. Each entry has index, messageId, inReplyTo, references, from, to, cc, subject, date, headers, structure and bodyPreview. Thread messages never carry attachment parts.","example":[{"index":0,"messageId":"<20260721T120311.9c1d4a7f0b23@northwind.test>","inReplyTo":null,"references":[],"from":{"name":"Ada Lovelace","address":"ada.lovelace@northwind.test"},"to":[{"name":"Grace Hopper","address":"grace.hopper@example.net"}],"cc":[{"name":"Marcus Bennett","address":"marcus.bennett@meridian.test"}],"subject":"Q3 roadmap review: agenda and open questions","date":"2026-07-21T12:03:11Z","headers":{"Date":"Tue, 21 Jul 2026 14:03:11 +0200","From":"\"Ada Lovelace\" <ada.lovelace@northwind.test>","To":"\"Grace Hopper\" <grace.hopper@example.net>","Cc":"\"Marcus Bennett\" <marcus.bennett@meridian.test>","Subject":"Q3 roadmap review: agenda and open questions","Message-ID":"<20260721T120311.9c1d4a7f0b23@northwind.test>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Transfer-Encoding":"quoted-printable"},"structure":{"contentType":"text/plain","charset":"utf-8","contentTransferEncoding":"quoted-printable","sizeBytes":412},"bodyPreview":"Hi Grace, Thanks for the quick turnaround on the last batch - the totals line…"},{"index":1,"messageId":"<20260721T224408.3e81b6cf90a4@example.net>","inReplyTo":"<20260721T120311.9c1d4a7f0b23@northwind.test>","references":["<20260721T120311.9c1d4a7f0b23@northwind.test>"],"from":{"name":"Grace Hopper","address":"grace.hopper@example.net"},"to":[{"name":"Ada Lovelace","address":"ada.lovelace@northwind.test"}],"cc":[{"name":"Marcus Bennett","address":"marcus.bennett@meridian.test"}],"subject":"Re: Q3 roadmap review: agenda and open questions","date":"2026-07-21T22:44:08Z","headers":{"Date":"Wed, 22 Jul 2026 07:44:08 +0900","From":"\"Grace Hopper\" <grace.hopper@example.net>","To":"\"Ada Lovelace\" <ada.lovelace@northwind.test>","Cc":"\"Marcus Bennett\" <marcus.bennett@meridian.test>","Subject":"Re: Q3 roadmap review: agenda and open questions","Message-ID":"<20260721T224408.3e81b6cf90a4@example.net>","In-Reply-To":"<20260721T120311.9c1d4a7f0b23@northwind.test>","References":"<20260721T120311.9c1d4a7f0b23@northwind.test>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Transfer-Encoding":"quoted-printable"},"structure":{"contentType":"text/plain","charset":"utf-8","contentTransferEncoding":"quoted-printable","sizeBytes":338},"bodyPreview":"Hi Ada, Looks right. The only thing I would add is a note about the retry budge…"}]}},"additionalProperties":false},"EmailMessagesThreadMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["email-messages"]},"params":{"type":"object","properties":{"depth":{"type":"integer","minimum":1,"maximum":8},"structure":{"type":"string","enum":["plain","alternative","mixed","nested"]},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"seed":{"type":"integer","minimum":0,"maximum":2147483647}},"required":["depth","structure","seed"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/thread"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"EmailMessagesThreadEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/EmailMessagesThreadRecord"},"meta":{"$ref":"#/components/schemas/EmailMessagesThreadMeta"}},"required":["data","meta"],"additionalProperties":false},"EmailSyntaxValidateRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"input":{"type":"string","description":"The address exactly as supplied, byte for byte — surrounding whitespace is never trimmed.","example":"user+tag@example.com"},"normalized":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Address with comments and folding whitespace removed and the ASCII letters of a DNS domain lower-cased; whitespace inside a quoted string is preserved byte for byte, and the local part is never case-folded (RFC 5321 section 2.4). Null when either half does not parse.","example":"user+tag@example.com"},"localPart":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Raw text before the separator: the rightmost \"@\" outside a quoted string and outside a comment whose two halves both parse, or the rightmost such \"@\" when none of them do. Null when there is no separator.","example":"user+tag"},"localPartForm":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"dot-atom | quoted-string | obsolete, in RFC 5322's own alternation order. `obsolete` means obs-local-part and nothing stronger. Null when the local part does not parse.","example":"dot-atom"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Raw text after the separating \"@\". Null when no separator was found.","example":"example.com"},"domainForm":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"dns | domain-literal-ipv4 | domain-literal-ipv6 | domain-literal-other. The last value covers bracketed literals that are not an IP address under the strict reading documented below — a dotted quad with leading zeroes and an IPv6 address missing its `IPv6:` tag both land there. Null when the domain does not parse.","example":"dns"},"isIdn":{"type":"boolean","description":"True when the DNS domain contains at least one non-ASCII character (a U-label).","example":false},"punycodeDomain":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IDNA A-label form of a Unicode domain, produced by the same host parser browsers use, and populated whether or not allowUnicode is set. Null when the domain is already ASCII, is an address literal, or cannot be converted.","example":"xn--e1afmkfd.xn--p1ai"},"lengths":{"type":"object","additionalProperties":true,"description":"{ localOctets, domainOctets, totalOctets } — UTF-8 octets of the comment-stripped halves, and localOctets + 1 + domainOctets. When the address has no separator, both halves are 0 and totalOctets is the octet length of the whole input.","example":{"localOctets":8,"domainOctets":11,"totalOctets":20}},"profiles":{"type":"object","additionalProperties":true,"description":"One entry per evaluated profile ({ conforms, failingRule, reference, detail }); failingRule names the ABNF production or documented limit, reference names the clause. Contains all three keys unless `profile` narrows it.","example":{"rfc5322":{"conforms":true,"failingRule":null,"reference":null,"detail":null},"rfc5321":{"conforms":true,"failingRule":null,"reference":null,"detail":null},"html":{"conforms":true,"failingRule":null,"reference":null,"detail":null}}},"tldDelegated":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether the rightmost DNS label is in the bundled IANA root zone snapshot. Null unless requireDelegatedTld=true and a DNS domain is present. It never changes a profile verdict and says nothing about the domain being registered.","example":true},"warnings":{"type":"array","items":{"type":"string"},"description":"Address-specific advisories: obsolete syntax, quoted strings, address literals, comments, internationalization, an undelegated TLD, and profile disagreement. Empty for an unremarkable address.","example":[]}},"additionalProperties":false},"EmailSyntaxValidateMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["email-syntax"]},"params":{"type":"object","properties":{"email":{"type":"string","minLength":1,"maxLength":320},"profile":{"type":"string","enum":["rfc5322","rfc5321","html"]},"allowQuoted":{"type":"boolean"},"allowDomainLiteral":{"type":"boolean"},"allowUnicode":{"type":"boolean"},"allowObsolete":{"type":"boolean"},"requireDelegatedTld":{"type":"boolean"}},"required":["email","allowQuoted","allowDomainLiteral","allowUnicode","allowObsolete","requireDelegatedTld"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/validate"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"EmailSyntaxValidateEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/EmailSyntaxValidateRecord"},"meta":{"$ref":"#/components/schemas/EmailSyntaxValidateMeta"}},"required":["data","meta"],"additionalProperties":false},"EmailsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"email":{"type":"string","description":"Full address, username@domain — non-deliverable unless you override the domain.","example":"maria.ortiz@example.net"},"username":{"type":"string","description":"Local part derived from a fake name: ASCII-only, lowercase, first.last.","example":"maria.ortiz"},"domain":{"type":"string","description":"Domain used for this record — your ?domain= override, or one of the rotating reserved defaults.","example":"example.net"}},"additionalProperties":false},"EmailsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["emails"]},"params":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"maxLength":63}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"EmailsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/EmailsRootRecord"}},"meta":{"$ref":"#/components/schemas/EmailsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"EmojiRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"emoji":{"type":"string","description":"The fully-qualified sequence itself, U+FE0F included where the sequence needs it.","example":"👩‍💻"},"name":{"type":"string","description":"Unicode's name for the sequence, from emoji-test.txt.","example":"woman technologist"},"slug":{"type":"string","description":"URL-safe form of the name; unique across all sequences and accepted by /lookup.","example":"woman-technologist"},"codePoints":{"type":"array","items":{"type":"string"},"description":"Every code point of the sequence in U+ notation, in order.","example":["U+1F469","U+200D","U+1F4BB"]},"group":{"type":"string","description":"Unicode's top-level category, e.g. Smileys & Emotion.","example":"People & Body"},"subgroup":{"type":"string","description":"Unicode's subcategory, e.g. face-smiling.","example":"person-role"},"unicodeVersion":{"type":"string","description":"Emoji release that introduced the sequence — clients with older fonts will show tofu for newer releases.","example":"4.0"},"hasSkinTone":{"type":"boolean","description":"True when the sequence carries a U+1F3FB–U+1F3FF skin-tone modifier.","example":false},"isZwjSequence":{"type":"boolean","description":"True when several emoji are joined with U+200D ZERO WIDTH JOINER.","example":true},"keywords":{"type":"array","items":{"type":"string"},"description":"CLDR English search keywords, in CLDR's order — what /search matches on besides the name.","example":["computer","developer","software","technologist","woman"]}},"additionalProperties":false},"EmojiRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["emoji"]},"params":{"type":"object","properties":{"group":{"type":"string","enum":["smileys-emotion","people-body","animals-nature","food-drink","travel-places","activities","objects","symbols","flags","any"]},"subgroup":{"type":"string","maxLength":40},"version":{"type":"string","enum":["0.6","0.7","1.0","2.0","3.0","4.0","5.0","11.0","12.0","12.1","13.0","13.1","14.0","15.0","15.1","16.0","17.0","any"]},"maxVersion":{"type":"string","enum":["0.6","0.7","1.0","2.0","3.0","4.0","5.0","11.0","12.0","12.1","13.0","13.1","14.0","15.0","15.1","16.0","17.0"]},"skinTones":{"type":"boolean"},"zwj":{"type":"boolean"}},"required":["group","version","skinTones","zwj"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"EmojiRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/EmojiRootRecord"}},"meta":{"$ref":"#/components/schemas/EmojiRootMeta"}},"required":["data","meta"],"additionalProperties":false},"EmojiLookupRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"emoji":{"type":"string","description":"The fully-qualified sequence itself, U+FE0F included where the sequence needs it.","example":"👩‍💻"},"name":{"type":"string","description":"Unicode's name for the sequence, from emoji-test.txt.","example":"woman technologist"},"slug":{"type":"string","description":"URL-safe form of the name; unique across all sequences and accepted by /lookup.","example":"woman-technologist"},"codePoints":{"type":"array","items":{"type":"string"},"description":"Every code point of the sequence in U+ notation, in order.","example":["U+1F469","U+200D","U+1F4BB"]},"group":{"type":"string","description":"Unicode's top-level category, e.g. Smileys & Emotion.","example":"People & Body"},"subgroup":{"type":"string","description":"Unicode's subcategory, e.g. face-smiling.","example":"person-role"},"unicodeVersion":{"type":"string","description":"Emoji release that introduced the sequence — clients with older fonts will show tofu for newer releases.","example":"4.0"},"hasSkinTone":{"type":"boolean","description":"True when the sequence carries a U+1F3FB–U+1F3FF skin-tone modifier.","example":false},"isZwjSequence":{"type":"boolean","description":"True when several emoji are joined with U+200D ZERO WIDTH JOINER.","example":true},"keywords":{"type":"array","items":{"type":"string"},"description":"CLDR English search keywords, in CLDR's order — what /search matches on besides the name.","example":["computer","developer","software","technologist","woman"]}},"additionalProperties":false},"EmojiLookupMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["emoji"]},"params":{"type":"object","properties":{"emoji":{"type":"string","maxLength":64},"slug":{"type":"string","maxLength":80},"codepoints":{"type":"string","maxLength":120}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/lookup"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"EmojiLookupEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/EmojiLookupRecord"},"meta":{"$ref":"#/components/schemas/EmojiLookupMeta"}},"required":["data","meta"],"additionalProperties":false},"EmojiSearchRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"query":{"type":"string","description":"The normalized (lower-cased, trimmed) search text.","example":"happy"},"matchCount":{"type":"integer","description":"How many emoji matched in total, before `limit` is applied.","example":27},"returned":{"type":"integer","description":"How many matches are in `matches`.","example":5},"matches":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Ranked matches, best first: exact name or slug, then name prefix, then name substring, then exact keyword, then keyword prefix, then keyword substring. Each entry carries the full emoji record plus `matchedOn`, which is `name` for the first three ranks and `keyword` for the last three. Ties break on the shorter name, then alphabetically.","example":[{"emoji":"😀","name":"grinning face","slug":"grinning-face","codePoints":["U+1F600"],"group":"Smileys & Emotion","subgroup":"face-smiling","unicodeVersion":"1.0","hasSkinTone":false,"isZwjSequence":false,"keywords":["face","grin","grinning face"],"matchedOn":"keyword"}]}},"additionalProperties":false},"EmojiSearchMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["emoji"]},"params":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":64},"limit":{"type":"integer","minimum":1,"maximum":100},"skinTones":{"type":"boolean"}},"required":["q","limit","skinTones"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/search"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"EmojiSearchEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/EmojiSearchRecord"},"meta":{"$ref":"#/components/schemas/EmojiSearchMeta"}},"required":["data","meta"],"additionalProperties":false},"EmojiGroupsRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"emojiVersion":{"type":"string","description":"The pinned Unicode Emoji release these counts describe.","example":"17.0"},"emojiCount":{"type":"integer","description":"Total emoji counted under the current `skinTones` setting.","example":1914},"groupCount":{"type":"integer","description":"Number of top-level groups.","example":9},"subgroupCount":{"type":"integer","description":"Number of subgroups across all groups.","example":98},"groups":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Groups in Unicode's own order, each with its emoji count and its subgroups (name, count and one sample emoji).","example":[{"group":"Flags","slug":"flags","count":270,"subgroups":[{"subgroup":"flag","count":8,"sample":"🏁"}]}]}},"additionalProperties":false},"EmojiGroupsMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["emoji"]},"params":{"type":"object","properties":{"skinTones":{"type":"boolean"}},"required":["skinTones"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/groups"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"EmojiGroupsEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/EmojiGroupsRecord"},"meta":{"$ref":"#/components/schemas/EmojiGroupsMeta"}},"required":["data","meta"],"additionalProperties":false},"EmojiParseRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"text":{"type":"string","description":"The input, echoed exactly as received.","example":"hi 👋🏽 and 👨‍👩‍👧‍👦"},"graphemeCount":{"type":"integer","description":"Total Unicode grapheme clusters in the input — what a user perceives as characters.","example":10},"emojiCount":{"type":"integer","description":"Total emoji occurrences; a ZWJ family, a flag and a skin-tone sequence each count as one.","example":2},"distinctEmojiCount":{"type":"integer","description":"Number of distinct emoji sequences found.","example":2},"textWithoutEmoji":{"type":"string","description":"The input with every emoji grapheme removed and nothing else changed.","example":"hi  and "},"emoji":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Each distinct emoji in first-appearance order, with its occurrence count and — when the sequence is in the pinned snapshot — its name, slug, group and release. `recognized` is false when the grapheme is emoji-shaped but is not a fully-qualified sequence of this release: an invalid regional-indicator pair such as 🇦🇦, a bare hair or component modifier, or a code point Unicode has reserved for a future emoji. Those still count, with `name`, `slug`, `group` and `unicodeVersion` null.","example":[{"emoji":"👋🏽","count":1,"recognized":true,"name":"waving hand: medium skin tone","slug":"waving-hand-medium-skin-tone","codePoints":["U+1F44B","U+1F3FD"],"group":"People & Body","unicodeVersion":"1.0"}]}},"additionalProperties":false},"EmojiParseMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["emoji"]},"params":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":1000}},"required":["text"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/parse"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"EmojiParseEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/EmojiParseRecord"},"meta":{"$ref":"#/components/schemas/EmojiParseMeta"}},"required":["data","meta"],"additionalProperties":false},"EpochRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Value accepted by /convert's `from` parameter.","example":"filetime"},"name":{"type":"string","description":"Human name of the representation.","example":"Windows FILETIME"},"origin":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The instant at which the value is zero, in UTC. Years outside 0000–9999 use the ISO 8601 expanded ±YYYYYY form. Null for `iso`, which is a calendar rendering rather than a counter. `origin` + `minValue` units equals the start of `range` on every row but `excel`: the 1900 date system has two anchors and serials 1–59 sit one day later than the origin shown — that row's `note` spells both out.","example":"1601-01-01T00:00:00.000000000Z"},"unit":{"type":"string","description":"What one unit of the value counts.","example":"100-nanosecond interval"},"resolution":{"type":"string","description":"Smallest step the representation distinguishes, plus any storage caveat.","example":"100 ns"},"minValue":{"type":"string","description":"Lowest value /convert accepts for this representation.","example":"0"},"maxValue":{"type":"string","description":"Highest value /convert accepts for this representation.","example":"18446744073709551615"},"range":{"type":"string","description":"The instants those bounds correspond to, written start … end. Where a format has no native bound, this is the API's own instant limit instead.","example":"1601-01-01T00:00:00.000000000Z … +060056-05-28T05:36:10.955161500Z"},"typicalSource":{"type":"string","description":"Systems that genuinely emit values in THIS representation — one of the columns `search` matches on. Formats that merely look similar live in `note` instead, never here.","example":"Windows GetSystemTimeAsFileTime, NTFS $MFT records, Active Directory lastLogonTimestamp, ETW"},"specification":{"type":"string","description":"The primary document that defines this epoch.","example":"Microsoft FILETIME structure (minwinbase.h)"},"specificationUrl":{"type":"string","format":"uri","description":"Link to that primary document.","example":"https://learn.microsoft.com/en-us/windows/win32/api/minwinbase/ns-minwinbase-filetime"},"note":{"type":"string","description":"The caveat that actually bites when using this representation.","example":"An unsigned 64-bit count of 100-nanosecond intervals since 1601-01-01 (UTC). The Unix epoch is exactly 116444736000000000, the constant Microsoft's own time_t conversion sample adds."}},"additionalProperties":false},"EpochRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["epoch"]},"params":{"type":"object","properties":{"search":{"type":"string","minLength":1,"maxLength":60}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","count"],"additionalProperties":false},"EpochRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/EpochRootRecord"}},"meta":{"$ref":"#/components/schemas/EpochRootMeta"}},"required":["data","meta"],"additionalProperties":false},"EpochConvertRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"from":{"type":"string","description":"The source representation you declared; never inferred from the value.","example":"ticks"},"input":{"type":"string","description":"Your value in canonical form — a sign, no leading zeroes and no trailing fraction zeroes for numbers; upper-case T/Z for ISO input.","example":"621355968000000000"},"renderable":{"type":"boolean","description":"Whether the instant falls inside the calendar rendering window (proleptic Gregorian years 0001–9999). Numeric conversions are still returned when it is false — unless `anomaly` is set, which means there is no instant at all and every conversion is null.","example":true},"anomaly":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Set only when the input designates something that is not a real instant — currently only Excel 1900-system serial 60, the phantom 1900-02-29. Every conversion is null in that case.","example":null},"iso":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"The instant in UTC at the requested precision; fractional seconds are truncated, never rounded. Null when renderable is false.","example":"1970-01-01T00:00:00.000Z"},"unix":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Seconds since 1970-01-01T00:00:00Z.","example":"0"},"unixMs":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Milliseconds since the Unix epoch.","example":"0"},"unixUs":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Microseconds since the Unix epoch.","example":"0"},"unixNs":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Nanoseconds since the Unix epoch — this endpoint's exact internal unit.","example":"0"},"filetime":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"100-nanosecond intervals since 1601-01-01T00:00:00Z (Windows FILETIME). A fractional part appears only for instants finer than 100 ns.","example":"116444736000000000"},"ticks":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"100-nanosecond intervals since 0001-01-01T00:00:00Z (.NET DateTime.Ticks). Null beyond DateTime.MaxValue.","example":"621355968000000000"},"excel":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Excel 1900-system day serial, reproducing the 1900 leap-year bug. Null before 1900-01-01 and after 9999-12-31.","example":"25569"},"excel1904":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Excel 1904-system day serial, always exactly 1462 lower than the 1900-system serial. Null before 1904-01-01.","example":"24107"},"cocoa":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Seconds since 2001-01-01T00:00:00Z, Apple's Foundation/NSDate reference date; negative before 2001.","example":"-978307200"},"hfs":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Seconds since 1904-01-01T00:00:00Z, read as UTC because TN1150 defines HFS+ catalog dates in GMT — the one exception in the format is the volume header's creation date, which TN1150 stores in local time, so such a value arrives shifted by the recording machine's offset. Null outside the unsigned 32-bit range that ends 2040-02-06T06:28:15Z.","example":"2082844800"},"ntp":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"NTP era-0 seconds since 1900-01-01T00:00:00Z. Null outside era 0, which ends at 2036-02-07T06:28:16Z.","example":"2208988800"},"ntp64":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The same NTP timestamp as the wire format's 64-bit fixed point, written seconds.fraction in hexadecimal. The fraction is rounded to the nearest 2⁻³² s. Null on exactly the same bounds as `ntp`, and the single note about era 0 names both fields.","example":"83aa7e80.00000000"},"julianDay":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Julian Day, a fractional day count starting at noon UT; decimal-rounded to 15 fractional digits, which is finer than one nanosecond.","example":"2440587.5"},"local":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"The same instant on the requested zone's wall clock: zone, dateTime (no offset suffix), offset, offsetSeconds, weekday and isDst. Offsets come from the runtime's IANA database, so pre-standardisation dates get local mean time (seconds included) and far-future dates get today's rules projected forward. Null when the instant cannot be rendered.","example":{"zone":"UTC","dateTime":"1970-01-01T00:00:00.000","offset":"+00:00","offsetSeconds":0,"weekday":"Thursday","isDst":false}},"notes":{"type":"array","items":{"type":"string"},"description":"One line for every representation that could not hold the instant, plus one for any rounding that was applied — or a single line pointing at `anomaly` when the input designates no instant at all. Empty when every representation held the instant exactly.","example":[]}},"additionalProperties":false},"EpochConvertMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["epoch"]},"params":{"type":"object","properties":{"value":{"type":"string","minLength":1,"maxLength":48},"from":{"type":"string","enum":["unix","unixMs","unixUs","unixNs","iso","filetime","ticks","excel","excel1904","cocoa","hfs","ntp","julianDay"]},"tz":{"type":"string"},"precision":{"type":"integer","minimum":0,"maximum":9}},"required":["value","from","tz","precision"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/convert"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"EpochConvertEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/EpochConvertRecord"},"meta":{"$ref":"#/components/schemas/EpochConvertMeta"}},"required":["data","meta"],"additionalProperties":false},"ExitCodesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"code":{"type":"integer","minimum":0,"maximum":255,"description":"Numeric value: a signal number, an errno number or a process exit status.","example":137},"name":{"type":"string","description":"Symbolic constant (SIGKILL, ENOENT, EX_USAGE) or, for shell statuses that have no constant, a descriptive identifier such as command-not-found.","example":"terminated-by-SIGKILL"},"family":{"type":"string","description":"signal | errno | shell | sysexits.","example":"shell"},"meaning":{"type":"string","description":"What the value means, in one sentence.","example":"Terminated by SIGKILL (signal 9); the shell reports 128 + 9."},"standard":{"type":"string","description":"Which document this row's name and number are taken from: POSIX.1-2024 | Linux/glibc | sysexits.h | convention. 'convention' means no standard assigns the meaning. Linux/glibc does not imply Linux-only — SIGPROF and SIGIO exist on macOS and the BSDs too, they are simply no longer required by POSIX.","example":"convention"},"defaultAction":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Signal rows only: what the kernel does when no handler is installed — term (terminate), core (terminate and dump core), stop (suspend), ign (ignore) or cont (resume). null on every non-signal row. Only term and core signals can produce a 128+n exit status.","example":"term"},"derivedFrom":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The signal a 128+n status really comes from, set on the terminated-by-* and stopped-by-* rows. null everywhere else — including the 128+n values no signal can produce, such as 145.","example":"SIGKILL"},"commonCauses":{"type":"array","items":{"type":"string"},"description":"Short, factual situations that produce this value.","example":["The kernel out-of-memory killer terminated the process","Someone ran kill -9"]},"reference":{"type":"string","format":"uri","description":"Primary document this row's name and meaning come from.","example":"https://manpages.debian.org/bookworm/bash/bash.1.en.html"},"caveat":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Portability or scope limit you need before acting on the row — architecture-dependent signal numbers, implementation-defined errno numbers, convention-only statuses. null when there is nothing to warn about.","example":"31 on Linux/x86-64, ARM and PARISC. SIGSYS is 12 on Linux/Alpha, SPARC and MIPS and on macOS and the BSDs."}},"additionalProperties":false},"ExitCodesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["exit-codes"]},"params":{"type":"object","properties":{"family":{"type":"string","enum":["signal","errno","shell","sysexits"]},"search":{"type":"string","minLength":1,"maxLength":64},"code":{"type":"integer","minimum":0,"maximum":255}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","count"],"additionalProperties":false},"ExitCodesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ExitCodesRootRecord"}},"meta":{"$ref":"#/components/schemas/ExitCodesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"ExitCodesLookupRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"query":{"type":"string","description":"The value that was looked up; for a name, the canonical spelling of the matched entry.","example":"137"},"lookupBy":{"type":"string","description":"code | name — which key resolved this request.","example":"code"},"family":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The family filter that was applied, or null when the search covered every table.","example":"signal"},"matchCount":{"type":"integer","description":"How many rows matched. Always at least 1 — zero matches are a 404.","example":1},"ambiguous":{"type":"boolean","description":"True when more than one row matched — either because several tables claim the number (2 is ENOENT and SIGINT) or because one table has two names for it (errno 11 is EAGAIN and EWOULDBLOCK).","example":false},"matches":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Every matching row, each with code, name, family, meaning, standard, defaultAction, derivedFrom, commonCauses, reference and caveat.","example":[{"code":137,"name":"terminated-by-SIGKILL","family":"shell","meaning":"Terminated by SIGKILL (signal 9); the shell reports 128 + 9.","standard":"convention","defaultAction":null,"derivedFrom":"SIGKILL"}]}},"additionalProperties":false},"ExitCodesLookupMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["exit-codes"]},"params":{"type":"object","properties":{"code":{"type":"integer","minimum":0,"maximum":255},"name":{"type":"string","minLength":1,"maxLength":64},"family":{"type":"string","enum":["signal","errno","shell","sysexits"]}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/lookup"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"ExitCodesLookupEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ExitCodesLookupRecord"},"meta":{"$ref":"#/components/schemas/ExitCodesLookupMeta"}},"required":["data","meta"],"additionalProperties":false},"FeatureFlagsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"key":{"type":"string","description":"Unique safe flag key containing the stable record index.","example":"checkout-redesign-0-a81c42"},"name":{"type":"string","description":"Human-readable fictional feature name.","example":"Checkout Redesign"},"description":{"type":"string","description":"Short fixture description with no customer or product claim.","example":"Controls the checkout redesign fixture."},"environment":{"type":"string","description":"development, staging or production.","example":"staging"},"state":{"type":"string","description":"active, inactive or archived.","example":"active"},"enabled":{"type":"boolean","description":"True only while state is active.","example":true},"strategy":{"type":"string","description":"boolean, percentage, targeted or multivariate.","example":"percentage"},"rolloutPercentage":{"type":"integer","description":"Effective global rollout percentage from 0 through 100.","example":35},"defaultVariant":{"type":"string","description":"Fallback variant key present in variants.","example":"off"},"variants":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Bounded variant keys and integer weights totaling 100.","example":[{"key":"on","weight":35},{"key":"off","weight":65}]},"rules":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Strategy-specific percentage, target or split rule; boolean flags have none.","example":[{"id":"percentage-rollout","kind":"percentage","percentage":35,"variant":"on"}]},"version":{"type":"integer","description":"Positive fictional configuration version.","example":7},"createdAt":{"type":"string","format":"date-time","description":"Creation time no later than updatedAt.","example":"2026-03-10T09:12:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last update time no earlier than createdAt.","example":"2026-07-01T14:22:00.000Z"},"archivedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Archive time for archived flags only; otherwise null.","example":null}},"additionalProperties":false},"FeatureFlagsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["feature-flags"]},"params":{"type":"object","properties":{"environment":{"type":"string","enum":["development","staging","production"]},"state":{"type":"string","enum":["active","inactive","archived"]},"strategy":{"type":"string","enum":["boolean","percentage","targeted","multivariate"]},"asOf":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"FeatureFlagsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FeatureFlagsRootRecord"}},"meta":{"$ref":"#/components/schemas/FeatureFlagsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"FeatureFlagsEvaluationsRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"evaluationId":{"type":"string","description":"Unique evaluation identity containing stable record index.","example":"eval_0_31f0a82d"},"flagKey":{"type":"string","description":"Validated requested flag key.","example":"checkout-redesign"},"subjectKey":{"type":"string","description":"Synthetic subject key built from prefix and record index.","example":"anon-0-a81c"},"environment":{"type":"string","description":"Evaluation environment.","example":"development"},"context":{"type":"object","additionalProperties":true,"description":"Safe fictional country and plan targeting context.","example":{"country":"DK","plan":"pro"}},"bucket":{"type":"integer","description":"Deterministic integer bucket from 0 through 99.","example":17},"rolloutPercentage":{"type":"integer","description":"Requested rollout threshold.","example":50},"enabled":{"type":"boolean","description":"Whether active is true and bucket is below rolloutPercentage.","example":true},"variant":{"type":"string","description":"on when enabled; otherwise off.","example":"on"},"reason":{"type":"string","description":"flag-disabled, rollout-zero, rollout-full, rollout-match or rollout-miss.","example":"rollout-match"},"matchedRule":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"percentage-rollout for active flags; null when disabled.","example":"percentage-rollout"},"evaluatedAt":{"type":"string","format":"date-time","description":"Stable generated instant at or before resolved asOf.","example":"2026-07-10T00:00:00.412Z"}},"additionalProperties":false},"FeatureFlagsEvaluationsMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["feature-flags"]},"params":{"type":"object","properties":{"flag":{"type":"string","minLength":1,"maxLength":64},"subjectPrefix":{"type":"string","minLength":1,"maxLength":64},"environment":{"type":"string","enum":["development","staging","production"]},"rolloutPercentage":{"type":"integer","minimum":0,"maximum":100},"active":{"type":"boolean"},"asOf":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["flag","subjectPrefix","environment","rolloutPercentage","active"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/evaluations"]},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","route","count","seed"],"additionalProperties":false},"FeatureFlagsEvaluationsEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FeatureFlagsEvaluationsRecord"}},"meta":{"$ref":"#/components/schemas/FeatureFlagsEvaluationsMeta"}},"required":["data","meta"],"additionalProperties":false},"FileSignaturesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"signatureId":{"type":"string","description":"Stable kebab-case id of this byte pattern; the join key used by /lookup and /detect.","example":"isobmff-ftyp-avif"},"formatId":{"type":"string","description":"Stable kebab-case id of the format this pattern identifies. Several signatures may share one formatId (TIFF has two byte orders, RAR two generations, Mach-O four magics).","example":"avif"},"formatName":{"type":"string","description":"The format's name as its own specification writes it.","example":"AV1 Image File Format"},"category":{"type":"string","description":"One of: image | audio | video | archive | compression | document | executable | font | database | disk-image | data. ('any' is a filter value only, never a row value.)","example":"image"},"offset":{"type":"integer","description":"Byte offset of the pattern from the start of the file. 0 for most; 4 for the ISO BMFF ftyp box type, 36 for the ICC profile signature, 257 for POSIX ustar, 32769 for ISO 9660.","example":4},"pattern":{"type":"string","description":"The bytes, as space-separated uppercase hex pairs. `??` means \"any byte\" — a length or version field the format does not fix.","example":"66 74 79 70 61 76 69 66"},"bytesNeeded":{"type":"integer","description":"offset + pattern length: how many leading bytes you must have read before this signature can be evaluated at all.","example":12},"literalBytes":{"type":"integer","description":"Number of non-wildcard bytes in the pattern. This is the ranking weight /detect uses — more literal evidence ranks higher.","example":8},"extensions":{"type":"array","items":{"type":"string"},"description":"Conventional extensions (lowercase, no dot, sorted). Empty for formats with no conventional extension. Conventions, not guarantees — the whole point of this endpoint is that an extension can lie.","example":["avif","avifs"]},"mimeType":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The media type the format's own registration declares — or, absent a registration, the single type it is universally served as (audio/wav, application/x-tar) — and only when that exact string exists in this API's IANA media-types dataset. null in three cases, each deliberate: the format has neither a registration nor one de-facto type (ELF, Mach-O, Java class, ar, DEX, LZ4); the row identifies a container or tag that can wrap anything, so no type identifies it (CFB, ID3v2, the bare RIFF and ftyp rows, MBR/GPT); or the extension is registered to something unrelated (PSB). Never invented.","example":"image/avif"},"containerFormatId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The formatId of the container this signature sits inside, when it refines one — 'zip' for EPUB, 'isobmff' for AVIF/HEIC/MP4, 'riff' for WAV/WebP/AVI, 'jpeg' for JFIF/Exif. null for standalone signatures.","example":"isobmff"},"trailer":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The end-of-file marker the format's spec defines, as hex ('3B' for GIF, '25 25 45 4F 46' for PDF's %%EOF). Recorded because upload validators ask for it; /detect never checks it, because /detect sees a prefix, not a whole file. null where the spec defines none.","example":null},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"What this signature does NOT tell you: the row's own caveat followed by the format's, when both exist — a per-row note never hides the format-level one. null when there is nothing honest to add.","example":"Brand \"avif\"."},"specification":{"type":"string","description":"Verbatim citation of the document AND clause the byte values were read from. Never a paraphrase, never a secondary source.","example":"MP4 Registration Authority, registered file-type brands (verified 2026-07-30); box structure per ISO/IEC 14496-12, \"File Type Box\""},"specificationUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"HTTPS link to that document, or null when the only authoritative copy is paywalled (ITU-T T.81, ISO/IEC 14496-12) and no legitimate free copy exists. A decorative link would be worse than null.","example":"https://mp4ra.org/registered-types/brands"},"sourceKind":{"type":"string","description":"Where the citation sits on the authority ladder: standard (ISO/IEC, ITU-T, IETF, ECMA, W3C, POSIX), vendor-specification (Microsoft Open Specifications, Adobe, Google, RARLAB), registry (MP4RA, IANA), reference-implementation (bzip2, 7-Zip, Apple's loader.h — formats with no published specification).","example":"registry"}},"additionalProperties":false},"FileSignaturesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["file-signatures"]},"params":{"type":"object","properties":{"category":{"type":"string","enum":["image","audio","video","archive","compression","document","executable","font","database","disk-image","data","any"]},"search":{"type":"string","minLength":1,"maxLength":64},"extension":{"type":"string","minLength":1,"maxLength":16},"maxOffsetBytes":{"type":"integer","minimum":1,"maximum":65536},"containers":{"type":"string","enum":["all","only","exclude"]}},"required":["category","containers"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","count"],"additionalProperties":false},"FileSignaturesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FileSignaturesRootRecord"}},"meta":{"$ref":"#/components/schemas/FileSignaturesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"FileSignaturesDetectRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"bytesProvided":{"type":"integer","description":"How many bytes `bytes` decoded to.","example":8},"encoding":{"type":"string","description":"The resolved `encoding`.","example":"hex"},"hexPreview":{"type":"string","description":"The first up to 32 decoded bytes as space-separated uppercase hex, so you can see exactly what was parsed. Truncated with \"…\" beyond that.","example":"89 50 4E 47 0D 0A 1A 0A"},"matches":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Every signature these bytes satisfy, ranked by literalBytes descending, then offset ascending, then signatureId ascending. Capped at 12 entries (a warning names how many were dropped). Empty array when nothing matches. Element keys: `signatureId`, `formatId`, `formatName`, `category`, `offset`, `pattern`, `matchedBytes` (the bytes actually present at that offset), `bytesNeeded`, `literalBytes`, `mimeType`, `extensions`, `containerFormatId`, `note`, `specification`, `specificationUrl`.","example":[{"signatureId":"png-signature","formatId":"png","formatName":"Portable Network Graphics","category":"image","offset":0,"pattern":"89 50 4E 47 0D 0A 1A 0A","matchedBytes":"89 50 4E 47 0D 0A 1A 0A","bytesNeeded":8,"literalBytes":8,"mimeType":"image/png","extensions":["png"],"containerFormatId":null,"note":null,"specification":"W3C PNG Specification (Third Edition), §5.2 \"PNG signature\"","specificationUrl":"https://www.w3.org/TR/png-3/"}]},"matchCount":{"type":"integer","description":"Total matches found (may exceed matches.length when capped).","example":1},"best":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"matches[0], or null when nothing matched. The match with the most literal evidence — not a verdict. Same element shape as `matches`.","example":{"signatureId":"png-signature","formatId":"png","formatName":"Portable Network Graphics","category":"image","offset":0,"pattern":"89 50 4E 47 0D 0A 1A 0A","matchedBytes":"89 50 4E 47 0D 0A 1A 0A","bytesNeeded":8,"literalBytes":8,"mimeType":"image/png","extensions":["png"],"containerFormatId":null,"note":null,"specification":"W3C PNG Specification (Third Edition), §5.2 \"PNG signature\"","specificationUrl":"https://www.w3.org/TR/png-3/"}},"ambiguous":{"type":"boolean","description":"true when two or more matches remain that are NOT in a container/refinement relationship with each other — i.e. these bytes genuinely satisfy rival formats. 0xCAFEBABE (a Java class file and a Mach-O universal binary) is the canonical case.","example":false},"notEvaluated":{"type":"integer","description":"How many table rows could not be evaluated because their bytesNeeded exceeds bytesProvided. A zero-match answer with a non-zero notEvaluated is not evidence of an unknown format.","example":24},"bytesForWholeTable":{"type":"integer","description":"The largest bytesNeeded in the table — how many leading bytes would make notEvaluated zero. Constant per deploy, and beyond the `bytes` cap by design while ISO 9660 is in the table.","example":32774},"claimedName":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The basename of `claimedName` as supplied, or null. Never fetched, never written anywhere.","example":"avatar.png"},"claimedType":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"`claimedType` as supplied, lowercased with parameters stripped, or null.","example":"image/png"},"mismatch":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"null when neither claim was supplied. Otherwise `{ verdict: \"agrees\" | \"disagrees\" | \"undetermined\", claimedExtension, extensionAgrees, typeAgrees, reasons }`. A flag is `false` only when the bytes REFUTE the claim — every signature of every format that claims that extension or media type has a literal byte you supplied that contradicts it. It is `null` when the claim was not supplied, could not be parsed, names something this table has no signature for (DOCX, JAR, video/webm and audio/x-ms-wma are all indistinguishable from their container in a prefix), or is still consistent with a signature whose deciding bytes lie past the prefix you supplied. `verdict` is \"undetermined\" when nothing matched, when the claim could not be parsed, and whenever neither flag came out true or false. `reasons` is a bounded list of plain-English findings, each naming the claim and the evidence.","example":{"verdict":"disagrees","claimedExtension":"jpg","extensionAgrees":false,"typeAgrees":false,"reasons":["The bytes match Portable Network Graphics; the filename claims '.jpg', which this table registers only for JPEG (JFIF/Exif-agnostic baseline marker sequence), JPEG with an Exif APP1 segment — and every signature those formats define is contradicted by the bytes you supplied.","The declared Content-Type 'image/jpeg' belongs to JPEG (JFIF/Exif-agnostic baseline marker sequence), JPEG with a JFIF APP0 segment, JPEG with an Exif APP1 segment in this table, and every signature those formats define is contradicted by the bytes you supplied (which match image/png)."]}}},"additionalProperties":false},"FileSignaturesDetectMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["file-signatures"]},"params":{"type":"object","properties":{"bytes":{"type":"string","minLength":1,"maxLength":8192},"encoding":{"type":"string","enum":["hex","base64"]},"claimedName":{"type":"string","minLength":1,"maxLength":255},"claimedType":{"type":"string","minLength":1,"maxLength":255}},"required":["bytes","encoding"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/detect"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"FileSignaturesDetectEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/FileSignaturesDetectRecord"},"meta":{"$ref":"#/components/schemas/FileSignaturesDetectMeta"}},"required":["data","meta"],"additionalProperties":false},"FileSignaturesLookupRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"formatId":{"type":"string","description":"This table's stable id for the format.","example":"webp"},"formatName":{"type":"string","description":"The format's name as its own specification writes it.","example":"WebP"},"category":{"type":"string","description":"One of: image | audio | video | archive | compression | document | executable | font | database | disk-image | data.","example":"image"},"extensions":{"type":"array","items":{"type":"string"},"description":"Conventional extensions (lowercase, no dot, sorted). Conventions, not guarantees.","example":["webp"]},"mimeType":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The media type the format's own registration declares (or the single type it is universally served as), when that exact string exists in this API's IANA media-types dataset. null when no type identifies this format — see the list route's field description for the three cases.","example":"image/webp"},"containerFormatId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The container this format lives inside, when it has one.","example":"riff"},"signatures":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Every signature registered for this format, in table order, bounded by construction (the most any format has today is four, for Mach-O). Element keys: `signatureId`, `offset`, `pattern`, `bytesNeeded`, `literalBytes`, `trailer`, `note`, `specification`, `specificationUrl`, `sourceKind`.","example":[{"signatureId":"webp-riff-form","offset":0,"pattern":"52 49 46 46 ?? ?? ?? ?? 57 45 42 50","bytesNeeded":12,"literalBytes":8,"trailer":null,"note":"The four wildcard bytes are the RIFF file size.","specification":"WebP Container Specification, \"WebP File Header\" — \"RIFF\", file size, then \"WEBP\"","specificationUrl":"https://developers.google.com/speed/webp/docs/riff_container","sourceKind":"vendor-specification"}]},"signatureCount":{"type":"integer","description":"signatures.length.","example":1},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Format-level caveat: what this signature does not tell you. null when there is nothing honest to add.","example":null}},"additionalProperties":false},"FileSignaturesLookupMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["file-signatures"]},"params":{"type":"object","properties":{"extension":{"type":"string","minLength":1,"maxLength":16},"mimeType":{"type":"string","minLength":1,"maxLength":255},"formatId":{"type":"string","minLength":1,"maxLength":48}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/lookup"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"FileSignaturesLookupEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/FileSignaturesLookupRecord"},"meta":{"$ref":"#/components/schemas/FileSignaturesLookupMeta"}},"required":["data","meta"],"additionalProperties":false},"FileSignaturesPrefixLengthRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"category":{"type":"string","description":"Resolved `category`.","example":"any"},"bytesRequested":{"type":"integer","description":"Resolved `bytes` (echoed here as well as in meta.params).","example":16},"signatureCount":{"type":"integer","description":"Signatures in scope.","example":116},"formatCount":{"type":"integer","description":"Distinct formats in scope.","example":99},"signaturesDecidable":{"type":"integer","description":"Signatures whose bytesNeeded ≤ bytesRequested.","example":108},"formatsDecidable":{"type":"integer","description":"Formats with at least one decidable signature.","example":91},"maxBytesNeeded":{"type":"integer","description":"Largest bytesNeeded in scope — the ceiling that decides everything.","example":32774},"thresholds":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Fixed, documented cut-offs (4, 8, 12, 16, 32, 64, 128, 264, 512, 1024, then maxBytesNeeded if not already listed), each `{ bytes, signaturesDecidable, formatsDecidable }`. Cut-offs above maxBytesNeeded are omitted.","example":[{"bytes":4,"signaturesDecidable":62,"formatsDecidable":55}]},"beyondRequest":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Up to 10 signatures that need more than bytesRequested, ascending by bytesNeeded, each `{ signatureId, formatName, bytesNeeded }` — so the number is never mysterious. A warning names how many more exist.","example":[{"signatureId":"tar-ustar","formatName":"POSIX ustar archive","bytesNeeded":265}]}},"additionalProperties":false},"FileSignaturesPrefixLengthMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["file-signatures"]},"params":{"type":"object","properties":{"bytes":{"type":"integer","minimum":1,"maximum":65536},"category":{"type":"string","enum":["image","audio","video","archive","compression","document","executable","font","database","disk-image","data","any"]}},"required":["bytes","category"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/prefix-length"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"FileSignaturesPrefixLengthEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/FileSignaturesPrefixLengthRecord"},"meta":{"$ref":"#/components/schemas/FileSignaturesPrefixLengthMeta"}},"required":["data","meta"],"additionalProperties":false},"FileUploadsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"uploadId":{"type":"string","description":"Unique fictional upload id containing the stable record index.","example":"upl_0_a81c42f0"},"fileName":{"type":"string","description":"Generic filename whose extension agrees with contentType.","example":"document-1.pdf"},"contentType":{"type":"string","description":"Selected mock file media type.","example":"application/pdf"},"sizeBytes":{"type":"integer","description":"Total file bytes inside requested bounds.","example":10485760},"mode":{"type":"string","description":"single or multipart.","example":"multipart"},"status":{"type":"string","description":"initiated, uploading, completed, failed or expired.","example":"uploading"},"createdAt":{"type":"string","format":"date-time","description":"Fictional session creation instant.","example":"2026-07-10T08:00:00.000Z"},"expiresAt":{"type":"string","format":"date-time","description":"Expiry after createdAt; expired fixtures place it at or before resolved asOf.","example":"2026-07-17T08:00:00.000Z"},"completedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Completion instant for completed sessions only.","example":null},"uploadedBytes":{"type":"integer","description":"Bytes received, never above sizeBytes.","example":5242880},"progressPercentage":{"type":"number","description":"uploadedBytes divided by sizeBytes; only completed sessions equal 100.","example":50},"partSizeBytes":{"type":"integer","description":"Nominal bytes per part; 1 KiB–10 MiB for multipart and equal to sizeBytes for single mode.","example":5242880},"partCount":{"type":"integer","description":"One for single mode, otherwise 2–10.","example":2},"completedParts":{"type":"integer","description":"Fully uploaded parts, from zero through partCount.","example":1},"checksum":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Fictional sha256 value for completed sessions only.","example":null},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Safe example.com URL for completed sessions only.","example":null},"error":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"Code/message for failed or expired sessions; otherwise null.","example":null}},"additionalProperties":false},"FileUploadsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["file-uploads"]},"params":{"type":"object","properties":{"contentType":{"type":"string","enum":["image/png","application/pdf","text/csv","application/zip"]},"mode":{"type":"string","enum":["single","multipart"]},"status":{"type":"string","enum":["initiated","uploading","completed","failed","expired"]},"minSizeBytes":{"type":"integer","minimum":1,"maximum":104857600},"maxSizeBytes":{"type":"integer","minimum":1,"maximum":104857600},"asOf":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["minSizeBytes","maxSizeBytes"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"FileUploadsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FileUploadsRootRecord"}},"meta":{"$ref":"#/components/schemas/FileUploadsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"FileUploadsPartsRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"partId":{"type":"string","description":"Unique fixture part id containing the stable part number.","example":"part_1_a81c42f0"},"uploadId":{"type":"string","description":"Validated requested upload id.","example":"upl_demo"},"partNumber":{"type":"integer","description":"One-based sequential part number.","example":1},"offsetBytes":{"type":"integer","description":"Zero-based byte offset: (partNumber - 1) × sizeBytes.","example":0},"sizeBytes":{"type":"integer","description":"Requested fixed part size.","example":5242880},"status":{"type":"string","description":"pending, uploading, completed or failed.","example":"completed"},"uploadedBytes":{"type":"integer","description":"Bytes received for this part, never above sizeBytes.","example":5242880},"progressPercentage":{"type":"number","description":"Exact byte progress; completed alone reports 100.","example":100},"etag":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Fictional quoted ETag for completed parts only.","example":"\"31f0a82d9c41\""},"checksum":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Fictional sha256 value for completed parts only.","example":"sha256:66f327f276cc47a8b2caa2cf7131537a"},"error":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"Failure code/message for failed parts only.","example":null},"updatedAt":{"type":"string","format":"date-time","description":"Stable fictional instant at or before resolved asOf.","example":"2026-07-10T00:00:01.412Z"}},"additionalProperties":false},"FileUploadsPartsMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["file-uploads"]},"params":{"type":"object","properties":{"uploadId":{"type":"string","minLength":1,"maxLength":64},"partSizeBytes":{"type":"integer","minimum":1024,"maximum":10485760},"status":{"type":"string","enum":["pending","uploading","completed","failed"]},"asOf":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["uploadId","partSizeBytes"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/parts"]},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","route","count","seed"],"additionalProperties":false},"FileUploadsPartsEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FileUploadsPartsRecord"}},"meta":{"$ref":"#/components/schemas/FileUploadsPartsMeta"}},"required":["data","meta"],"additionalProperties":false},"FilesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"fileName":{"type":"string","description":"Kebab-case base name (2–3 dictionary words) plus a kind-appropriate extension.","example":"polished-invoice.pdf"},"extension":{"type":"string","description":"File extension without the dot, drawn from the kind's pool.","example":"pdf"},"mimeType":{"type":"string","description":"MIME type matching the extension, resolved from the platform's shared MIME dataset (IANA registry; de-facto types labelled there).","example":"application/pdf"},"sizeBytes":{"type":"integer","description":"File size in bytes, log-uniform within the kind's plausible range (e.g. code 200 B – 200 kB, video 1 MB – 1.5 GB).","example":482133},"sizeHuman":{"type":"string","description":"sizeBytes in decimal units (1 kB = 1000 B): whole bytes below 1000, otherwise one decimal with kB/MB/GB.","example":"482.1 kB"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp within the past two years, relative to request time.","example":"2025-09-18T07:42:13.519Z"},"sha256":{"type":"string","minLength":64,"maxLength":64,"pattern":"^[0-9A-Fa-f]{64}$","description":"Seed-derived FAKE checksum — formatted like SHA-256 but not the hash of any real content.","example":"9b74c9897bac770ffc029102a200c5de3f78bd2d8c9464b1c1e8d6ab2f1b9c3a"},"path":{"type":"string","description":"Absolute unix-style path in a kind-appropriate directory, always ending in fileName.","example":"/home/maria/documents/polished-invoice.pdf"}},"additionalProperties":false},"FilesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["files"]},"params":{"type":"object","properties":{"kind":{"type":"string","enum":["image","document","video","audio","archive","code","any"]}},"required":["kind"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"FilesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FilesRootRecord"}},"meta":{"$ref":"#/components/schemas/FilesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"FlightsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Distinct flt_-prefixed fictional fixture identifier.","example":"flt_4e19c0a27b5d8f31_00"},"flightNumber":{"type":"string","description":"Fictional internal airline code plus a per-response sequence; not an IATA flight number.","example":"NX1-1000"},"airline":{"type":"object","additionalProperties":true,"description":"Fictional airline name and digit-bearing internal fixture code; neither claims an IATA/ICAO assignment.","example":{"name":"Northstar Air (fictional)","code":"NX1"}},"origin":{"type":"object","additionalProperties":true,"description":"Hub airport IATA, name, city, country, countryCode and pinned IANA timezone.","example":{"iata":"CPH","name":"Copenhagen Kastrup Airport","city":"Copenhagen","country":"Denmark","countryCode":"DK","timezone":"Europe/Copenhagen"}},"destination":{"type":"object","additionalProperties":true,"description":"A different hub airport with IATA, name, city, country, countryCode and timezone.","example":{"iata":"JFK","name":"John F. Kennedy International Airport","city":"New York","country":"United States","countryCode":"US","timezone":"America/New_York"}},"status":{"type":"string","description":"Fictional snapshot label: scheduled | boarding | departed | arrived | cancelled; never live status.","example":"scheduled"},"statusAsOf":{"type":"string","format":"date-time","description":"Snapshot instant used to make status temporally consistent with departure and arrival.","example":"2026-08-14T08:45:00.000Z"},"departure":{"type":"string","format":"date-time","description":"Synthetic scheduled UTC departure inside from..to — not an actual or live time.","example":"2026-08-14T09:20:00.000Z"},"arrival":{"type":"string","format":"date-time","description":"Synthetic scheduled UTC arrival, exactly durationMinutes after departure.","example":"2026-08-14T17:45:00.000Z"},"durationMinutes":{"type":"integer","description":"Positive fixture duration derived from route distance plus generic operating time.","example":505},"aircraft":{"type":"string","description":"Generic aircraft class selected coherently with route length, not a real tail assignment.","example":"wide-body twinjet"},"cabin":{"type":"string","description":"economy | premiumEconomy | business | first.","example":"economy"},"gate":{"type":"string","description":"Synthetic gate label for interface fixtures; not operational airport data.","example":"B17"},"terminal":{"type":"string","description":"Synthetic terminal label T1–T4; not operational airport data.","example":"T2"}},"additionalProperties":false},"FlightsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["flights"]},"params":{"type":"object","properties":{"origin":{"type":"string","minLength":3,"maxLength":3},"destination":{"type":"string","minLength":3,"maxLength":3},"status":{"type":"string","enum":["scheduled","boarding","departed","arrived","cancelled"]},"asOf":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"cabin":{"type":"string","enum":["economy","premiumEconomy","business","first"]}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"FlightsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FlightsRootRecord"}},"meta":{"$ref":"#/components/schemas/FlightsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"FormSubmissionsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Distinct fictional submission ID.","example":"submission_fixture_0_a12b34c56d78ef"},"form":{"type":"string","description":"contact | signup | survey | application.","example":"signup"},"status":{"type":"string","description":"valid | invalid | pending | spam.","example":"invalid"},"payload":{"type":"object","additionalProperties":true,"description":"Bounded form-specific fictional values.","example":{"name":"Avery Jensen","email":"submitter-a1b2c3d4@example.org","username":"fixture_1234abcd","password":"not-a-secret-1234","acceptedTerms":true,"marketingOptIn":false}},"errors":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Field-addressable required, format or type errors; nonempty only for invalid status. Each rejectedValue exactly matches the deliberately invalid value retained in payload.","example":[{"field":"email","code":"invalid_format","message":"The fictional email value has an invalid format.","rejectedValue":"not-an-email"}]},"attachments":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Zero to two safe metadata-only attachments with coherent MIME type.","example":[{"id":"att_fixture_1","fileName":"fixture-1.pdf","mimeType":"application/pdf","sizeBytes":42000,"url":"https://uploads.example/files/att_fixture_1"}]},"submittedAt":{"type":"string","format":"date-time","description":"Submission time inside the resolved window.","example":"2026-07-09T10:00:00.000Z"},"processedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Ordered processing time; null only while pending.","example":"2026-07-09T10:01:00.000Z"},"spam":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"Threshold-consistent spam score/reason for spam status only.","example":null},"accepted":{"type":"boolean","description":"True exactly for valid submissions.","example":false}},"additionalProperties":false},"FormSubmissionsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["form-submissions"]},"params":{"type":"object","properties":{"form":{"type":"string","enum":["contact","signup","survey","application","any"]},"status":{"type":"string","enum":["valid","invalid","pending","spam","any"]},"errorCount":{"type":"integer","minimum":1,"maximum":5},"attachmentCount":{"type":"integer","minimum":0,"maximum":2},"windowDays":{"type":"integer","minimum":1,"maximum":90},"asOf":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["form","status","attachmentCount","windowDays"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"FormSubmissionsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FormSubmissionsRootRecord"}},"meta":{"$ref":"#/components/schemas/FormSubmissionsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"GeodesyDistanceRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"from":{"type":"object","additionalProperties":true,"description":"Canonical first coordinate as latitude/longitude.","example":{"latitude":51.5074,"longitude":-0.1278}},"to":{"type":"object","additionalProperties":true,"description":"Canonical second coordinate as latitude/longitude.","example":{"latitude":40.7128,"longitude":-74.006}},"centralAngleDegrees":{"type":"number","description":"Great-circle central angle in degrees.","example":50.094212},"distanceMeters":{"type":"number","description":"Great-circle arc length on the exposed spherical model, in meters.","example":5570229.874},"distanceKilometers":{"type":"number","description":"The same arc length in kilometers.","example":5570.229874},"initialBearingDegrees":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Forward bearing at the first point, clockwise from true north; null for non-unique geometry or a polar first point.","example":288.33},"finalBearingDegrees":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Forward bearing on arrival, clockwise from true north; null for non-unique geometry or a polar destination.","example":231.21},"isCoincident":{"type":"boolean","description":"True when both inputs identify the same point on the sphere.","example":false},"isAntipodal":{"type":"boolean","description":"True for diametrically opposite points, where infinitely many great circles connect them.","example":false},"model":{"type":"string","description":"Explicit calculation model: mean-earth-sphere (not an ellipsoidal or road distance).","example":"mean-earth-sphere"},"radiusMeters":{"type":"number","description":"IUGG mean Earth radius used by every calculation, in meters.","example":6371008.8}},"additionalProperties":false},"GeodesyDistanceMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["geodesy"]},"params":{"type":"object","properties":{"lat1":{"type":"number","minimum":-90,"maximum":90},"lon1":{"type":"number","minimum":-180,"maximum":180},"lat2":{"type":"number","minimum":-90,"maximum":90},"lon2":{"type":"number","minimum":-180,"maximum":180}},"required":["lat1","lon1","lat2","lon2"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/distance"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"GeodesyDistanceEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/GeodesyDistanceRecord"},"meta":{"$ref":"#/components/schemas/GeodesyDistanceMeta"}},"required":["data","meta"],"additionalProperties":false},"GeodesyDestinationRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"origin":{"type":"object","additionalProperties":true,"description":"Canonical start coordinate.","example":{"latitude":55.6761,"longitude":12.5683}},"bearingDegrees":{"type":"number","description":"Canonical initial bearing in [0, 360).","example":90},"distanceKilometers":{"type":"number","description":"Requested spherical arc distance in kilometers.","example":1000},"destination":{"type":"object","additionalProperties":true,"description":"Calculated coordinate with longitude normalized to [-180, 180).","example":{"latitude":55.002,"longitude":28.227}},"finalBearingDegrees":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Forward bearing at the destination; null for zero distance or a polar destination where local north is undefined.","example":102.8},"model":{"type":"string","description":"Explicit calculation model: mean-earth-sphere (not an ellipsoidal or road distance).","example":"mean-earth-sphere"},"radiusMeters":{"type":"number","description":"IUGG mean Earth radius used by every calculation, in meters.","example":6371008.8}},"additionalProperties":false},"GeodesyDestinationMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["geodesy"]},"params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"bearing":{"type":"number","minimum":0,"maximum":360},"distanceKm":{"type":"number","minimum":0,"maximum":40031}},"required":["lat","lon","bearing","distanceKm"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/destination"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"GeodesyDestinationEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/GeodesyDestinationRecord"},"meta":{"$ref":"#/components/schemas/GeodesyDestinationMeta"}},"required":["data","meta"],"additionalProperties":false},"GeodesyBboxRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"center":{"type":"object","additionalProperties":true,"description":"Canonical center coordinate.","example":{"latitude":55.6761,"longitude":12.5683}},"radiusKilometers":{"type":"number","description":"Requested spherical radius in kilometers.","example":100},"south":{"type":"number","description":"Minimum latitude, clamped to -90.","example":54.7768},"north":{"type":"number","description":"Maximum latitude, clamped to 90.","example":56.5754},"west":{"type":"number","description":"Western longitude; greater than east when the box crosses the antimeridian.","example":10.98},"east":{"type":"number","description":"Eastern longitude; less than west when the box crosses the antimeridian.","example":14.15},"crossesAntimeridian":{"type":"boolean","description":"True when the longitude interval wraps across ±180 degrees.","example":false},"spansAllLongitudes":{"type":"boolean","description":"True when the radius reaches a pole or covers the full globe.","example":false},"model":{"type":"string","description":"Explicit calculation model: mean-earth-sphere (not an ellipsoidal or road distance).","example":"mean-earth-sphere"},"radiusMeters":{"type":"number","description":"IUGG mean Earth radius used by every calculation, in meters.","example":6371008.8}},"additionalProperties":false},"GeodesyBboxMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["geodesy"]},"params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"radiusKm":{"type":"number","minimum":0,"maximum":40031}},"required":["lat","lon","radiusKm"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/bbox"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"GeodesyBboxEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/GeodesyBboxRecord"},"meta":{"$ref":"#/components/schemas/GeodesyBboxMeta"}},"required":["data","meta"],"additionalProperties":false},"GeohashEncodeRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"hash":{"type":"string","description":"The geohash this cell belongs to, exactly as validated.","example":"ezs42"},"precision":{"type":"integer","minimum":1,"maximum":12,"description":"Hash length in characters; each character adds 5 bits.","example":5},"cell":{"type":"object","additionalProperties":true,"description":"Exact cell rectangle in decimal degrees: south, west, north, east. Bounds are binary fractions of the ±90/±180 ranges, so they are exact, not rounded.","example":{"south":42.5830078125,"west":-5.625,"north":42.626953125,"east":-5.5810546875}},"center":{"type":"object","additionalProperties":true,"description":"Midpoint of the cell as lat/lng — the best single-point estimate, not a stored coordinate.","example":{"lat":42.60498046875,"lng":-5.60302734375}},"error":{"type":"object","additionalProperties":true,"description":"Half the cell's height and width in degrees: the maximum error of using center as a point.","example":{"latDegrees":0.02197265625,"lngDegrees":0.02197265625}},"approxCellMetersAtEquator":{"type":"object","additionalProperties":true,"description":"Approximate cell width and height in meters AT THE EQUATOR (111319.5 m per degree of longitude, 110574.3 m per degree of latitude), rounded to 4 decimals. Width shrinks with the cosine of latitude elsewhere.","example":{"width":4891.9698,"height":4859.2211}}},"additionalProperties":false},"GeohashEncodeMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["geohash"]},"params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180},"precision":{"type":"integer","minimum":1,"maximum":12}},"required":["lat","lng","precision"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/encode"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"GeohashEncodeEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/GeohashEncodeRecord"},"meta":{"$ref":"#/components/schemas/GeohashEncodeMeta"}},"required":["data","meta"],"additionalProperties":false},"GeohashDecodeRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"hash":{"type":"string","description":"The geohash this cell belongs to, exactly as validated.","example":"ezs42"},"precision":{"type":"integer","minimum":1,"maximum":12,"description":"Hash length in characters; each character adds 5 bits.","example":5},"cell":{"type":"object","additionalProperties":true,"description":"Exact cell rectangle in decimal degrees: south, west, north, east. Bounds are binary fractions of the ±90/±180 ranges, so they are exact, not rounded.","example":{"south":42.5830078125,"west":-5.625,"north":42.626953125,"east":-5.5810546875}},"center":{"type":"object","additionalProperties":true,"description":"Midpoint of the cell as lat/lng — the best single-point estimate, not a stored coordinate.","example":{"lat":42.60498046875,"lng":-5.60302734375}},"error":{"type":"object","additionalProperties":true,"description":"Half the cell's height and width in degrees: the maximum error of using center as a point.","example":{"latDegrees":0.02197265625,"lngDegrees":0.02197265625}},"approxCellMetersAtEquator":{"type":"object","additionalProperties":true,"description":"Approximate cell width and height in meters AT THE EQUATOR (111319.5 m per degree of longitude, 110574.3 m per degree of latitude), rounded to 4 decimals. Width shrinks with the cosine of latitude elsewhere.","example":{"width":4891.9698,"height":4859.2211}},"parent":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The hash minus its last character — the containing cell one precision coarser. Null at precision 1.","example":"ezs4"}},"additionalProperties":false},"GeohashDecodeMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["geohash"]},"params":{"type":"object","properties":{"hash":{"type":"string","minLength":1,"maxLength":12}},"required":["hash"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/decode"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"GeohashDecodeEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/GeohashDecodeRecord"},"meta":{"$ref":"#/components/schemas/GeohashDecodeMeta"}},"required":["data","meta"],"additionalProperties":false},"GeohashNeighborsRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"hash":{"type":"string","description":"The geohash whose neighbors these are, exactly as validated.","example":"ezs42"},"precision":{"type":"integer","minimum":1,"maximum":12,"description":"Hash length in characters; every neighbor has the same length.","example":5},"n":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cell immediately north; null when the cell's north edge is 90° N.","example":"ezs48"},"ne":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cell to the north-east; null when the north edge is 90° N.","example":"ezs49"},"e":{"type":"string","description":"Cell immediately east, wrapping across the antimeridian. Never null — longitude always wraps.","example":"ezs43"},"se":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cell to the south-east; null when the south edge is 90° S.","example":"ezs41"},"s":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cell immediately south; null when the cell's south edge is 90° S.","example":"ezs40"},"sw":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cell to the south-west; null when the south edge is 90° S.","example":"ezefp"},"w":{"type":"string","description":"Cell immediately west, wrapping across the antimeridian. Never null — longitude always wraps.","example":"ezefr"},"nw":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cell to the north-west; null when the north edge is 90° N.","example":"ezefx"},"wrapsAntimeridian":{"type":"boolean","description":"True when the cell touches ±180°, so its eastern or western neighbors sit on the other side of the antimeridian.","example":false},"unavailable":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One { direction, reason } entry for every null direction; empty when all eight neighbors exist.","example":[]}},"additionalProperties":false},"GeohashNeighborsMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["geohash"]},"params":{"type":"object","properties":{"hash":{"type":"string","minLength":1,"maxLength":12}},"required":["hash"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/neighbors"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"GeohashNeighborsEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/GeohashNeighborsRecord"},"meta":{"$ref":"#/components/schemas/GeohashNeighborsMeta"}},"required":["data","meta"],"additionalProperties":false},"GeojsonValidateRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"valid":{"type":"boolean","description":"No 'error' findings — a conforming RFC 7946 parser must not reject this document.","example":true},"conformant":{"type":"boolean","description":"No finding whose 'conformance' is must, should or descriptive — the document breaks nothing RFC 7946 states. A clockwise exterior ring makes this false while 'valid' stays true.","example":false},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The document's top-level 'type' member when it is one of the nine GeoJSON types; null when absent, wrong-typed or unrecognised.","example":"FeatureCollection"},"errorCount":{"type":"integer","description":"Total 'error' findings, computed before 'minSeverity' and before the 200-finding cap.","example":0},"warningCount":{"type":"integer","description":"Total 'warning' findings, computed before 'minSeverity' and before the 200-finding cap.","example":1},"noteCount":{"type":"integer","description":"Total 'note' findings, computed before 'minSeverity' and before the 200-finding cap.","example":0},"findingCount":{"type":"integer","description":"Findings actually present in 'findings' after the 'minSeverity' filter and the cap.","example":1},"truncated":{"type":"boolean","description":"True when more than 200 findings survived the filter and the list was cut; a meta.warnings entry says how many were produced.","example":false},"findings":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Ordered findings: the error group first, then warnings, then notes, each group in walk order. Every entry has 'severity' (error|warning|note), 'code' (a stable identifier enumerated by /checks), 'rule' (e.g. \"RFC 7946 §3.1.6\", or null when the finding is this endpoint's own diagnosis), 'ruleUrl' (a deep link to that section, or null), 'conformance' (must|should|descriptive|permitted|null), 'message' (one sentence naming the clause), 'path' (an RFC 6901 JSON Pointer to the offending value; \"\" is the document root) and 'value'. 'value' carries the offending value only when it is a finite number, a string of at most 64 characters, or an array of at most four finite numbers — otherwise it is null. Finite numbers are echoed verbatim and never rounded, so 'value' always matches the number the message names. A number that parsed to Infinity or -Infinity (the 1e400 case) is always reported as null, never as the parsed value.","example":[{"severity":"warning","code":"ring-winding-not-right-hand","rule":"RFC 7946 §3.1.6","ruleUrl":"https://www.rfc-editor.org/rfc/rfc7946.html#section-3.1.6","conformance":"must","message":"The exterior ring is clockwise; RFC 7946 §3.1.6 requires the right-hand rule (exterior rings counterclockwise, holes clockwise). The same section tells parsers not to reject Polygons that do not follow it, so this is a warning, not an error — call /api/geojson/rewind to fix it.","path":"/coordinates/0","value":null}]}},"additionalProperties":false},"GeojsonValidateMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["geojson"]},"params":{"type":"object","properties":{"value":{"type":"string","maxLength":4000},"minSeverity":{"type":"string","enum":["note","warning","error"]}},"required":["value","minSeverity"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/validate"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"GeojsonValidateEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/GeojsonValidateRecord"},"meta":{"$ref":"#/components/schemas/GeojsonValidateMeta"}},"required":["data","meta"],"additionalProperties":false},"GeojsonInspectRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"type":{"type":"string","description":"The document's top-level GeoJSON type. Always present, because an unresolvable type is an error and errors are refused.","example":"FeatureCollection"},"objectCounts":{"type":"object","additionalProperties":true,"description":"One key per GeoJSON type — Feature, FeatureCollection, Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection — always all nine present, zeros included. Geometries nested inside GeometryCollections and Features are counted.","example":{"Point":1,"MultiPoint":0,"LineString":0,"MultiLineString":0,"Polygon":1,"MultiPolygon":0,"GeometryCollection":0,"Feature":2,"FeatureCollection":1}},"positionCount":{"type":"integer","description":"Total positions across every geometry, counting each ring's repeated closing position every time it appears.","example":6},"ringCount":{"type":"integer","description":"Linear rings across all Polygons and MultiPolygons, exterior and interior.","example":1},"unlocatedFeatureCount":{"type":"integer","description":"Features whose 'geometry' is null. RFC 7946 §3.2 calls these unlocated; they are legal and render nothing.","example":0},"emptyGeometryCount":{"type":"integer","description":"Geometries with an empty 'coordinates' array. RFC 7946 §3.1 lets processors treat these as null objects, so they can silently vanish.","example":0},"hasAltitude":{"type":"boolean","description":"At least one position carries the optional third element, which RFC 7946 §4 defines as height in metres above or below the WGS 84 reference ellipsoid.","example":false},"mixedDimensions":{"type":"boolean","description":"True when some positions have two elements and others three. Legal, but it makes RFC 7946 §5's 2*n bbox length ambiguous.","example":false},"elevationRange":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"{ minMeters, maxMeters } over the third elements present, rounded to 3 decimals; null when no position has one.","example":null},"bbox":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"Computed bounding box as { array, west, south, east, north }. 'array' is the ready-to-paste RFC 7946 §5 member, always the four-element two-dimensional form [west, south, east, north], rounded to 9 decimals; the named members repeat it so nothing depends on positional order. The 2-D form is emitted even for 3-D documents, because §5's 2*n rule is ambiguous for a document that mixes 2- and 3-element positions; the height extent is reported separately as 'elevationRange'. It is the extent of the positions themselves and nothing more: when a ring encircles a pole the box does not cover the polar cap that ring bounds, because §5.3's spherical-cap form ([-180, minlat, 180, 90]) is an inference about intent rather than a measurement — a meta.warnings entry says so, and the ring's 'winding' and 'areaSquareMeters' are refused for the same reason. null when the document contains no position.","example":{"array":[100,0,102,1],"west":100,"south":0,"east":102,"north":1}},"bboxCrossesAntimeridian":{"type":"boolean","description":"True when the chosen longitude interval wraps ±180, in which case west is greater than east exactly as RFC 7946 §5.2 requires. A meta.warnings entry says so in words.","example":false},"bboxAlternative":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"The rejected candidate longitude interval, in the same shape as 'bbox'. Of the two intervals covering every position — the plain min→max interval and the one that wraps the antimeridian — this endpoint emits the narrower and hands you the other, because for a sparse global point set the narrower interval can be the wrong intent. On an exact tie (longitudes -179 and 1, say, where both intervals span 180 degrees) the plain box wins and the wrapped one is still disclosed here, because equally narrow is not the same as identical. null only when there is a single candidate — when the widest gap between consecutive longitudes is the gap across ±180 itself, so the minimal covering interval already is the plain one.","example":null},"bboxCenter":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"{ longitude, latitude } — the centre of the emitted box, longitude normalised to [-180, 180). Not a centre of mass, not an area centroid, not the mean of the positions. null when 'bbox' is null.","example":{"longitude":101,"latitude":0.5}},"declaredBbox":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"The document's own root-level 'bbox' member as { array, dimensions, west, south, east, north }. 'array' is the member verbatim — unrounded, and either 4 or 6 elements — and 'dimensions' is §5's n, so a 3-D box keeps its height axes; the named edges are read from the §5 positions (indices 0, 1 and 3, 4 for the 6-element form). null when the member is absent, or when it is unusable: not an array, not length 4 or 6, or carrying an element that parsed to a non-finite number. Nested 'bbox' members on Features and Geometries are legal under §5 and are shape-checked by /validate, but are not read here.","example":null},"declaredBboxContainsGeometry":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether the declared root bbox contains every position. Antimeridian-aware: when its west exceeds its east the longitude interval is [west, 180] plus [-180, east], per RFC 7946 §5.2. Elevation-aware: RFC 7946 §5 says a bbox's edges follow lines of constant longitude, latitude and elevation, so a six-element box's height axes (indices 2 and 5, read as the interval they span) are also compared against every position that carries a third element — a four-element box declares no height extent, and a two-element position carries none, so neither is compared. null when there is no usable declared bbox.","example":null},"lengthMeters":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Great-circle length of every LineString and MultiLineString, summed, with no connecting segment between the parts of a MultiLineString. Rounded to 3 decimals; null when the document has none.","example":null},"perimeterMeters":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Great-circle length of every linear ring, exterior and interior, summed. Rounded to 3 decimals; null when the document has no ring.","example":444763.385},"areaSquareMeters":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Spherical area of every Polygon (exterior minus its holes), summed, rounded to 2 decimals. null when there is no polygon, or when some polygon's area cannot be computed — because its holes enclose at least as much area as its exterior, or because one of its rings encircles a pole. A wrong number would be worse than none.","example":12363718145.18},"rings":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Up to 100 entries in document order, each with 'path' (an RFC 6901 pointer to the ring array), 'role' (exterior|interior), 'positionCount', 'closed', 'winding' (counterclockwise|clockwise|indeterminate), 'followsRightHandRule' (boolean, or null when the winding is indeterminate) and 'areaSquareMeters' (a non-negative float, or null when indeterminate). Beyond 100 rings a meta.warnings entry says how many were omitted.","example":[{"path":"/features/1/geometry/coordinates/0","role":"exterior","positionCount":5,"closed":true,"winding":"counterclockwise","followsRightHandRule":true,"areaSquareMeters":12363718145.18}]},"foreignMemberPaths":{"type":"array","items":{"type":"string"},"description":"Up to 50 RFC 6901 pointers to members RFC 7946 §6.1 does not define. Descendants of a foreign member are not listed separately, and values inside a Feature's 'properties' are not foreign members at all. A structural member on a type §7.1 does not forbid it on — 'coordinates' on a GeometryCollection, 'geometries' on any other Geometry — is listed here rather than invented as an error, because §3.1.8 says a GeometryCollection simply has no 'coordinates' member; the ones §7.1 does forbid are reported by /validate as errors instead.","example":[]},"crsMemberPresent":{"type":"boolean","description":"True when a 'crs' member is present on any GeoJSON object in the document. RFC 7946 §4's note records that alternative coordinate reference systems were removed from this version, so 'crs' is now a foreign member that some consumers may still act on; this endpoint never honours it.","example":false},"model":{"type":"string","description":"Always \"mean-earth-sphere\" — the same surface /api/geodesy documents. Not an ellipsoid, not survey precision.","example":"mean-earth-sphere"},"radiusMeters":{"type":"number","description":"The IUGG mean Earth radius used for every area and length, in metres.","example":6371008.8}},"additionalProperties":false},"GeojsonInspectMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["geojson"]},"params":{"type":"object","properties":{"value":{"type":"string","maxLength":4000}},"required":["value"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/inspect"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"GeojsonInspectEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/GeojsonInspectRecord"},"meta":{"$ref":"#/components/schemas/GeojsonInspectMeta"}},"required":["data","meta"],"additionalProperties":false},"GeojsonRewindRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"convention":{"type":"string","description":"The applied convention, right-hand or left-hand, echoed so a stored response is self-describing.","example":"right-hand"},"changed":{"type":"boolean","description":"True when at least one ring was reversed.","example":true},"ringCount":{"type":"integer","description":"Linear rings examined.","example":1},"rewoundRingCount":{"type":"integer","description":"Rings whose position order was reversed.","example":1},"indeterminateRingCount":{"type":"integer","description":"Rings left untouched because their winding could not be determined — pole-encircling or zero-area.","example":0},"rewoundRings":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Up to 100 entries in document order, only the rings that changed: 'path' (an RFC 6901 pointer), 'role' (exterior|interior), 'windingBefore' and 'windingAfter'.","example":[{"path":"/coordinates/0","role":"exterior","windingBefore":"clockwise","windingAfter":"counterclockwise"}]},"document":{"type":"object","additionalProperties":true,"description":"The document with its rings rewound. Member order within every object, every foreign member, every 'properties' value, every 'id' and any declared 'bbox' are preserved — reversing a ring does not move a position, so the bbox is still correct. Because the document is parsed and re-serialised, numeric literals are normalised by the JSON round trip (1.0 becomes 1, 1e2 becomes 100) and the original whitespace is not preserved.","example":{"type":"Polygon","coordinates":[[[100,0],[101,0],[101,1],[100,1],[100,0]]]}}},"additionalProperties":false},"GeojsonRewindMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["geojson"]},"params":{"type":"object","properties":{"value":{"type":"string","maxLength":4000},"winding":{"type":"string","enum":["right-hand","left-hand"]}},"required":["value","winding"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/rewind"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"GeojsonRewindEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/GeojsonRewindRecord"},"meta":{"$ref":"#/components/schemas/GeojsonRewindMeta"}},"required":["data","meta"],"additionalProperties":false},"GeojsonChecksRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"code":{"type":"string","description":"Stable kebab-case identifier, the same string /validate puts in 'findings[].code'.","example":"ring-winding-not-right-hand"},"severity":{"type":"string","description":"What this endpoint does about it: error (sets valid=false), warning or note.","example":"warning"},"conformance":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"What RFC 7946 itself says: must, should, descriptive (an invariant stated without a keyword) or permitted. null when the check is this endpoint's own diagnosis or an interoperability observation rather than an assertion about a clause.","example":"must"},"rule":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The clause cited, e.g. \"RFC 7946 §3.1.6\"; null when the check cites none.","example":"RFC 7946 §3.1.6"},"ruleUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Deep link to that section on rfc-editor.org; null when 'rule' is null.","example":"https://www.rfc-editor.org/rfc/rfc7946.html#section-3.1.6"},"description":{"type":"string","description":"One sentence saying what triggers the check.","example":"A linear ring's direction is not the right-hand rule for its role. A warning rather than an error because the same section tells parsers not to reject such Polygons."}},"additionalProperties":false},"GeojsonChecksMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["geojson"]},"params":{"type":"object","properties":{"severity":{"type":"string","enum":["error","warning","note"]},"conformance":{"type":"string","enum":["must","should","descriptive","permitted","none"]},"search":{"type":"string","minLength":2,"maxLength":60}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/checks"]},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","route","count"],"additionalProperties":false},"GeojsonChecksEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/GeojsonChecksRecord"}},"meta":{"$ref":"#/components/schemas/GeojsonChecksMeta"}},"required":["data","meta"],"additionalProperties":false},"GitCommitsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"message":{"type":"string","description":"Commit message in the requested style — conventional: `<type>(<scope>): <subject>`; plain: a capitalized imperative sentence.","example":"feat(api): add bulk export for audit logs"},"hash":{"type":"string","minLength":40,"maxLength":40,"pattern":"^[0-9A-Fa-f]{40}$","description":"Fake commit SHA-1: exactly 40 lowercase hex characters (random — not a real object hash).","example":"0f9a3c2e6d1b4a8c9f2e3d1c4a8b9f2e3d1c4a8b"},"shortHash":{"type":"string","minLength":7,"maxLength":7,"pattern":"^[0-9A-Fa-f]{7}$","description":"First 7 characters of `hash` — what `git log --oneline` shows.","example":"0f9a3c2"},"author":{"type":"object","additionalProperties":true,"description":"Nested author: `name` and `email`. The email derives from the name and always uses an RFC 2606 reserved domain (example.com/.net/.org) — it can never deliver mail.","example":{"name":"Emily Carter","email":"emily.carter@example.com"}},"date":{"type":"string","format":"date-time","description":"Author date in UTC, uniformly random within [`from`, `to`] — second precision, like real git timestamps.","example":"2026-03-14T09:26:53Z"},"filesChanged":{"type":"integer","description":"Number of files touched, 1–20.","example":3},"insertions":{"type":"integer","description":"Lines added, 0–500.","example":124},"deletions":{"type":"integer","description":"Lines removed, 0–300 (0 insertions/0 deletions = renames or mode changes).","example":38}},"additionalProperties":false},"GitCommitsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["git-commits"]},"params":{"type":"object","properties":{"style":{"type":"string","enum":["conventional","plain"]},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["style"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"GitCommitsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/GitCommitsRootRecord"}},"meta":{"$ref":"#/components/schemas/GitCommitsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"GlobMatchTestRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"matched":{"type":"boolean","description":"Whether the pattern matches the path under the resolved dialect.","example":true},"syntax":{"type":"string","description":"The dialect that was applied: posix, glob or extglob.","example":"glob"},"pattern":{"type":"string","description":"The pattern exactly as supplied — never trimmed, never rewritten.","example":"src/**/*.ts"},"path":{"type":"string","description":"The path that was actually matched, after the documented normalization: a leading './' dropped, repeated '/' collapsed and a trailing '/' removed. Each of those changes also emits a warning. Dot segments are never resolved.","example":"src/lib/util.ts"},"matchedPattern":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The brace expansion that matched, first in Bash expansion order. Equal to `pattern` when it contains no braces; null when nothing matched.","example":"src/**/*.ts"},"expandedPatterns":{"type":"array","items":{"type":"string"},"description":"Every brace expansion in Bash left-to-right order — a single entry when the pattern has no braces, or when the dialect has no brace expansion at all.","example":["src/**/*.ts"]},"pathSegments":{"type":"array","items":{"type":"string"},"description":"The path split on '/'. An absolute path yields a leading empty segment, which only a pattern with a leading '/' can match.","example":["src","lib","util.ts"]},"alignment":{"anyOf":[{"type":"array","items":{"type":"object","additionalProperties":true}},{"type":"null"}],"description":"The witness, non-null only when `matched`: one entry per pattern segment as `{ patternSegment, kind: literal|wildcard|globstar, consumed }`. Every non-globstar entry consumes exactly one path segment, and joining every `consumed` with '/' reproduces `path`. Where several alignments exist, the one that gives each globstar the fewest segments (leftmost globstar first) is returned.","example":[{"patternSegment":"src","kind":"literal","consumed":["src"]},{"patternSegment":"**","kind":"globstar","consumed":["lib"]},{"patternSegment":"*.ts","kind":"wildcard","consumed":["util.ts"]}]},"failure":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"Non-null only when nothing matched: `{ patternSegmentIndex, patternSegment, pathSegmentsMatched, reason }` — the first pattern segment no prefix of the path can reach, and a one-sentence reason. With braces, it describes `expandedPatterns[0]`.","example":{"patternSegmentIndex":0,"patternSegment":"*.ts","pathSegmentsMatched":0,"reason":"The pattern segment '*.ts' does not match the path segment 'src', and it can never reach across a '/'."}},"steps":{"type":"integer","description":"Dynamic-program cell updates this match cost, against the documented budget of 400,000 per request. Published so an adversarial pattern is measurable rather than mysterious.","example":12}},"additionalProperties":false},"GlobMatchTestMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["glob-match"]},"params":{"type":"object","properties":{"pattern":{"type":"string","minLength":1,"maxLength":512},"path":{"type":"string","minLength":1,"maxLength":1024},"syntax":{"type":"string","enum":["posix","glob","extglob"]},"dot":{"type":"boolean"},"caseSensitive":{"type":"boolean"}},"required":["pattern","path","syntax","dot","caseSensitive"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/test"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"GlobMatchTestEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/GlobMatchTestRecord"},"meta":{"$ref":"#/components/schemas/GlobMatchTestMeta"}},"required":["data","meta"],"additionalProperties":false},"GlobMatchFilterRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"path":{"type":"string","description":"The path as matched, after the same normalization /test applies.","example":"src/a.ts"},"matched":{"type":"boolean","description":"Whether the pattern matches this path.","example":true},"matchedPattern":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The brace expansion that matched this path, or null when none did.","example":"src/**/*.ts"},"failedAtSegment":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Index of the first pattern segment no prefix of this path can reach; null when the path matched. Call /test on the path for the full reason and witness.","example":null}},"additionalProperties":false},"GlobMatchFilterMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["glob-match"]},"params":{"type":"object","properties":{"pattern":{"type":"string","minLength":1,"maxLength":512},"paths":{"type":"array","items":{"type":"string"},"minItems":1},"syntax":{"type":"string","enum":["posix","glob","extglob"]},"dot":{"type":"boolean"},"caseSensitive":{"type":"boolean"},"matching":{"type":"string","enum":["all","matched","unmatched"]}},"required":["pattern","paths","syntax","dot","caseSensitive","matching"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/filter"]},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","route","count"],"additionalProperties":false},"GlobMatchFilterEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/GlobMatchFilterRecord"}},"meta":{"$ref":"#/components/schemas/GlobMatchFilterMeta"}},"required":["data","meta"],"additionalProperties":false},"GlobMatchGitignoreRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"ignored":{"type":"boolean","description":"Whether git would ignore the path: true when the path's own LAST matching rule excludes it, or when any ancestor directory is excluded (git never descends into an excluded directory).","example":true},"path":{"type":"string","description":"The normalized repository-relative path that was evaluated.","example":"build/keep.txt"},"isDirectory":{"type":"boolean","description":"The resolved flag. A trailing '/' on `path` sets it to true when you did not pass it explicitly, and `meta.params` echoes the resolved value.","example":false},"reason":{"type":"string","description":"Why: `rule` (the path's own last matching rule decided it — that rule may be a negation, in which case `ignored` is false), `parent-directory` (an ancestor is excluded, so git never looks inside), or `no-match` (no rule matches the path or any ancestor).","example":"parent-directory"},"matchedRule":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"The rule that decided the verdict: `{ lineNumber, pattern, effectivePattern, negated, anchored, directoryOnly, matchedAgainst, appliedTo }`. `pattern` is the line as written (git's unescaped-trailing-space rule applied); `effectivePattern` is what was actually matched, with the '!', the leading '/' and the trailing '/' removed; `appliedTo` is the path or the ancestor directory the rule matched. Null when nothing matched.","example":{"lineNumber":1,"pattern":"build/","effectivePattern":"build","negated":false,"anchored":false,"directoryOnly":true,"matchedAgainst":"basename","appliedTo":"build"}},"competingRules":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Every rule that matches THE PATH ITSELF, in file order, in the same shape minus `appliedTo`. gitignore is last-match-wins, so the LAST entry is the path's own decision — the opposite of the robots.txt endpoint, where the first entry wins.","example":[{"lineNumber":1,"pattern":"build/","effectivePattern":"build","negated":false,"anchored":false,"directoryOnly":true,"matchedAgainst":"basename"},{"lineNumber":2,"pattern":"!build/keep.txt","effectivePattern":"build/keep.txt","negated":true,"anchored":true,"directoryOnly":false,"matchedAgainst":"path"}]},"excludedByParent":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"`{ directory, rule }` naming the shallowest excluded ancestor — the reason a '!' rule can sit in `competingRules` and still lose, which is the single most common .gitignore surprise. Null when no ancestor is excluded.","example":{"directory":"build","rule":{"lineNumber":1,"pattern":"build/","effectivePattern":"build","negated":false,"anchored":false,"directoryOnly":true,"matchedAgainst":"basename"}}},"ancestorDecisions":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One entry per ancestor directory, root first: `{ directory, ignored, rule }`, where `ignored` is that directory's own last-match verdict evaluated on its own and `rule` is nullable. The shallowest `ignored: true` is the one that decides.","example":[{"directory":"build","ignored":true,"rule":{"lineNumber":1,"pattern":"build/","effectivePattern":"build","negated":false,"anchored":false,"directoryOnly":true,"matchedAgainst":"basename"}}]},"ruleCount":{"type":"integer","description":"Usable pattern lines parsed — blank lines, '#' comments and lines that carry no pattern are excluded.","example":2},"steps":{"type":"integer","description":"Dynamic-program cell updates the whole evaluation cost (every rule against the path and against each ancestor), against the documented budget of 400,000 per request.","example":24}},"additionalProperties":false},"GlobMatchGitignoreMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["glob-match"]},"params":{"type":"object","properties":{"rules":{"type":"string","maxLength":8000},"path":{"type":"string","minLength":1,"maxLength":1024},"isDirectory":{"type":"boolean"},"caseSensitive":{"type":"boolean"}},"required":["rules","path","isDirectory","caseSensitive"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/gitignore"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"GlobMatchGitignoreEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/GlobMatchGitignoreRecord"},"meta":{"$ref":"#/components/schemas/GlobMatchGitignoreMeta"}},"required":["data","meta"],"additionalProperties":false},"GlobMatchExplainRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"syntax":{"type":"string","description":"The dialect the explanation is written for: posix, glob, extglob or gitignore.","example":"gitignore"},"pattern":{"type":"string","description":"The pattern exactly as supplied.","example":"!/build/**"},"explainedPattern":{"type":"string","description":"The pattern `segments` actually describes, which is `pattern` itself unless one of two documented things applies. Under `glob`/`extglob` with a correctly-formed brace group it is the FIRST of the `expandedCount` expansions — the one `/test` tries first — because braces are expanded BEFORE matching, so tokens of the raw text would describe a pattern that is never matched. Under `syntax=gitignore` it is the rule body, identical to `gitignore.effectivePattern`: the leading '!' and the anchoring or directory-only '/' are reported in the `gitignore` object instead of being tokenized. A warning names the reason whenever this differs from `pattern`; `/expand` lists every expansion.","example":"build/**"},"segments":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One entry per '/'-separated segment of `explainedPattern`: `{ index, text, kind: literal|wildcard|globstar, tokens }`, where each token is `{ text, kind: literal|escape|any|star|bracket|class|extglob, meaning }`. Every `meaning` is a statement about the dialect named in `syntax`, so it is true of the pattern this endpoint would actually match.","example":[{"index":0,"text":"build","kind":"literal","tokens":[{"text":"build","kind":"literal","meaning":"Matches the literal text 'build'."}]}]},"features":{"type":"array","items":{"type":"string"},"description":"Which constructs the dialect actually interprets in this pattern, from a closed vocabulary: globstar, braces, sequence, bracket-expression, character-class, escape, extglob, negation, anchor, directory-only. Collected across every brace expansion, so a bracket that only appears in the second expansion is still listed.","example":["globstar","negation","anchor","directory-only"]},"gitignore":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"Non-null only for `syntax=gitignore`: `{ negated, anchored, directoryOnly, matchedAgainst, effectivePattern }` — how git would file this single line.","example":{"negated":true,"anchored":true,"directoryOnly":false,"matchedAgainst":"path","effectivePattern":"build/**"}},"unsupported":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Every construct present in the text that this dialect does NOT interpret, as `{ text, note }`. This is the honesty engine: it is how you find out that `**` is not a globstar under posix and that `{a,b}` is literal in a .gitignore.","example":[{"text":"{","note":"git has no brace expansion, so '{' and '}' are literal characters in a .gitignore rule."}]},"expandedCount":{"type":"integer","description":"How many patterns brace expansion produces — 1 when there are no braces or the dialect has none. Above 1, `explainedPattern` is the first of them.","example":1}},"additionalProperties":false},"GlobMatchExplainMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["glob-match"]},"params":{"type":"object","properties":{"pattern":{"type":"string","minLength":1,"maxLength":512},"syntax":{"type":"string","enum":["posix","glob","extglob","gitignore"]}},"required":["pattern","syntax"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/explain"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"GlobMatchExplainEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/GlobMatchExplainRecord"},"meta":{"$ref":"#/components/schemas/GlobMatchExplainMeta"}},"required":["data","meta"],"additionalProperties":false},"GlobMatchExpandRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"pattern":{"type":"string","description":"The pattern exactly as supplied.","example":"src/{a,b}/*.{ts,tsx}"},"patterns":{"type":"array","items":{"type":"string"},"description":"The expansions in Bash left-to-right order — never sorted, never deduplicated, so `a{,}b` legitimately yields 'ab' twice. Backslashes are kept: brace expansion does not do quote removal.","example":["src/a/*.ts","src/a/*.tsx","src/b/*.ts","src/b/*.tsx"]},"expandedCount":{"type":"integer","description":"Length of `patterns`, i.e. the product of every group that expanded.","example":4},"braceGroups":{"type":"integer","description":"How many brace groups actually expanded.","example":2},"literalGroups":{"type":"array","items":{"type":"string"},"description":"Brace groups left exactly as written because they are not correctly formed — no unquoted comma and no valid sequence expression, e.g. `{a}`. Bash leaves these alone, and so do we.","example":[]}},"additionalProperties":false},"GlobMatchExpandMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["glob-match"]},"params":{"type":"object","properties":{"pattern":{"type":"string","minLength":1,"maxLength":512}},"required":["pattern"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/expand"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"GlobMatchExpandEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/GlobMatchExpandRecord"},"meta":{"$ref":"#/components/schemas/GlobMatchExpandMeta"}},"required":["data","meta"],"additionalProperties":false},"HolidaysRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"date":{"type":"string","format":"date","description":"The holiday's actual date.","example":"2026-12-25"},"name":{"type":"string","description":"English name.","example":"Christmas Day"},"localName":{"type":"string","description":"Name in the country's main language.","example":"Juledag"},"type":{"type":"string","description":"public | bank | observance.","example":"public"},"weekday":{"type":"string","description":"Weekday of the actual date.","example":"Friday"},"observed":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Substitute/observed date when the holiday is shifted off a weekend, else null.","example":null}},"additionalProperties":false},"HolidaysRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["holidays"]},"params":{"type":"object","properties":{"country":{"type":"string"},"year":{"type":"integer","minimum":1583,"maximum":3000},"type":{"type":"string","enum":["public","bank","observance","any"]}},"required":["country","type"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","count"],"additionalProperties":false},"HolidaysRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/HolidaysRootRecord"}},"meta":{"$ref":"#/components/schemas/HolidaysRootMeta"}},"required":["data","meta"],"additionalProperties":false},"HolidaysCheckRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 code.","example":"DK"},"countryName":{"type":"string","description":"English country name.","example":"Denmark"},"date":{"type":"string","format":"date","description":"The date that was checked.","example":"2026-12-25"},"weekday":{"type":"string","description":"Weekday of that date.","example":"Friday"},"isPublicHoliday":{"type":"boolean","description":"True when the date is a statutory public holiday (or its observed substitute).","example":true},"isWeekend":{"type":"boolean","description":"True when the date is one of the country's weekly rest days (Saturday/Sunday in every country currently supported).","example":false},"coverage":{"type":"string","description":"'complete' when every nationwide holiday is computed, 'partial' when some are deliberately excluded (see meta.warnings).","example":"complete"},"holiday":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"The matching holiday (any type), incl. its type and observed date — null when none.","example":{"date":"2026-12-25","name":"Christmas Day","localName":"Juledag","type":"public","weekday":"Friday","observed":null}}},"additionalProperties":false},"HolidaysCheckMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["holidays"]},"params":{"type":"object","properties":{"country":{"type":"string"},"date":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["country"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/check"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"HolidaysCheckEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/HolidaysCheckRecord"},"meta":{"$ref":"#/components/schemas/HolidaysCheckMeta"}},"required":["data","meta"],"additionalProperties":false},"HolidaysNextRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"date":{"type":"string","format":"date","description":"The holiday's date.","example":"2026-12-25"},"name":{"type":"string","description":"English name.","example":"Christmas Day"},"localName":{"type":"string","description":"Local name.","example":"Juledag"},"type":{"type":"string","description":"public | bank | observance.","example":"public"},"weekday":{"type":"string","description":"Weekday of the date.","example":"Friday"},"observed":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Observed date when shifted, else null.","example":null},"daysUntil":{"type":"integer","description":"Whole days from the start date.","example":197}},"additionalProperties":false},"HolidaysNextMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["holidays"]},"params":{"type":"object","properties":{"country":{"type":"string"},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"type":{"type":"string","enum":["public","bank","observance","any"]}},"required":["country","type"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/next"]},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","route","count"],"additionalProperties":false},"HolidaysNextEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/HolidaysNextRecord"}},"meta":{"$ref":"#/components/schemas/HolidaysNextMeta"}},"required":["data","meta"],"additionalProperties":false},"HolidaysCountriesRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 code.","example":"JP"},"countryName":{"type":"string","description":"English country name.","example":"Japan"},"timezone":{"type":"string","description":"IANA timezone used to resolve 'today' for this country.","example":"Asia/Tokyo"},"coverage":{"type":"string","description":"'complete' or 'partial'.","example":"complete"},"coverageNote":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"For partial calendars: exactly which holidays are excluded and why. Null when nothing is excluded.","example":null},"scope":{"type":"string","description":"What level of holiday the ruleset covers (federal, nationwide, bank holidays…).","example":"The national holidays (国民の祝日) of the Act on National Holidays…"},"weekend":{"type":"array","items":{"type":"string"},"description":"The country's weekly rest days.","example":["Saturday","Sunday"]},"holidayRules":{"type":"integer","description":"Number of rules in the ruleset (more than the holidays in any one year, because superseded and future rules are kept).","example":29},"verifiedFrom":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"First year the ruleset is verified for; null when no extra bound beyond the endpoint's range.","example":1988},"verifiedTo":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Last year the ruleset is verified for; null when unbounded.","example":2099},"rulesVerified":{"type":"string","format":"date","description":"Date the whole rule set was last re-checked against its cited sources.","example":"2026-07-29"},"sources":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Official statute/ministry page(s) the rules were verified against.","example":[{"label":"Cabinet Office of Japan — 国民の祝日について","url":"https://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html"}]}},"additionalProperties":false},"HolidaysCountriesMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["holidays"]},"params":{"type":"object","properties":{"coverage":{"type":"string","enum":["any","complete","partial"]}},"required":["coverage"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/countries"]},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","route","count"],"additionalProperties":false},"HolidaysCountriesEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/HolidaysCountriesRecord"}},"meta":{"$ref":"#/components/schemas/HolidaysCountriesMeta"}},"required":["data","meta"],"additionalProperties":false},"HttpCachingFreshnessRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"now":{"type":"string","format":"date-time","description":"Evaluation instant; the server's current time when the 'now' parameter is omitted.","example":"2026-01-15T10:05:00.000Z"},"requestTime":{"type":"string","format":"date-time","description":"Resolved RFC 9111 §4.2.3 request_time — when the request that produced the stored response was sent.","example":"2026-01-15T10:00:00.000Z"},"responseTime":{"type":"string","format":"date-time","description":"Resolved RFC 9111 §4.2.3 response_time — when the response was received by the cache.","example":"2026-01-15T10:00:00.000Z"},"shared":{"type":"boolean","description":"Whether a shared (proxy/CDN) cache was modeled rather than a private browser cache.","example":true},"heuristicallyCacheable":{"type":"boolean","description":"Whether RFC 9110 §15.1 defines this status code as heuristically cacheable.","example":true},"storable":{"type":"boolean","description":"Whether every RFC 9111 §3 storage condition this calculator models is satisfied.","example":true},"storabilityReasons":{"type":"array","items":{"type":"string"},"description":"One sentence per RFC 9111 §3 condition that forbids storing the response; empty when storable.","example":[]},"freshnessLifetimeSeconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"RFC 9111 §4.2.1 freshness_lifetime in seconds; null when no explicit rule matched and no heuristic applies. Capped at 2147483648 whichever rule produced it (§1.2.2), with a warning. Can be negative when Expires precedes Date.","example":600},"freshnessSource":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Which rule produced the lifetime: s-maxage, max-age, expires or heuristic; null when none did.","example":"s-maxage"},"apparentAge":{"type":"integer","description":"max(0, responseTime − Date) in whole seconds (RFC 9111 §4.2.3).","example":0},"responseDelay":{"type":"integer","description":"responseTime − requestTime in whole seconds (RFC 9111 §4.2.3).","example":0},"correctedAgeValue":{"type":"integer","description":"Age header value plus responseDelay (RFC 9111 §4.2.3).","example":120},"correctedInitialAge":{"type":"integer","description":"max(apparentAge, correctedAgeValue) — the conservative form from RFC 9111 §4.2.3.","example":120},"residentTime":{"type":"integer","description":"now − responseTime in whole seconds; negative when the evaluation instant precedes the response.","example":300},"currentAge":{"type":"integer","description":"correctedInitialAge + residentTime — the value a cache would put in the Age header.","example":420},"fresh":{"type":"boolean","description":"RFC 9111 §4.2: freshnessLifetime > currentAge. False whenever no freshness lifetime exists. Computed independently of storable — check that first.","example":true},"staleSeconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"How far currentAge has passed the freshness lifetime (0 while fresh); null when no lifetime exists.","example":0},"mustRevalidate":{"type":"boolean","description":"Whether RFC 9111 §4.2.4 forbids serving this response once stale — set by an unqualified no-cache, must-revalidate, or proxy-revalidate/s-maxage in a shared cache. Not merely an echo of the must-revalidate directive. A qualified no-cache=\"field-name\" does not set it (§5.2.2.4).","example":true},"requiresRevalidation":{"type":"boolean","description":"True when the response cannot be reused from cache without contacting the origin: it is not storable at all, an unqualified no-cache is present, or it is not fresh.","example":false},"staleWhileRevalidateWindow":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"The stale-while-revalidate window in seconds (RFC 5861 §3): null when the directive is absent, 0 when it is present with an unusable argument.","example":30},"withinStaleWhileRevalidate":{"type":"boolean","description":"True when the response is stale, staleSeconds is at or inside the window, and no directive forbids stale reuse.","example":false},"staleIfErrorWindow":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"The stale-if-error window in seconds (RFC 5861 §4): null when the directive is absent, 0 when it is present with an unusable argument.","example":1200},"withinStaleIfError":{"type":"boolean","description":"True when an origin error right now could still be answered from this stale stored response.","example":false}},"additionalProperties":false},"HttpCachingFreshnessMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["http-caching"]},"params":{"type":"object","properties":{"cacheControl":{"type":"string","maxLength":2048},"date":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"expires":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"age":{"type":"integer","minimum":0,"maximum":2147483648},"lastModified":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"requestTime":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"responseTime":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"now":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"shared":{"type":"boolean"},"heuristicFactor":{"type":"number","minimum":0,"maximum":1},"authorization":{"type":"boolean"},"status":{"type":"integer","minimum":100,"maximum":599}},"required":["shared","heuristicFactor","authorization","status"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/freshness"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"HttpCachingFreshnessEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/HttpCachingFreshnessRecord"},"meta":{"$ref":"#/components/schemas/HttpCachingFreshnessMeta"}},"required":["data","meta"],"additionalProperties":false},"HttpCachingParseRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"cacheControl":{"type":"string","description":"The Cache-Control field value exactly as supplied.","example":"public, max-age=60"},"direction":{"type":"string","description":"Which directive set was applied: request or response.","example":"response"},"count":{"type":"integer","description":"Number of cache-directive members parsed, including repeated names.","example":2},"directives":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Every member in field order with its lowercased name, unquoted argument, parsed delta-seconds, quoting, duplicate/recognized/applicable flags, argument problem and defining section.","example":[{"name":"public","value":null,"seconds":null,"quoted":false,"duplicate":false,"recognized":true,"applicable":true,"problem":null,"reference":"RFC 9111 Section 5.2.2.9"},{"name":"max-age","value":"60","seconds":60,"quoted":false,"duplicate":false,"recognized":true,"applicable":true,"problem":null,"reference":"RFC 9111 Section 5.2.2.1"}]},"duplicates":{"type":"array","items":{"type":"string"},"description":"Directive names that appear more than once; RFC 9111 §4.2.1 uses the first occurrence.","example":[]},"unrecognized":{"type":"array","items":{"type":"string"},"description":"Directive names not defined by RFC 9111 or RFC 5861, which a cache must ignore (§5.2.3).","example":["immutable"]},"notApplicable":{"type":"array","items":{"type":"string"},"description":"Recognized directives that have no meaning in this direction, such as max-stale in a response.","example":[]},"invalid":{"type":"array","items":{"type":"string"},"description":"Directives whose argument violates the syntax RFC 9111 or RFC 5861 defines for them.","example":[]},"canonical":{"type":"string","description":"Re-serialization of the honored directives with lowercased names and repeats, unrecognized and wrong-direction members removed. Always a field value a sender may legally generate: an argument RFC 9111 §5.2 does not define for the directive is dropped, a malformed field-name list falls back to the unqualified form, and a delta-seconds directive with a missing or unusable argument is left out entirely (it stays listed in invalid, and /freshness still counts it as present and worth 0 seconds).","example":"public, max-age=60"}},"additionalProperties":false},"HttpCachingParseMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["http-caching"]},"params":{"type":"object","properties":{"cacheControl":{"type":"string","minLength":1,"maxLength":2048},"direction":{"type":"string","enum":["request","response"]}},"required":["cacheControl","direction"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/parse"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"HttpCachingParseEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/HttpCachingParseRecord"},"meta":{"$ref":"#/components/schemas/HttpCachingParseMeta"}},"required":["data","meta"],"additionalProperties":false},"HttpFieldsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"name":{"type":"string","description":"HTTP field name exactly as registered by IANA.","example":"Accept"},"status":{"type":"string","description":"IANA registration status, preserving the source CSV's spelling.","example":"permanent"},"structuredType":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"RFC 9651 Structured Field type (Dictionary, List, Item or Token), or null when unregistered.","example":"List"},"reference":{"type":"string","description":"Specification reference copied from the pinned IANA registry row.","example":"[RFC 9110, Section 12.5.1: HTTP Semantics]"},"comments":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IANA registry comment, or null when the row has no comment.","example":"(reserved)"}},"additionalProperties":false},"HttpFieldsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["http-fields"]},"params":{"type":"object","properties":{"status":{"type":"string","enum":["any","permanent","provisional","deprecated","obsoleted"]},"structuredType":{"type":"string","enum":["any","dictionary","list","item","token","none"]},"search":{"type":"string","minLength":1,"maxLength":128}},"required":["status","structuredType"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","count"],"additionalProperties":false},"HttpFieldsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/HttpFieldsRootRecord"}},"meta":{"$ref":"#/components/schemas/HttpFieldsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"HttpFieldsLookupRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"name":{"type":"string","description":"HTTP field name exactly as registered by IANA.","example":"Accept"},"status":{"type":"string","description":"IANA registration status, preserving the source CSV's spelling.","example":"permanent"},"structuredType":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"RFC 9651 Structured Field type (Dictionary, List, Item or Token), or null when unregistered.","example":"List"},"reference":{"type":"string","description":"Specification reference copied from the pinned IANA registry row.","example":"[RFC 9110, Section 12.5.1: HTTP Semantics]"},"comments":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IANA registry comment, or null when the row has no comment.","example":"(reserved)"}},"additionalProperties":false},"HttpFieldsLookupMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["http-fields"]},"params":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":128}},"required":["name"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/lookup"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"HttpFieldsLookupEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/HttpFieldsLookupRecord"},"meta":{"$ref":"#/components/schemas/HttpFieldsLookupMeta"}},"required":["data","meta"],"additionalProperties":false},"HttpMethodsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"method":{"type":"string","description":"Registered HTTP method token, in its canonical IANA spelling.","example":"GET"},"safe":{"type":"boolean","description":"IANA Safe flag: the method is defined as read-only in its intended semantics.","example":true},"idempotent":{"type":"boolean","description":"IANA Idempotent flag: repeating the intended request has the same effect as one request.","example":true},"reference":{"type":"string","description":"The defining reference exactly as cited by the IANA registry.","example":"[RFC9110, Section 9.3.1]"}},"additionalProperties":false},"HttpMethodsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["http-methods"]},"params":{"type":"object","properties":{"safe":{"type":"boolean"},"idempotent":{"type":"boolean"},"search":{"type":"string","maxLength":32}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","count"],"additionalProperties":false},"HttpMethodsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/HttpMethodsRootRecord"}},"meta":{"$ref":"#/components/schemas/HttpMethodsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"HttpMethodsLookupRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"method":{"type":"string","description":"Registered HTTP method token, in its canonical IANA spelling.","example":"GET"},"safe":{"type":"boolean","description":"IANA Safe flag: the method is defined as read-only in its intended semantics.","example":true},"idempotent":{"type":"boolean","description":"IANA Idempotent flag: repeating the intended request has the same effect as one request.","example":true},"reference":{"type":"string","description":"The defining reference exactly as cited by the IANA registry.","example":"[RFC9110, Section 9.3.1]"}},"additionalProperties":false},"HttpMethodsLookupMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["http-methods"]},"params":{"type":"object","properties":{"method":{"type":"string","minLength":1,"maxLength":32}},"required":["method"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/lookup"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"HttpMethodsLookupEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/HttpMethodsLookupRecord"},"meta":{"$ref":"#/components/schemas/HttpMethodsLookupMeta"}},"required":["data","meta"],"additionalProperties":false},"HttpPreconditionsEvaluateRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"method":{"type":"string","description":"Canonical request method used for status selection.","example":"PUT"},"exists":{"type":"boolean","description":"Whether the modeled selected representation exists.","example":true},"currentEtag":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Current entity-tag or null when unavailable.","example":"\"revision-7\""},"lastModified":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical Last-Modified value or null.","example":"Sun, 06 Nov 1994 08:49:37 GMT"},"decision":{"type":"string","description":"proceed, notModified or preconditionFailed.","example":"proceed"},"status":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"304/412 when a precondition determines a response; otherwise null.","example":null},"controllingCondition":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Condition that determined 304/412, or null when processing proceeds.","example":null},"evaluations":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Ordered condition results with true, false, ignored or skipped explanations.","example":[{"condition":"If-Match","result":"true","detail":"The current representation strongly matches the condition."}]}},"additionalProperties":false},"HttpPreconditionsEvaluateMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["http-preconditions"]},"params":{"type":"object","properties":{"method":{"type":"string","enum":["ACL","BASELINE-CONTROL","BIND","CHECKIN","CHECKOUT","CONNECT","COPY","DELETE","GET","HEAD","LABEL","LINK","LOCK","MERGE","MKACTIVITY","MKCALENDAR","MKCOL","MKREDIRECTREF","MKWORKSPACE","MOVE","OPTIONS","ORDERPATCH","PATCH","POST","PRI","PROPFIND","PROPPATCH","PUT","QUERY","REBIND","REPORT","SEARCH","TRACE","UNBIND","UNCHECKOUT","UNLINK","UNLOCK","UPDATE","UPDATEREDIRECTREF","VERSION-CONTROL"]},"exists":{"type":"boolean"},"etag":{"type":"string","maxLength":512},"lastModified":{"type":"string","maxLength":64},"ifMatch":{"type":"string","maxLength":2048},"ifNoneMatch":{"type":"string","maxLength":2048},"ifModifiedSince":{"type":"string","maxLength":64},"ifUnmodifiedSince":{"type":"string","maxLength":64}},"required":["method","exists"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/evaluate"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"HttpPreconditionsEvaluateEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/HttpPreconditionsEvaluateRecord"},"meta":{"$ref":"#/components/schemas/HttpPreconditionsEvaluateMeta"}},"required":["data","meta"],"additionalProperties":false},"HttpRangesParseRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"range":{"type":"string","description":"Canonicalized bytes Range value, preserving item order.","example":"bytes=0-499,-200"},"unit":{"type":"string","description":"Range unit; always bytes.","example":"bytes"},"size":{"type":"integer","description":"Representation length used to resolve the request.","example":1234},"requestedCount":{"type":"integer","description":"Number of requested range specifications.","example":2},"satisfiableCount":{"type":"integer","description":"Number of specifications satisfiable under RFC 9110.","example":2},"satisfiable":{"type":"boolean","description":"True when at least one requested specification is satisfiable.","example":true},"ranges":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Requested items with kind, satisfiability, resolved inclusive positions, length and per-part Content-Range.","example":[{"requested":"0-499","kind":"closed","satisfiable":true,"start":0,"end":499,"length":500,"contentRange":"bytes 0-499/1234"}]},"contentRanges":{"type":"array","items":{"type":"string"},"description":"Concrete Content-Range values for resolved non-empty parts, in request order.","example":["bytes 0-499/1234","bytes 1034-1233/1234"]},"unsatisfiedContentRange":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"bytes */size when the entire set is unsatisfiable, otherwise null.","example":null}},"additionalProperties":false},"HttpRangesParseMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["http-ranges"]},"params":{"type":"object","properties":{"range":{"type":"string","minLength":8,"maxLength":1024},"size":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["range","size"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/parse"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"HttpRangesParseEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/HttpRangesParseRecord"},"meta":{"$ref":"#/components/schemas/HttpRangesParseMeta"}},"required":["data","meta"],"additionalProperties":false},"HttpRangesContentRangeRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"value":{"type":"string","description":"Validated canonical Content-Range field value.","example":"bytes 0-499/1234"},"unit":{"type":"string","description":"Range unit; this endpoint supports bytes only.","example":"bytes"},"satisfied":{"type":"boolean","description":"True for an inclusive range response; false for the */size form used with 416.","example":true},"start":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Inclusive first byte, or null for an unsatisfied range.","example":0},"end":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Inclusive last byte, or null for an unsatisfied range.","example":499},"length":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Number of bytes in a satisfied inclusive range, or null.","example":500},"size":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Complete representation length, or null when represented by *.","example":1234},"completeLengthKnown":{"type":"boolean","description":"Whether Content-Range carries a numeric complete length.","example":true}},"additionalProperties":false},"HttpRangesContentRangeMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["http-ranges"]},"params":{"type":"object","properties":{"value":{"type":"string","minLength":9,"maxLength":512}},"required":["value"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/content-range"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"HttpRangesContentRangeEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/HttpRangesContentRangeRecord"},"meta":{"$ref":"#/components/schemas/HttpRangesContentRangeMeta"}},"required":["data","meta"],"additionalProperties":false},"HttpStatusesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"code":{"type":"integer","description":"The status code.","example":429},"reason":{"type":"string","description":"Reason phrase exactly as registered with IANA. Sole exception: 418 keeps the widely-implemented RFC 2324 phrase \"I'm a teapot\", which IANA lists as \"(Unused)\".","example":"Too Many Requests"},"category":{"type":"string","description":"informational | success | redirect | clientError | serverError.","example":"clientError"},"description":{"type":"string","description":"What the code means and when to use it.","example":"The client exceeded a rate limit; Retry-After indicates how long to back off."},"rfc":{"type":"string","description":"Defining specification, as referenced by the registry — an RFC number for every permanent registration, or the Internet-Draft name for IANA's single temporary one (104).","example":"RFC 6585"},"retryable":{"type":"boolean","description":"Whether retrying the identical request can plausibly succeed.","example":true}},"additionalProperties":false},"HttpStatusesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["http-statuses"]},"params":{"type":"object","properties":{"category":{"type":"string","enum":["informational","success","redirect","clientError","serverError","any"]},"retryable":{"type":"boolean"}},"required":["category"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","count"],"additionalProperties":false},"HttpStatusesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/HttpStatusesRootRecord"}},"meta":{"$ref":"#/components/schemas/HttpStatusesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"HttpStatusesLookupRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"code":{"type":"integer","description":"The status code.","example":429},"reason":{"type":"string","description":"Reason phrase exactly as registered with IANA. Sole exception: 418 keeps the widely-implemented RFC 2324 phrase \"I'm a teapot\", which IANA lists as \"(Unused)\".","example":"Too Many Requests"},"category":{"type":"string","description":"informational | success | redirect | clientError | serverError.","example":"clientError"},"description":{"type":"string","description":"What the code means and when to use it.","example":"The client exceeded a rate limit; Retry-After indicates how long to back off."},"rfc":{"type":"string","description":"Defining specification, as referenced by the registry — an RFC number for every permanent registration, or the Internet-Draft name for IANA's single temporary one (104).","example":"RFC 6585"},"retryable":{"type":"boolean","description":"Whether retrying the identical request can plausibly succeed.","example":true}},"additionalProperties":false},"HttpStatusesLookupMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["http-statuses"]},"params":{"type":"object","properties":{"code":{"type":"integer","minimum":100,"maximum":599}},"required":["code"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/lookup"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"HttpStatusesLookupEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/HttpStatusesLookupRecord"},"meta":{"$ref":"#/components/schemas/HttpStatusesLookupMeta"}},"required":["data","meta"],"additionalProperties":false},"IbansRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"iban":{"type":"string","description":"Compact synthetic value: country code + international MOD-97 check digits + random BBAN, without spaces.","example":"DE89370400440532013000"},"formatted":{"type":"string","description":"The same IBAN in paper format — groups of four characters separated by spaces.","example":"DE89 3704 0044 0532 0130 00"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code of the IBAN.","example":"DE"},"checkDigits":{"type":"string","description":"The two ISO 7064 MOD-97-10 check digits (a string, preserving a leading zero; always 02–98).","example":"89"},"bban":{"type":"string","description":"Random domestic portion matching the endpoint's broad per-country character classes; national subfields, allocation and checksums are not validated.","example":"370400440532013000"}},"additionalProperties":false},"IbansRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["ibans"]},"params":{"type":"object","properties":{"country":{"type":"string","minLength":2,"maxLength":2}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"IbansRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/IbansRootRecord"}},"meta":{"$ref":"#/components/schemas/IbansRootMeta"}},"required":["data","meta"],"additionalProperties":false},"IbansValidateRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"input":{"type":"string","description":"Original input exactly as supplied.","example":"de89 3704 0044 0532 0130 00"},"canonical":{"type":"string","description":"Uppercase input with ASCII spaces removed, even when invalid.","example":"DE89370400440532013000"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Uppercase two-letter prefix when syntactically present; otherwise null.","example":"DE"},"supportedCountry":{"type":"boolean","description":"Whether country is one of the 20 documented generator specifications.","example":true},"expectedLength":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Registry length for a supported country; otherwise null.","example":22},"actualLength":{"type":"integer","description":"Canonical character count after removing ASCII spaces.","example":22},"lengthValid":{"type":"boolean","description":"Whether actualLength equals the supported country's expected length.","example":true},"bban":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical characters after the four-character IBAN header, or null when too short.","example":"370400440532013000"},"bbanPattern":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Broad, collapsed BBAN character-class shape for a supported country; otherwise null.","example":"18n"},"bbanValid":{"type":"boolean","description":"Whether BBAN length and broad character classes match; national subfields and checksums are out of scope.","example":true},"mod97Valid":{"type":"boolean","description":"Whether syntactically eligible canonical input has ISO 7064 MOD-97 remainder 1.","example":true},"valid":{"type":"boolean","description":"True only for this endpoint's limited supported-country, total-length, broad-BBAN and international MOD-97 checks; not account or national validity.","example":true},"reasons":{"type":"array","items":{"type":"string"},"description":"Stable ordered reason codes; empty exactly when valid is true.","example":[]}},"additionalProperties":false},"IbansValidateMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["ibans"]},"params":{"type":"object","properties":{"value":{"type":"string","minLength":1,"maxLength":64}},"required":["value"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/validate"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"IbansValidateEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/IbansValidateRecord"},"meta":{"$ref":"#/components/schemas/IbansValidateMeta"}},"required":["data","meta"],"additionalProperties":false},"IncidentsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Distinct fictional incident ID.","example":"inc_72d9ae192c00_00"},"title":{"type":"string","description":"Synthetic impact/component summary.","example":"Major disruption affecting Public API"},"status":{"type":"string","description":"investigating | identified | monitoring | resolved.","example":"monitoring"},"impact":{"type":"string","description":"minor | major | critical.","example":"major"},"createdAt":{"type":"string","format":"date-time","description":"Incident start inside from/to.","example":"2026-04-12T09:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Exactly the final update timestamp.","example":"2026-04-12T10:20:00.000Z"},"identifiedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Present from identified onward.","example":"2026-04-12T09:20:00.000Z"},"monitoringAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Present from monitoring onward.","example":"2026-04-12T10:20:00.000Z"},"resolvedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Present only when resolved.","example":null},"durationMinutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Exact createdAt→resolvedAt minutes, else null.","example":null},"url":{"type":"string","format":"uri","description":"Fictional status.example.com incident URL.","example":"https://status.example.com/incidents/inc_demo"},"affectedComponents":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One to four distinct components with status derived from impact/lifecycle.","example":[{"id":"api","name":"Public API","status":"partialOutage"}]},"updates":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One to four chronological updates ending at top-level status.","example":[{"id":"upd_demo_1","status":"investigating","message":"Investigating fictional errors affecting Public API.","createdAt":"2026-04-12T09:00:00.000Z"}]}},"additionalProperties":false},"IncidentsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["incidents"]},"params":{"type":"object","properties":{"status":{"type":"string","enum":["investigating","identified","monitoring","resolved"]},"impact":{"type":"string","enum":["minor","major","critical"]},"component":{"type":"string","enum":["api","dashboard","webhooks","uploads","billing","authentication"]},"componentCount":{"type":"integer","minimum":1,"maximum":4},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["componentCount"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"IncidentsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/IncidentsRootRecord"}},"meta":{"$ref":"#/components/schemas/IncidentsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"InternetRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"ipv4":{"type":"string","format":"ipv4","description":"Valid dotted-quad IPv4. First octet is 1–223 and never 10 (private class A) or 127 (loopback); multicast/reserved first octets (224–255) never occur.","example":"84.231.17.92"},"ipv6":{"type":"string","format":"ipv6","description":"Fully-expanded IPv6: 8 groups of exactly 4 lowercase hex digits, no '::' compression.","example":"2b3c:09f1:7a2e:441d:8c05:e7b9:1f63:a04d"},"mac":{"type":"string","description":"Lowercase colon-separated MAC with the locally-administered bit set and the multicast bit clear (second hex digit always 2, 6, a or e) — never collides with a vendor-assigned (OUI) address.","example":"8e:2f:6a:b1:09:d4"},"domain":{"type":"string","format":"hostname","description":"Two hyphenated English words under a reserved TLD (.test or .example, RFC 2606/6761) — non-resolvable by design.","example":"fuzzy-socket.test"},"url":{"type":"string","format":"uri","description":"HTTPS URL built from this record's own domain and slug: https://<domain>/<slug>.","example":"https://fuzzy-socket.test/quarterly-revenue-report"},"slug":{"type":"string","description":"Kebab-case slug of 2–4 English words (lowercase a–z/0–9 and single hyphens only).","example":"quarterly-revenue-report"},"port":{"type":"integer","description":"Port in 1024–65535 — the registered/ephemeral range, never a privileged port below 1024.","example":8443},"tld":{"type":"string","description":"A common real top-level domain: com, net, org, io, dev, app or co. Independent of 'domain', which always uses .test/.example.","example":"io"}},"additionalProperties":false},"InternetRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["internet"]},"params":{"type":"object","properties":{},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"InternetRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/InternetRootRecord"}},"meta":{"$ref":"#/components/schemas/InternetRootMeta"}},"required":["data","meta"],"additionalProperties":false},"InventoryRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Distinct fictional inventory-record ID.","example":"invstk_8b1d4900_00"},"sku":{"type":"string","description":"Synthetic SKU.","example":"SKU-ABCD2345"},"product":{"type":"object","additionalProperties":true,"description":"Synthetic product id, name and category.","example":{"id":"prd_demo","name":"Demo USB Hub","category":"electronics"}},"warehouse":{"type":"object","additionalProperties":true,"description":"Selected fictional warehouse id and name.","example":{"id":"central","name":"Central Example Warehouse"}},"stockStatus":{"type":"string","description":"inStock | lowStock | outOfStock | backorder.","example":"lowStock"},"onHand":{"type":"integer","description":"Exact sum of location onHand.","example":34},"reserved":{"type":"integer","description":"Exact sum of location reserved.","example":12},"available":{"type":"integer","description":"onHand - reserved and exact sum of location available.","example":22},"backordered":{"type":"integer","description":"Positive only for backorder status.","example":0},"reorderPoint":{"type":"integer","description":"Threshold used by stockStatus and needsReorder.","example":25},"needsReorder":{"type":"boolean","description":"False only when availability exceeds reorderPoint.","example":true},"incomingQuantity":{"type":"integer","description":"Exact sum of incoming quantities.","example":80},"nextRestockAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Earliest incoming arrival, else null.","example":"2026-06-18T23:59:59.999Z"},"locations":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One to four reconciled storage bins.","example":[{"id":"central-A01","onHand":20,"reserved":5,"available":15}]},"incoming":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Zero to two synthetic purchase-order arrivals.","example":[{"purchaseOrderId":"po_demo","quantity":80,"expectedAt":"2026-06-18T23:59:59.999Z"}]},"asOf":{"type":"string","format":"date-time","description":"Resolved snapshot instant.","example":"2026-06-15T23:59:59.999Z"}},"additionalProperties":false},"InventoryRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["inventory"]},"params":{"type":"object","properties":{"category":{"type":"string","enum":["electronics","apparel","home","books","grocery"]},"warehouse":{"type":"string","enum":["north","east","central","west"]},"stockStatus":{"type":"string","enum":["inStock","lowStock","outOfStock","backorder"]},"minAvailable":{"type":"integer","minimum":0,"maximum":100},"locationCount":{"type":"integer","minimum":1,"maximum":4},"includeIncoming":{"type":"boolean"},"asOf":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["minAvailable","locationCount","includeIncoming"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"InventoryRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/InventoryRootRecord"}},"meta":{"$ref":"#/components/schemas/InventoryRootMeta"}},"required":["data","meta"],"additionalProperties":false},"InvoicesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Distinct synthetic invoice ID.","example":"inv_93c0a5de8f340002"},"invoiceNumber":{"type":"string","description":"Human-readable synthetic invoice number.","example":"INV-2025-X8FQ-001"},"status":{"type":"string","description":"draft | sent | paid | overdue | void.","example":"paid"},"currency":{"type":"string","description":"Canonical active ISO 4217 code.","example":"USD"},"seller":{"type":"object","additionalProperties":true,"description":"Synthetic seller with id, name, email and address.","example":{"id":"org_123","name":"Northwind Labs","email":"billing@example.com","address":"42 Market Street"}},"buyer":{"type":"object","additionalProperties":true,"description":"Synthetic buyer with id, name and reserved-domain email.","example":{"id":"cus_123","name":"Avery Chen","email":"avery.chen@example.net"}},"lineItems":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"1–10 lines with description, quantity, unitPrice and exact lineTotal.","example":[{"description":"Design services","quantity":2,"unitPrice":120,"lineTotal":240}]},"issueDate":{"type":"string","format":"date","description":"Invoice issue date inside from..to.","example":"2025-04-01"},"dueDate":{"type":"string","format":"date","description":"Due date after issueDate; overdue dates are before resolved to.","example":"2025-05-01"},"paidAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Payment date for paid invoices, else null.","example":null},"subtotal":{"type":"number","description":"Exact sum of line totals.","example":240},"tax":{"type":"number","description":"Subtotal multiplied by the resolved tax rate, rounded once in minor units.","example":48},"total":{"type":"number","description":"Exactly subtotal + tax.","example":288},"amountPaid":{"type":"number","description":"Paid portion, determined by invoice status.","example":0},"balanceDue":{"type":"number","description":"Collectible outstanding balance; zero for paid and void invoices.","example":288}},"additionalProperties":false},"InvoicesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["invoices"]},"params":{"type":"object","properties":{"status":{"type":"string","enum":["draft","sent","paid","overdue","void"]},"currency":{"type":"string"},"minItems":{"type":"integer","minimum":1,"maximum":10},"maxItems":{"type":"integer","minimum":1,"maximum":10},"taxRate":{"type":"number","minimum":0,"maximum":30},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["currency","minItems","maxItems","taxRate"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"InvoicesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/InvoicesRootRecord"}},"meta":{"$ref":"#/components/schemas/InvoicesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"IpSpecialRangesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"family":{"type":"integer","enum":[4,6],"description":"Address family: 4 for IPv4 or 6 for IPv6.","example":4},"cidr":{"type":"string","description":"Special-purpose address block registered by IANA.","example":"192.0.2.0/24"},"name":{"type":"string","description":"IANA designation for the block.","example":"Documentation (TEST-NET-1)"},"reference":{"type":"string","description":"RFC or other reference cited by the IANA registry.","example":"[RFC5737]"},"allocationDate":{"type":"string","description":"Allocation month as published by IANA.","example":"2010-01"},"terminationDate":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Termination month for historical entries, or null when none is published.","example":null},"source":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"IANA Source attribute; null represents a blank or N/A registry cell.","example":false},"destination":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"IANA Destination attribute; null represents a blank or N/A registry cell.","example":false},"forwardable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"IANA Forwardable attribute; null represents a blank or N/A registry cell.","example":false},"globallyReachable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"IANA Globally Reachable attribute; null represents a blank or N/A registry cell.","example":false},"reservedByProtocol":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"IANA Reserved-by-Protocol attribute; null represents a blank or N/A registry cell.","example":false}},"additionalProperties":false},"IpSpecialRangesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["ip-special-ranges"]},"params":{"type":"object","properties":{"family":{"type":"string","enum":["any","ipv4","ipv6"]},"globallyReachable":{"type":"boolean"},"forwardable":{"type":"boolean"},"search":{"type":"string","minLength":1,"maxLength":80}},"required":["family"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","count"],"additionalProperties":false},"IpSpecialRangesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/IpSpecialRangesRootRecord"}},"meta":{"$ref":"#/components/schemas/IpSpecialRangesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"IpSpecialRangesClassifyRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"ip":{"type":"string","description":"Canonical address that was classified.","example":"192.0.0.9"},"family":{"type":"integer","enum":[4,6],"description":"Detected IP address family.","example":4},"isSpecialPurpose":{"type":"boolean","description":"Whether at least one IANA special-purpose block contains the address.","example":true},"mostSpecific":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"Longest-prefix matching IANA row, or null when none matches.","example":{"cidr":"192.0.0.9/32","name":"Port Control Protocol Anycast"}},"matches":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"All containing IANA rows in longest-prefix order.","example":[{"cidr":"192.0.0.9/32"},{"cidr":"192.0.0.0/24"}]},"registryVersion":{"type":"string","description":"Pinned IANA registry snapshot used for classification.","example":"2025-10-09"}},"additionalProperties":false},"IpSpecialRangesClassifyMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["ip-special-ranges"]},"params":{"type":"object","properties":{"ip":{"type":"string","minLength":2,"maxLength":45}},"required":["ip"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/classify"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"IpSpecialRangesClassifyEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/IpSpecialRangesClassifyRecord"},"meta":{"$ref":"#/components/schemas/IpSpecialRangesClassifyMeta"}},"required":["data","meta"],"additionalProperties":false},"Ipv4CidrParseRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"cidr":{"type":"string","description":"Canonical network address and prefix.","example":"192.0.2.0/24"},"inputIp":{"type":"string","format":"ipv4","description":"Canonical address portion supplied in cidr before network alignment.","example":"192.0.2.10"},"network":{"type":"string","format":"ipv4","description":"First address of the block.","example":"192.0.2.0"},"broadcast":{"type":"string","format":"ipv4","description":"Last address of the block.","example":"192.0.2.255"},"prefix":{"type":"integer","description":"CIDR prefix length from 0 through 32.","example":24},"netmask":{"type":"string","format":"ipv4","description":"Dotted-decimal subnet mask.","example":"255.255.255.0"},"wildcardMask":{"type":"string","format":"ipv4","description":"Inverse of the subnet mask.","example":"0.0.0.255"},"firstHost":{"type":"string","format":"ipv4","description":"First usable address under the documented /31 and /32 rules.","example":"192.0.2.1"},"lastHost":{"type":"string","format":"ipv4","description":"Last usable address under the documented /31 and /32 rules.","example":"192.0.2.254"},"totalAddresses":{"type":"integer","description":"Total number of addresses, including network and broadcast where applicable.","example":256},"usableHosts":{"type":"integer","description":"Usable host count: total minus two normally, two for /31, one for /32.","example":254}},"additionalProperties":false},"Ipv4CidrParseMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["ipv4-cidr"]},"params":{"type":"object","properties":{"cidr":{"type":"string","minLength":9,"maxLength":18}},"required":["cidr"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/parse"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"Ipv4CidrParseEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Ipv4CidrParseRecord"},"meta":{"$ref":"#/components/schemas/Ipv4CidrParseMeta"}},"required":["data","meta"],"additionalProperties":false},"Ipv4CidrContainsRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"cidr":{"type":"string","description":"Canonical network address and prefix.","example":"192.0.2.0/24"},"ip":{"type":"string","format":"ipv4","description":"Canonical dotted-decimal address that was tested.","example":"192.0.2.42"},"contains":{"type":"boolean","description":"Whether ip lies inside the inclusive network-to-broadcast range.","example":true},"network":{"type":"string","format":"ipv4","description":"First address of the CIDR block.","example":"192.0.2.0"},"broadcast":{"type":"string","format":"ipv4","description":"Last address of the CIDR block.","example":"192.0.2.255"}},"additionalProperties":false},"Ipv4CidrContainsMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["ipv4-cidr"]},"params":{"type":"object","properties":{"cidr":{"type":"string","minLength":9,"maxLength":18},"ip":{"type":"string","minLength":7,"maxLength":15}},"required":["cidr","ip"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/contains"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"Ipv4CidrContainsEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Ipv4CidrContainsRecord"},"meta":{"$ref":"#/components/schemas/Ipv4CidrContainsMeta"}},"required":["data","meta"],"additionalProperties":false},"Ipv4CidrSubnetsRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"cidr":{"type":"string","description":"Canonical parent network and prefix.","example":"192.0.2.0/24"},"newPrefix":{"type":"integer","description":"Requested aligned child prefix.","example":26},"subnetCount":{"type":"integer","description":"Exact number of children: 2^(newPrefix - parent prefix).","example":4},"addressesPerSubnet":{"type":"integer","description":"Exact address count in every child block.","example":64},"subnets":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Complete ordered child list with canonical CIDR and inclusive boundaries; never truncated.","example":[{"cidr":"192.0.2.0/26","network":"192.0.2.0","broadcast":"192.0.2.63"}]}},"additionalProperties":false},"Ipv4CidrSubnetsMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["ipv4-cidr"]},"params":{"type":"object","properties":{"cidr":{"type":"string","minLength":9,"maxLength":18},"newPrefix":{"type":"integer","minimum":0,"maximum":32}},"required":["cidr","newPrefix"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/subnets"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"Ipv4CidrSubnetsEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Ipv4CidrSubnetsRecord"},"meta":{"$ref":"#/components/schemas/Ipv4CidrSubnetsMeta"}},"required":["data","meta"],"additionalProperties":false},"Ipv4CidrOverlapsRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"a":{"type":"string","description":"Canonical first CIDR block.","example":"192.0.2.0/24"},"b":{"type":"string","description":"Canonical second CIDR block.","example":"192.0.2.128/25"},"overlap":{"type":"boolean","description":"Whether the inclusive address ranges intersect.","example":true},"relation":{"type":"string","description":"equal, aContainsB, bContainsA or disjoint.","example":"aContainsB"},"intersectionCidr":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Exact intersecting CIDR (the more specific block), or null when disjoint.","example":"192.0.2.128/25"},"intersectionNetwork":{"anyOf":[{"type":"string","format":"ipv4"},{"type":"null"}],"description":"First intersection address, or null when disjoint.","example":"192.0.2.128"},"intersectionBroadcast":{"anyOf":[{"type":"string","format":"ipv4"},{"type":"null"}],"description":"Last intersection address, or null when disjoint.","example":"192.0.2.255"},"intersectionAddressCount":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Exact intersection size, or null when disjoint.","example":128}},"additionalProperties":false},"Ipv4CidrOverlapsMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["ipv4-cidr"]},"params":{"type":"object","properties":{"a":{"type":"string","minLength":9,"maxLength":18},"b":{"type":"string","minLength":9,"maxLength":18}},"required":["a","b"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/overlaps"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"Ipv4CidrOverlapsEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Ipv4CidrOverlapsRecord"},"meta":{"$ref":"#/components/schemas/Ipv4CidrOverlapsMeta"}},"required":["data","meta"],"additionalProperties":false},"Ipv6CidrParseRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"cidr":{"type":"string","description":"RFC 5952 canonical network and prefix.","example":"2001:db8:abcd::/48"},"inputIp":{"type":"string","format":"ipv6","description":"Canonical address supplied before network alignment.","example":"2001:db8:abcd::42"},"network":{"type":"string","format":"ipv6","description":"First address in the block.","example":"2001:db8:abcd::"},"lastAddress":{"type":"string","format":"ipv6","description":"Last address in the inclusive block.","example":"2001:db8:abcd:ffff:ffff:ffff:ffff:ffff"},"prefix":{"type":"integer","description":"CIDR prefix length from 0 through 128.","example":48},"hostBits":{"type":"integer","description":"Number of address bits after the prefix.","example":80},"totalAddresses":{"type":"string","description":"Exact block size represented as a decimal string.","example":"1208925819614629174706176"},"expandedNetwork":{"type":"string","format":"ipv6","description":"Network as eight lowercase four-digit hexadecimal groups.","example":"2001:0db8:abcd:0000:0000:0000:0000:0000"}},"additionalProperties":false},"Ipv6CidrParseMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["ipv6-cidr"]},"params":{"type":"object","properties":{"cidr":{"type":"string","minLength":4,"maxLength":49}},"required":["cidr"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/parse"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"Ipv6CidrParseEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Ipv6CidrParseRecord"},"meta":{"$ref":"#/components/schemas/Ipv6CidrParseMeta"}},"required":["data","meta"],"additionalProperties":false},"Ipv6CidrContainsRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"cidr":{"type":"string","description":"RFC 5952 canonical network and prefix.","example":"2001:db8:abcd::/48"},"ip":{"type":"string","format":"ipv6","description":"Canonical address that was tested.","example":"2001:db8:abcd::beef"},"contains":{"type":"boolean","description":"Whether ip lies inside the inclusive first-to-last address range.","example":true},"network":{"type":"string","format":"ipv6","description":"First address in the CIDR block.","example":"2001:db8:abcd::"},"lastAddress":{"type":"string","format":"ipv6","description":"Last address in the CIDR block.","example":"2001:db8:abcd:ffff:ffff:ffff:ffff:ffff"}},"additionalProperties":false},"Ipv6CidrContainsMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["ipv6-cidr"]},"params":{"type":"object","properties":{"cidr":{"type":"string","minLength":4,"maxLength":49},"ip":{"type":"string","minLength":2,"maxLength":45}},"required":["cidr","ip"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/contains"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"Ipv6CidrContainsEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Ipv6CidrContainsRecord"},"meta":{"$ref":"#/components/schemas/Ipv6CidrContainsMeta"}},"required":["data","meta"],"additionalProperties":false},"Ipv6CidrSubnetsRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"cidr":{"type":"string","description":"Canonical parent network and prefix.","example":"2001:db8:abcd::/48"},"newPrefix":{"type":"integer","description":"Requested aligned child prefix.","example":52},"subnetCount":{"type":"integer","description":"Exact number of children: 2^(newPrefix - parent prefix), capped at 256.","example":16},"addressesPerSubnet":{"type":"string","description":"Exact address count in every child block.","example":"75557863725914323419136"},"subnets":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Complete ordered child list with canonical CIDR and inclusive boundaries; never truncated.","example":[{"cidr":"2001:db8:abcd::/52","network":"2001:db8:abcd::","lastAddress":"2001:db8:abcd:fff:ffff:ffff:ffff:ffff"}]}},"additionalProperties":false},"Ipv6CidrSubnetsMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["ipv6-cidr"]},"params":{"type":"object","properties":{"cidr":{"type":"string","minLength":4,"maxLength":49},"newPrefix":{"type":"integer","minimum":0,"maximum":128}},"required":["cidr","newPrefix"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/subnets"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"Ipv6CidrSubnetsEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Ipv6CidrSubnetsRecord"},"meta":{"$ref":"#/components/schemas/Ipv6CidrSubnetsMeta"}},"required":["data","meta"],"additionalProperties":false},"Ipv6CidrOverlapsRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"a":{"type":"string","description":"Canonical first CIDR block.","example":"2001:db8::/48"},"b":{"type":"string","description":"Canonical second CIDR block.","example":"2001:db8:0:1::/64"},"overlap":{"type":"boolean","description":"Whether the inclusive address ranges intersect.","example":true},"relation":{"type":"string","description":"equal, aContainsB, bContainsA or disjoint.","example":"aContainsB"},"intersectionCidr":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Exact intersecting CIDR (the more specific block), or null when disjoint.","example":"2001:db8:0:1::/64"},"intersectionNetwork":{"anyOf":[{"type":"string","format":"ipv6"},{"type":"null"}],"description":"First intersection address, or null when disjoint.","example":"2001:db8:0:1::"},"intersectionLastAddress":{"anyOf":[{"type":"string","format":"ipv6"},{"type":"null"}],"description":"Last intersection address, or null when disjoint.","example":"2001:db8:0:1:ffff:ffff:ffff:ffff"},"intersectionAddressCount":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Exact intersection size as a decimal string, or null when disjoint.","example":"18446744073709551616"}},"additionalProperties":false},"Ipv6CidrOverlapsMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["ipv6-cidr"]},"params":{"type":"object","properties":{"a":{"type":"string","minLength":4,"maxLength":49},"b":{"type":"string","minLength":4,"maxLength":49}},"required":["a","b"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/overlaps"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"Ipv6CidrOverlapsEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Ipv6CidrOverlapsRecord"},"meta":{"$ref":"#/components/schemas/Ipv6CidrOverlapsMeta"}},"required":["data","meta"],"additionalProperties":false},"JobsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"title":{"type":"string","description":"Role title: a base role from the department's pool with the level's prefix (Junior/Senior/Lead/Principal — mid-level has none).","example":"Senior Backend Engineer"},"level":{"type":"string","description":"junior | mid | senior | lead | principal — always consistent with the title prefix and salary band.","example":"senior"},"department":{"type":"string","description":"The department the role belongs to (one of 10).","example":"engineering"},"employmentType":{"type":"string","description":"full-time | part-time | contract | internship.","example":"full-time"},"remote":{"type":"boolean","description":"Whether the posting is remote.","example":true},"salaryMin":{"type":"integer","description":"Lower end of the advertised range — annual USD, a round thousand inside the level's band (internships: $20,000–$45,000).","example":128000},"salaryMax":{"type":"integer","description":"Upper end of the advertised range — same band, always at least $5,000 above salaryMin.","example":152000},"currency":{"type":"string","description":"Always \"USD\".","example":"USD"}},"additionalProperties":false},"JobsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["jobs"]},"params":{"type":"object","properties":{"level":{"type":"string","enum":["junior","mid","senior","lead","principal"]},"department":{"type":"string","enum":["engineering","design","product","marketing","sales","finance","hr","operations","support","legal"]},"employmentType":{"type":"string","enum":["full-time","part-time","contract","internship"]},"remote":{"type":"boolean"}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"JobsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/JobsRootRecord"}},"meta":{"$ref":"#/components/schemas/JobsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"JwtDecodeRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"header":{"type":"object","additionalProperties":true,"description":"The JOSE header exactly as sent, including alg, typ, kid, cty and crit when present.","example":{"typ":"JWT","alg":"HS256"}},"payload":{"type":"object","additionalProperties":true,"description":"The JWT claims set exactly as sent. Duplicate member names collapse to the last occurrence.","example":{"iss":"joe","exp":1300819380,"http://example.com/is_root":true}},"signaturePresent":{"type":"boolean","description":"Whether the third segment is non-empty. False for an unsecured JWS (alg=none). Says nothing about validity.","example":true},"signatureLength":{"type":"integer","description":"Length of the third segment in base64url characters. The signature is never decoded, and a length that cannot encode whole octets (4n+1) is a 400 just as it is for the other two segments. It is not withheld, though: meta.params echoes the token you sent, signature included.","example":43},"segmentCount":{"type":"integer","description":"Dot-separated segments in the token; always 3, since any other count is a 400.","example":3},"algorithm":{"type":"object","additionalProperties":true,"description":"The alg header value with its IANA JOSE registry entry: name, family (this API's grouping of JWS signature algorithms — null for key-management, content-encryption and unregistered values), description, usage, requirements and whether it is registered at all.","example":{"name":"HS256","family":"HMAC","description":"HMAC using SHA-256","usage":"alg","requirements":"Required","registered":true}},"registeredClaims":{"type":"object","additionalProperties":true,"description":"All seven RFC 7519 §4.1 claims, always present as keys. Each carries present, value, JSON type and — for exp/nbf/iat — the NumericDate rendered as an ISO 8601 instant.","example":{"iss":{"present":true,"value":"joe","type":"string","instant":null},"exp":{"present":true,"value":1300819380,"type":"number","instant":"2011-03-22T18:43:00.000Z"}}},"unregisteredClaims":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Every claim outside RFC 7519 §4.1, by name and JSON type only — values are already in payload and are not repeated here.","example":[{"name":"http://example.com/is_root","type":"boolean"}]},"claimRegistryMatches":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"The subset of unregisteredClaims that appears in the pinned IANA JSON Web Token Claims registry, with the registry's own description and reference.","example":[{"name":"scope","description":"Scope Values","reference":"RFC8693, Section 4.2"}]}},"additionalProperties":false},"JwtDecodeMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["jwt"]},"params":{"type":"object","properties":{"token":{"type":"string","maxLength":8000}},"required":["token"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/decode"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"JwtDecodeEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/JwtDecodeRecord"},"meta":{"$ref":"#/components/schemas/JwtDecodeMeta"}},"required":["data","meta"],"additionalProperties":false},"JwtClaimsRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"at":{"type":"string","format":"date-time","description":"The instant every comparison below was made against, resolved from `at` or the request clock.","example":"2026-07-25T12:00:00.000Z"},"expired":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"True when the instant is at or after exp, after applying clock skew. Null when exp is absent, is not a JSON number, or lies outside the ±8,640,000,000,000-second instant range this API can represent — never guessed.","example":true},"notYetValid":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"True when the instant is before nbf, after applying clock skew. Null when nbf is absent, is not a JSON number, or lies outside the ±8,640,000,000,000-second instant range this API can represent.","example":false},"secondsUntilExpiry":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"exp minus the evaluation instant, in seconds; negative once expired. Clock skew is deliberately not applied. Null when exp is unusable.","example":-484161420},"issuedInFuture":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"True when iat is later than the instant plus clock skew — a sign of issuer clock drift. Null when iat is absent, is not a JSON number, or lies outside the ±8,640,000,000,000-second instant range this API can represent.","example":false},"audienceMatches":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether aud names the expected audience. Null when no audience parameter was supplied; false when the token has no usable aud.","example":null},"issuerMatches":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether iss equals the expected issuer. Null when no issuer parameter was supplied; false when the token has no usable iss.","example":null},"clockSkewSeconds":{"type":"integer","minimum":0,"maximum":300,"description":"Tolerance actually applied to the exp, nbf and iat comparisons.","example":0},"evaluation":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Ordered trace of stable reason codes — always starting with signature.not-verified — each with the claim it concerns (null for the signature notice) and a human explanation.","example":[{"claim":null,"code":"signature.not-verified","detail":"This API never verifies signatures and accepts no key material, so nothing below is evidence that the token is authentic."},{"claim":"exp","code":"exp.expired","detail":"'exp' is 2011-03-22T18:43:00.000Z, at or before the evaluation instant even after 0s of skew."}]}},"additionalProperties":false},"JwtClaimsMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["jwt"]},"params":{"type":"object","properties":{"token":{"type":"string","maxLength":8000},"at":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"audience":{"type":"string","minLength":1,"maxLength":1024},"issuer":{"type":"string","minLength":1,"maxLength":1024},"clockSkewSeconds":{"type":"integer","minimum":0,"maximum":300}},"required":["token","clockSkewSeconds"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/claims"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"JwtClaimsEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/JwtClaimsRecord"},"meta":{"$ref":"#/components/schemas/JwtClaimsMeta"}},"required":["data","meta"],"additionalProperties":false},"LanguageTagsCanonicalizeRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"input":{"type":"string","description":"Tag exactly as supplied.","example":"EN-us"},"canonical":{"type":"string","description":"Canonical casing, ordering and preferred replacement where supported.","example":"en-US"},"isCanonical":{"type":"boolean","description":"Whether input already exactly equals canonical output.","example":false},"kind":{"type":"string","description":"language-tag, grandfathered or private-use.","example":"language-tag"},"baseName":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Tag without extensions/private use, or null when that decomposition is not defined.","example":"zh-Hant-CN"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical primary language subtag, or null for opaque forms.","example":"zh"},"script":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Four-letter script subtag when present.","example":"Hant"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Two-letter or three-digit region subtag when present.","example":"CN"},"extensions":{"type":"array","items":{"type":"string"},"description":"Canonical singleton extension sequences excluding private use.","example":["u-ca-chinese"]},"privateUse":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Complete x- private-use sequence when present.","example":"x-team"}},"additionalProperties":false},"LanguageTagsCanonicalizeMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["language-tags"]},"params":{"type":"object","properties":{"tag":{"type":"string","minLength":1,"maxLength":255}},"required":["tag"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/canonicalize"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"LanguageTagsCanonicalizeEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/LanguageTagsCanonicalizeRecord"},"meta":{"$ref":"#/components/schemas/LanguageTagsCanonicalizeMeta"}},"required":["data","meta"],"additionalProperties":false},"LanguageTagsLookupRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"ranges":{"type":"array","items":{"type":"string"},"description":"Validated lowercase priority ranges.","example":["zh-hant-tw","zh-hant","zh"]},"available":{"type":"array","items":{"type":"string"},"description":"Canonical, de-duplicated available tags.","example":["en","zh","zh-Hant"]},"match":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Selected available tag, explicit default, or null.","example":"zh-Hant"},"matchedRange":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Normalized lowercase input priority range that succeeded, or null for a default/miss.","example":"zh-hant-tw"},"matchedCandidate":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Normalized input-form fallback candidate whose original or canonical equivalent matched.","example":"zh-hant"},"usedDefault":{"type":"boolean","description":"Whether the explicit default supplied the result.","example":false}},"additionalProperties":false},"LanguageTagsLookupMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["language-tags"]},"params":{"type":"object","properties":{"ranges":{"type":"array","items":{"type":"string"},"minItems":1},"available":{"type":"array","items":{"type":"string"},"minItems":1},"default":{"type":"string","minLength":1,"maxLength":255}},"required":["ranges","available"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/lookup"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"LanguageTagsLookupEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/LanguageTagsLookupRecord"},"meta":{"$ref":"#/components/schemas/LanguageTagsLookupMeta"}},"required":["data","meta"],"additionalProperties":false},"LanguageTagsFilterRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"ranges":{"type":"array","items":{"type":"string"},"description":"Validated lowercase priority ranges.","example":["de-ch","de","en"]},"available":{"type":"array","items":{"type":"string"},"description":"Canonical, de-duplicated available tags.","example":["en-US","de","de-CH-1996","fr"]},"matches":{"type":"array","items":{"type":"string"},"description":"Prefix matches ordered by range priority then available input order, without duplicates.","example":["de-CH-1996","de","en-US"]}},"additionalProperties":false},"LanguageTagsFilterMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["language-tags"]},"params":{"type":"object","properties":{"ranges":{"type":"array","items":{"type":"string"},"minItems":1},"available":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["ranges","available"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/filter"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"LanguageTagsFilterEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/LanguageTagsFilterRecord"},"meta":{"$ref":"#/components/schemas/LanguageTagsFilterMeta"}},"required":["data","meta"],"additionalProperties":false},"LanguagesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"name":{"type":"string","description":"First official English reference name in the Library of Congress code list.","example":"German"},"alternateNames":{"type":"array","items":{"type":"string"},"description":"Additional official English reference names from the same registry row; empty when none are listed.","example":["Scottish Gaelic"]},"alpha2":{"type":"string","description":"Active ISO 639 Set 1 two-letter identifier (formerly ISO 639-1).","example":"de"},"alpha3":{"type":"string","description":"ISO 639 Set 2 terminology identifier (formerly ISO 639-2/T).","example":"deu"},"bibliographicAlpha3":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Different legacy bibliographic identifier (ISO 639-2/B), or null when the B and T identifiers are the same.","example":"ger"}},"additionalProperties":false},"LanguagesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["languages"]},"params":{"type":"object","properties":{"search":{"type":"string"},"hasBibliographicCode":{"type":"boolean"}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","count"],"additionalProperties":false},"LanguagesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LanguagesRootRecord"}},"meta":{"$ref":"#/components/schemas/LanguagesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"LanguagesLookupRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"name":{"type":"string","description":"First official English reference name in the Library of Congress code list.","example":"German"},"alternateNames":{"type":"array","items":{"type":"string"},"description":"Additional official English reference names from the same registry row; empty when none are listed.","example":["Scottish Gaelic"]},"alpha2":{"type":"string","description":"Active ISO 639 Set 1 two-letter identifier (formerly ISO 639-1).","example":"de"},"alpha3":{"type":"string","description":"ISO 639 Set 2 terminology identifier (formerly ISO 639-2/T).","example":"deu"},"bibliographicAlpha3":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Different legacy bibliographic identifier (ISO 639-2/B), or null when the B and T identifiers are the same.","example":"ger"}},"additionalProperties":false},"LanguagesLookupMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["languages"]},"params":{"type":"object","properties":{"code":{"type":"string","minLength":2,"maxLength":3}},"required":["code"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/lookup"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"LanguagesLookupEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/LanguagesLookupRecord"},"meta":{"$ref":"#/components/schemas/LanguagesLookupMeta"}},"required":["data","meta"],"additionalProperties":false},"LedgerEntriesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"entryId":{"type":"string","description":"Journal entry id ('je_' + 8 hex characters), unique within a response.","example":"je_3f9a2c01"},"date":{"type":"string","format":"date-time","description":"Posting date in UTC, inside the from..to window, and shared by every posting of the entry. Entries come out oldest first — strictly increasing while the window is at least 100 ms wide, otherwise non-decreasing because date slots collapse (a warning says so).","example":"2026-03-14T09:26:53.512Z"},"type":{"type":"string","description":"payment | payout | refund | fee | transfer | accrual | reversal.","example":"payment"},"currency":{"type":"string","description":"ISO 4217 code every posting amount is denominated in (integer minor units).","example":"USD"},"description":{"type":"string","description":"Human memo for the entry; reversals name the entry they reverse.","example":"Customer payment applied to an open invoice"},"reference":{"type":"string","description":"External reference: a type prefix (PAY, PYT, REF, FEE, TRF, ACR, REV) plus 8 hex characters.","example":"PAY-9F3A2C81"},"reversesEntryId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"For a reversal, the entryId of the earlier entry in this response whose postings it mirrors; null for every other entry (and for the first record when entryType=reversal).","example":null},"postings":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"The entry's legs, debits first: lineNumber, accountId, account, accountType, normalBalance, side, amount (positive minor units) and signedAmount (debit-positive, so the legs sum to 0).","example":[{"lineNumber":1,"accountId":"cash","account":"Cash","accountType":"asset","normalBalance":"debit","side":"debit","amount":128450,"signedAmount":128450},{"lineNumber":2,"accountId":"accounts-receivable","account":"Accounts Receivable","accountType":"asset","normalBalance":"debit","side":"credit","amount":128450,"signedAmount":-128450}]},"debitTotal":{"type":"integer","description":"Sum of the debit legs in minor units — always equal to creditTotal.","example":128450},"creditTotal":{"type":"integer","description":"Sum of the credit legs in minor units — always equal to debitTotal.","example":128450}},"additionalProperties":false},"LedgerEntriesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["ledger-entries"]},"params":{"type":"object","properties":{"currency":{"type":"string","minLength":3,"maxLength":3},"accountType":{"type":"string","enum":["asset","liability","equity","revenue","expense"]},"postingsPerEntry":{"type":"integer","minimum":2,"maximum":6},"entryType":{"type":"string","enum":["payment","payout","refund","fee","transfer","accrual","reversal"]},"minAmount":{"type":"integer","minimum":1,"maximum":1000000000},"maxAmount":{"type":"integer","minimum":1,"maximum":1000000000},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["currency","postingsPerEntry","minAmount","maxAmount"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"LedgerEntriesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LedgerEntriesRootRecord"}},"meta":{"$ref":"#/components/schemas/LedgerEntriesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"LedgerEntriesPostingsRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"postingId":{"type":"string","description":"Row id: the entryId plus the line number ('je_3f9a2c01-L1').","example":"je_3f9a2c01-L1"},"entryId":{"type":"string","description":"Journal entry this posting belongs to.","example":"je_3f9a2c01"},"entryType":{"type":"string","description":"Type of the parent entry: payment | payout | refund | fee | transfer | accrual | reversal.","example":"payment"},"lineNumber":{"type":"integer","description":"1-based line number inside the entry, debits first.","example":1},"date":{"type":"string","format":"date-time","description":"Date of the parent entry — every posting of an entry shares it.","example":"2026-03-14T09:26:53.512Z"},"currency":{"type":"string","description":"ISO 4217 code of the amount (integer minor units).","example":"USD"},"accountId":{"type":"string","description":"Chart-of-accounts slug — an internal key, never a statutory account number.","example":"cash"},"account":{"type":"string","description":"Human account name as it would appear in a ledger table.","example":"Cash"},"accountType":{"type":"string","description":"asset | liability | equity | revenue | expense.","example":"asset"},"normalBalance":{"type":"string","description":"Side on which this account type increases: debit for assets and expenses, credit for liabilities, equity and revenue.","example":"debit"},"side":{"type":"string","description":"debit or credit.","example":"debit"},"amount":{"type":"integer","description":"Positive amount in minor units, inside minAmount..maxAmount.","example":128450},"signedAmount":{"type":"integer","description":"Debit-positive amount (+ for debits, − for credits). Each entry's own legs still net to 0, but these rows are a flat slice of the ledger rather than whole entries, so the response nets to 0 only when `count` is even and no `accountType` filter is applied; an odd `count` ends on an orphaned debit leg and the sum equals that last row.","example":128450},"balanceAfter":{"type":"integer","description":"Exact debit-positive running balance of this account across the rows returned above it (a credit-normal account therefore trends negative).","example":128450}},"additionalProperties":false},"LedgerEntriesPostingsMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["ledger-entries"]},"params":{"type":"object","properties":{"currency":{"type":"string","minLength":3,"maxLength":3},"accountType":{"type":"string","enum":["asset","liability","equity","revenue","expense"]},"minAmount":{"type":"integer","minimum":1,"maximum":1000000000},"maxAmount":{"type":"integer","minimum":1,"maximum":1000000000},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["currency","minAmount","maxAmount"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/postings"]},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","route","count","seed"],"additionalProperties":false},"LedgerEntriesPostingsEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LedgerEntriesPostingsRecord"}},"meta":{"$ref":"#/components/schemas/LedgerEntriesPostingsMeta"}},"required":["data","meta"],"additionalProperties":false},"LedgerEntriesTrialBalanceRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"currency":{"type":"string","description":"ISO 4217 code all totals are denominated in.","example":"USD"},"decimalDigits":{"type":"integer","description":"ISO 4217 minor-unit exponent for the currency — divide the integer totals by 10^this to display them.","example":2},"from":{"type":"string","format":"date-time","description":"Start of the summarized window, inclusive.","example":"2026-06-10T00:00:00.000Z"},"to":{"type":"string","format":"date-time","description":"End of the summarized window, inclusive.","example":"2026-07-10T00:00:00.000Z"},"entries":{"type":"integer","description":"Number of journal entries summarized.","example":25},"postings":{"type":"integer","description":"Number of postings across those entries.","example":50},"accounts":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One row per account with activity, ordered by accountId: accountId, account, accountType, normalBalance, debits, credits, balance (debits − credits) and postings.","example":[{"accountId":"cash","account":"Cash","accountType":"asset","normalBalance":"debit","debits":1284500,"credits":902100,"balance":382400,"postings":17}]},"totalDebits":{"type":"integer","description":"Sum of every debit posting in minor units.","example":3100000},"totalCredits":{"type":"integer","description":"Sum of every credit posting in minor units — always equal to totalDebits.","example":3100000},"difference":{"type":"integer","description":"totalDebits − totalCredits. Always exactly 0 by construction; the field exists so a reconciliation view has something to render.","example":0}},"additionalProperties":false},"LedgerEntriesTrialBalanceMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["ledger-entries"]},"params":{"type":"object","properties":{"currency":{"type":"string","minLength":3,"maxLength":3},"entries":{"type":"integer","minimum":1,"maximum":100},"accountType":{"type":"string","enum":["asset","liability","equity","revenue","expense"]},"postingsPerEntry":{"type":"integer","minimum":2,"maximum":6},"entryType":{"type":"string","enum":["payment","payout","refund","fee","transfer","accrual","reversal"]},"minAmount":{"type":"integer","minimum":1,"maximum":1000000000},"maxAmount":{"type":"integer","minimum":1,"maximum":1000000000},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"seed":{"type":"integer"}},"required":["currency","entries","postingsPerEntry","minAmount","maxAmount","seed"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/trial-balance"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"LedgerEntriesTrialBalanceEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/LedgerEntriesTrialBalanceRecord"},"meta":{"$ref":"#/components/schemas/LedgerEntriesTrialBalanceMeta"}},"required":["data","meta"],"additionalProperties":false},"LlmCompletionsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Replay handle, shaped cmpl_<completionTokens base36>_<finish code><model code>_<8 lowercase hex>. In ids this route generates the last four hex digits are the record index, which is what keeps them unique within a response; /chunks treats any eight hex digits as a handle, so a hand-written id — like the example here — need not follow that convention. Pass it to /chunks to replay this exact stream.","example":"cmpl_18_s2_5f3ac1d2"},"model":{"type":"string","description":"Fictional model label; not a real or vendor model, and no model ran.","example":"demo-model-md"},"createdAt":{"type":"string","format":"date-time","description":"Fictional creation instant, at or before the resolved asOf and within seven days of it.","example":"2026-07-28T11:42:07.318Z"},"prompt":{"type":"string","description":"The supplied prompt, or a generated fixture prompt. It is not answered by message — no model is involved.","example":"Summarize this changelog in three bullet points."},"message":{"type":"object","additionalProperties":true,"description":"{ role: \"assistant\", content }. content is generic English fixture prose, and an empty string for tool_calls and content_filter.","example":{"role":"assistant","content":"In practice, the copy is stored next to the source, reads go to the nearest replica. Each field has a default value, the record is versioned on update, the report covers the last seven days. Writes are ordered by a single owner, reads go."}},"finishReason":{"type":"string","description":"stop, length, tool_calls or content_filter, genuinely derived: length only when the budget was hit, tool_calls only when toolCalls is present.","example":"stop"},"toolCalls":{"anyOf":[{"type":"array","items":{"type":"object","additionalProperties":true}},{"type":"null"}],"description":"One or two { id, name, arguments } entries, where arguments is a JSON string that parses to an object. Non-null exactly when finishReason is tool_calls.","example":[{"id":"call_f780b593","name":"lookup_user","arguments":"{\"email\":\"dana@example.com\"}"}]},"usage":{"type":"object","additionalProperties":true,"description":"{ promptTokens, completionTokens, cachedPromptTokens, totalTokens }. Generated estimates, not tokenizer output: one token is one whitespace-delimited word, and a tool call costs 2 tokens plus one per 4 characters of arguments. cachedPromptTokens is a subset of promptTokens, never an addition, and totalTokens = promptTokens + completionTokens.","example":{"promptTokens":7,"completionTokens":44,"cachedPromptTokens":0,"totalTokens":51}},"latencyMs":{"type":"integer","description":"Fictional wall time for the whole completion: time to the first chunk plus every per-token step. Equals /chunks totalElapsedMs for the same id whenever that id is replayable.","example":1194}},"additionalProperties":false},"LlmCompletionsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["llm-completions"]},"params":{"type":"object","properties":{"model":{"type":"string","enum":["demo-model-sm","demo-model-md","demo-model-lg"]},"finishReason":{"type":"string","enum":["stop","length","tool_calls","content_filter"]},"maxTokens":{"type":"integer","minimum":1,"maximum":200},"prompt":{"type":"string","minLength":1,"maxLength":200},"cached":{"type":"boolean"},"asOf":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["maxTokens"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"LlmCompletionsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LlmCompletionsRootRecord"}},"meta":{"$ref":"#/components/schemas/LlmCompletionsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"LlmCompletionsChunksRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"completionId":{"type":"string","description":"The replay handle used: the supplied id, or the synthesized one.","example":"cmpl_18_s2_5f3ac1d2"},"model":{"type":"string","description":"Fictional model label decoded from the id, or the resolved one.","example":"demo-model-md"},"finishReason":{"type":"string","description":"stop or length; also carried on the final chunk.","example":"stop"},"content":{"type":"string","description":"The fully assembled message: exactly chunks.map(c => c.delta).join(\"\").","example":"In practice, the copy is stored next to the source, reads go to the nearest replica. Each field has a default value, the record is versioned on update, the report covers the last seven days. Writes are ordered by a single owner, reads go."},"chunkCount":{"type":"integer","description":"Number of chunks in this stream; equals completionTokens.","example":44},"completionTokens":{"type":"integer","description":"Our word-granular token count for this completion — the same value the list route reports in usage.completionTokens for this id. Prompt-side counts are not encoded in an id, so they are deliberately absent here.","example":44},"timeToFirstChunkMs":{"type":"integer","description":"chunks[0].elapsedMs; fictional latency, nothing was measured.","example":366},"totalElapsedMs":{"type":"integer","description":"The last chunk's elapsedMs; equals the list route's latencyMs for this id.","example":1194},"chunks":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Ordered delta records: { index, delta, elapsedMs, finishReason }. delta is one word-granular fragment — the first has no leading space and every later one begins with exactly one space, where a real provider's deltas would be sub-word pieces. elapsedMs is cumulative and strictly increasing. finishReason is null on every chunk but the last.","example":[{"index":0,"delta":"In","elapsedMs":366,"finishReason":null}]}},"additionalProperties":false},"LlmCompletionsChunksMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["llm-completions"]},"params":{"type":"object","properties":{"completionId":{"type":"string","minLength":5,"maxLength":32},"tokens":{"type":"integer","minimum":1,"maximum":200},"finishReason":{"type":"string","enum":["stop","length"]},"model":{"type":"string","enum":["demo-model-sm","demo-model-md","demo-model-lg"]}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/chunks"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"LlmCompletionsChunksEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/LlmCompletionsChunksRecord"},"meta":{"$ref":"#/components/schemas/LlmCompletionsChunksMeta"}},"required":["data","meta"],"additionalProperties":false},"LocaleFormatsNumberRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"value":{"type":"number","description":"The numeric input, echoed back.","example":1234567.89},"formatted":{"type":"string","description":"The formatted number as this runtime's CLDR data renders it.","example":"1.234.567,89"},"locale":{"type":"string","description":"Locale actually resolved by Intl.NumberFormat, which may be a parent of the requested tag.","example":"de-DE"},"numberingSystem":{"type":"string","description":"Numbering system actually used for the digits.","example":"latn"},"style":{"type":"string","description":"Resolved style: decimal, percent or unit.","example":"decimal"},"notation":{"type":"string","description":"Resolved notation: standard, compact, scientific or engineering.","example":"standard"},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Resolved unit identifier, or null for any style other than unit.","example":null},"parts":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"The runtime's formatToParts output: each substring the formatter produced, tagged with the ECMA-402 part type it came from. This is what lets you locate the separator, symbol or field inside `formatted` instead of parsing it.","example":[{"type":"integer","value":"1"},{"type":"group","value":"."},{"type":"integer","value":"234"}]},"resolvedOptions":{"type":"object","additionalProperties":true,"description":"The formatter's complete ECMA-402 resolvedOptions() object, exactly as this runtime reports it — the resolved locale, numbering system and every option that was actually applied.","example":{"locale":"de-DE","numberingSystem":"latn","style":"decimal","minimumIntegerDigits":1,"minimumFractionDigits":0,"maximumFractionDigits":3,"useGrouping":"auto","notation":"standard","signDisplay":"auto"}}},"additionalProperties":false},"LocaleFormatsNumberMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["locale-formats"]},"params":{"type":"object","properties":{"locale":{"type":"string","minLength":2,"maxLength":64},"value":{"type":"number","minimum":-1000000000000000,"maximum":1000000000000000},"style":{"type":"string","enum":["decimal","percent","unit"]},"unit":{"type":"string","minLength":3,"maxLength":64},"notation":{"type":"string","enum":["standard","compact","scientific","engineering"]},"minimumFractionDigits":{"type":"integer","minimum":0,"maximum":20},"maximumFractionDigits":{"type":"integer","minimum":0,"maximum":20},"numberingSystem":{"type":"string","minLength":3,"maxLength":8}},"required":["locale","value","style","notation"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/number"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"LocaleFormatsNumberEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/LocaleFormatsNumberRecord"},"meta":{"$ref":"#/components/schemas/LocaleFormatsNumberMeta"}},"required":["data","meta"],"additionalProperties":false},"LocaleFormatsCurrencyRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"amount":{"type":"number","description":"The amount supplied by the caller.","example":1234.5},"currency":{"type":"string","description":"Canonical uppercase ISO 4217 code that was formatted.","example":"EUR"},"formatted":{"type":"string","description":"The formatted monetary string for this locale and currency.","example":"1.234,50 €"},"currencyText":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Exact substring the runtime emitted for the currency part — a symbol, ISO code or localized name depending on currencyDisplay. Null if the runtime emitted no currency part.","example":"€"},"currencyPosition":{"anyOf":[{"type":"string","enum":["prefix","suffix"]},{"type":"null"}],"description":"Whether the currency part precedes or follows the digits for this locale AND this currencyDisplay. The symbol, narrowSymbol and code forms share the locale's one CLDR pattern, but the localized name form trails the digits in many locales whose symbol leads them (en-US: $1,234.56 but 1,234.56 US dollars). Null if the runtime emitted no currency part.","example":"suffix"},"locale":{"type":"string","description":"Locale actually resolved by Intl.NumberFormat.","example":"de-DE"},"minimumFractionDigits":{"type":"integer","description":"Resolved minimum fraction digits — ECMA-402 takes this from the currency's own CLDR minor-unit digit count, not from the locale.","example":2},"maximumFractionDigits":{"type":"integer","description":"Resolved maximum fraction digits: 0 for JPY, 2 for EUR and USD, 3 for KWD and BHD.","example":2},"parts":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"The runtime's formatToParts output: each substring the formatter produced, tagged with the ECMA-402 part type it came from. This is what lets you locate the separator, symbol or field inside `formatted` instead of parsing it.","example":[{"type":"integer","value":"1"},{"type":"group","value":"."},{"type":"integer","value":"234"}]},"resolvedOptions":{"type":"object","additionalProperties":true,"description":"The formatter's complete ECMA-402 resolvedOptions() object, exactly as this runtime reports it — the resolved locale, numbering system and every option that was actually applied.","example":{"locale":"de-DE","numberingSystem":"latn","style":"decimal","minimumIntegerDigits":1,"minimumFractionDigits":0,"maximumFractionDigits":3,"useGrouping":"auto","notation":"standard","signDisplay":"auto"}}},"additionalProperties":false},"LocaleFormatsCurrencyMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["locale-formats"]},"params":{"type":"object","properties":{"locale":{"type":"string","minLength":2,"maxLength":64},"amount":{"type":"number","minimum":-1000000000000000,"maximum":1000000000000000},"currency":{"type":"string","minLength":3,"maxLength":3},"currencyDisplay":{"type":"string","enum":["symbol","narrowSymbol","code","name"]},"currencySign":{"type":"string","enum":["standard","accounting"]}},"required":["locale","amount","currency","currencyDisplay","currencySign"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/currency"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"LocaleFormatsCurrencyEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/LocaleFormatsCurrencyRecord"},"meta":{"$ref":"#/components/schemas/LocaleFormatsCurrencyMeta"}},"required":["data","meta"],"additionalProperties":false},"LocaleFormatsDateTimeRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"at":{"type":"string","format":"date-time","description":"The absolute instant that was formatted, in canonical UTC.","example":"2026-01-15T12:34:56.000Z"},"formatted":{"type":"string","description":"The formatted date and/or time for this locale, zone and calendar.","example":"Donnerstag, 15. Januar 2026 um 12:34:56 Koordinierte Weltzeit"},"locale":{"type":"string","description":"Locale actually resolved by Intl.DateTimeFormat.","example":"de-DE"},"timeZone":{"type":"string","description":"Canonical IANA time zone the instant was rendered in.","example":"UTC"},"calendar":{"type":"string","description":"Calendar actually used — the locale default unless 'calendar' was supplied.","example":"gregory"},"numberingSystem":{"type":"string","description":"Numbering system used for the numeric fields.","example":"latn"},"hourCycle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Resolved hour cycle (h11, h12, h23, h24). Null when the output contains no hour field, for example a date-only request.","example":"h23"},"parts":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"The runtime's formatToParts output: each substring the formatter produced, tagged with the ECMA-402 part type it came from. This is what lets you locate the separator, symbol or field inside `formatted` instead of parsing it.","example":[{"type":"integer","value":"1"},{"type":"group","value":"."},{"type":"integer","value":"234"}]},"resolvedOptions":{"type":"object","additionalProperties":true,"description":"The formatter's complete ECMA-402 resolvedOptions() object, exactly as this runtime reports it — the resolved locale, numbering system and every option that was actually applied.","example":{"locale":"de-DE","numberingSystem":"latn","style":"decimal","minimumIntegerDigits":1,"minimumFractionDigits":0,"maximumFractionDigits":3,"useGrouping":"auto","notation":"standard","signDisplay":"auto"}}},"additionalProperties":false},"LocaleFormatsDateTimeMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["locale-formats"]},"params":{"type":"object","properties":{"locale":{"type":"string","minLength":2,"maxLength":64},"at":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"dateStyle":{"type":"string","enum":["full","long","medium","short"]},"timeStyle":{"type":"string","enum":["full","long","medium","short"]},"timeZone":{"type":"string","minLength":2,"maxLength":64},"calendar":{"type":"string","minLength":3,"maxLength":32}},"required":["locale","timeZone"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/date-time"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"LocaleFormatsDateTimeEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/LocaleFormatsDateTimeRecord"},"meta":{"$ref":"#/components/schemas/LocaleFormatsDateTimeMeta"}},"required":["data","meta"],"additionalProperties":false},"LocaleFormatsPatternsRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"locale":{"type":"string","description":"Canonical form of the requested BCP 47 tag.","example":"de-DE"},"resolvedLocale":{"type":"string","description":"Locale Intl.NumberFormat actually resolved to, which may be a parent of the requested tag.","example":"de-DE"},"decimalSeparator":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Character(s) separating the integer and fraction parts, from formatToParts of 1234567890.123.","example":","},"groupSeparator":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Character(s) between digit groups, or null when this locale does not group this magnitude. May be a narrow no-break space.","example":"."},"groupingPattern":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Primary and secondary group sizes as 'primary;secondary' — 3;3 for German, 3;2 for the Indian lakh–crore style. It says how digits are chunked once grouping applies; minimumGroupingDigits says at which magnitude it starts. Null when the locale does not group.","example":"3;3"},"minimumGroupingDigits":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"CLDR's minimumGroupingDigits: how many digits must precede the first group separator before this locale groups at all. 1 in most locales, but 2 in es, it, pl, hu and others — they write 1234 with no separator and only group from 12345 up — so grouping by pattern alone over-groups them. Null whenever groupingPattern is null.","example":1},"percentSign":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Percent sign this locale uses, from a percent-styled formatToParts.","example":"%"},"minusSign":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Minus sign this locale uses. Several Nordic and Baltic locales (sv-SE, fi-FI, nb-NO, lt-LT) use U+2212 rather than an ASCII hyphen-minus.","example":"-"},"plusSign":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Plus sign this locale uses, from a format with signDisplay 'always'.","example":"+"},"defaultNumberingSystem":{"type":"string","description":"Numbering system Intl.NumberFormat resolves for this locale (latn, arab, deva …).","example":"latn"},"currencyPosition":{"anyOf":[{"type":"string","enum":["prefix","suffix"]},{"type":"null"}],"description":"Whether the currency symbol precedes or follows the digits, from formatting 1234.56 USD with currencyDisplay 'symbol'. CLDR keeps one currency pattern per locale, so this does not depend on the currency code — but it does depend on currencyDisplay: the localized 'name' form trails the digits in many locales that put the symbol in front. Ask /currency for that.","example":"suffix"},"currencySpacing":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Exact literal between the currency symbol and the adjacent digits for USD — often a no-break space (the example here is U+00A0), empty when they are adjacent. Unlike the position, this CAN differ for a currency whose symbol is alphabetic, so use /currency for a specific code.","example":" "},"accountingNegativeForm":{"anyOf":[{"type":"string","enum":["parentheses","minusSign"]},{"type":"null"}],"description":"How this locale writes a negative accounting amount: 'parentheses' for en-US ($1,234.56 in brackets) or 'minusSign' for de-DE. Both are read out of formatToParts, allowing for the bidi control characters ar and fa glue onto the bracket. Null only if a locale emits neither form — every locale checked in this runtime reports one of the two.","example":"minusSign"},"hourCycle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Resolved hour cycle for an hour-only format: h23/h24 mean a 24-hour clock, h11/h12 a 12-hour clock.","example":"h23"},"calendar":{"type":"string","description":"Default calendar for this locale — gregory for most, buddhist for th-TH.","example":"gregory"},"shortDatePattern":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"LDML-style pattern derived from formatToParts of 2026-03-05T13:07:09.000Z under dateStyle 'short'. Null when the short date is not purely numeric.","example":"dd.MM.yy"},"firstDayOfWeek":{"anyOf":[{"type":"integer","minimum":1,"maximum":7},{"type":"null"}],"description":"First day of the week, ISO numbering (1 = Monday … 7 = Sunday), from Intl.Locale getWeekInfo. Null when the runtime does not implement it.","example":1},"firstDayOfWeekName":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"English name of firstDayOfWeek, for readability. Null whenever firstDayOfWeek is null.","example":"Monday"},"weekendDays":{"anyOf":[{"type":"array","items":{"type":"integer"}},{"type":"null"}],"description":"Weekend days in the same ISO numbering — [6,7] in most of Europe, [5,6] in much of the Arab world. Null when getWeekInfo is unavailable.","example":[6,7]},"textDirection":{"anyOf":[{"type":"string","enum":["ltr","rtl"]},{"type":"null"}],"description":"Text direction from Intl.Locale getTextInfo. Null when the runtime does not implement it.","example":"ltr"}},"additionalProperties":false},"LocaleFormatsPatternsMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["locale-formats"]},"params":{"type":"object","properties":{"locale":{"type":"string","minLength":2,"maxLength":64}},"required":["locale"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/patterns"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"LocaleFormatsPatternsEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/LocaleFormatsPatternsRecord"},"meta":{"$ref":"#/components/schemas/LocaleFormatsPatternsMeta"}},"required":["data","meta"],"additionalProperties":false},"LocaleFormatsListRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"items":{"type":"array","items":{"type":"string"},"description":"The parsed list items, in input order.","example":["red","green","blue"]},"formatted":{"type":"string","description":"The joined list for this locale, type and style.","example":"red, green, and blue"},"locale":{"type":"string","description":"Locale actually resolved by Intl.ListFormat.","example":"en-US"},"type":{"type":"string","description":"Resolved list type: conjunction, disjunction or unit.","example":"conjunction"},"style":{"type":"string","description":"Resolved list style: long, short or narrow.","example":"long"},"parts":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"The runtime's formatToParts output: each substring the formatter produced, tagged with the ECMA-402 part type it came from. This is what lets you locate the separator, symbol or field inside `formatted` instead of parsing it.","example":[{"type":"integer","value":"1"},{"type":"group","value":"."},{"type":"integer","value":"234"}]},"resolvedOptions":{"type":"object","additionalProperties":true,"description":"The formatter's complete ECMA-402 resolvedOptions() object, exactly as this runtime reports it — the resolved locale, numbering system and every option that was actually applied.","example":{"locale":"de-DE","numberingSystem":"latn","style":"decimal","minimumIntegerDigits":1,"minimumFractionDigits":0,"maximumFractionDigits":3,"useGrouping":"auto","notation":"standard","signDisplay":"auto"}}},"additionalProperties":false},"LocaleFormatsListMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["locale-formats"]},"params":{"type":"object","properties":{"locale":{"type":"string","minLength":2,"maxLength":64},"items":{"type":"array","items":{"type":"string"},"minItems":1},"type":{"type":"string","enum":["conjunction","disjunction","unit"]},"style":{"type":"string","enum":["long","short","narrow"]}},"required":["locale","items","type","style"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/list"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"LocaleFormatsListEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/LocaleFormatsListRecord"},"meta":{"$ref":"#/components/schemas/LocaleFormatsListMeta"}},"required":["data","meta"],"additionalProperties":false},"LocaleFormatsRelativeTimeRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"value":{"type":"number","description":"Signed offset supplied by the caller.","example":-1},"unit":{"type":"string","description":"Time unit the value was interpreted in.","example":"day"},"formatted":{"type":"string","description":"The locale's phrasing of that relative time.","example":"yesterday"},"locale":{"type":"string","description":"Locale actually resolved by Intl.RelativeTimeFormat.","example":"en-US"},"numeric":{"type":"string","description":"Resolved numeric mode: always or auto.","example":"auto"},"parts":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"formatToParts output; the numeric part also carries the unit it belongs to, and unit is null on literal parts.","example":[{"type":"integer","value":"1","unit":"day"},{"type":"literal","value":" day ago","unit":null}]},"resolvedOptions":{"type":"object","additionalProperties":true,"description":"The formatter's complete ECMA-402 resolvedOptions() object, exactly as this runtime reports it — the resolved locale, numbering system and every option that was actually applied.","example":{"locale":"de-DE","numberingSystem":"latn","style":"decimal","minimumIntegerDigits":1,"minimumFractionDigits":0,"maximumFractionDigits":3,"useGrouping":"auto","notation":"standard","signDisplay":"auto"}}},"additionalProperties":false},"LocaleFormatsRelativeTimeMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["locale-formats"]},"params":{"type":"object","properties":{"locale":{"type":"string","minLength":2,"maxLength":64},"value":{"type":"number","minimum":-1000000000000000,"maximum":1000000000000000},"unit":{"type":"string","enum":["year","quarter","month","week","day","hour","minute","second"]},"numeric":{"type":"string","enum":["always","auto"]}},"required":["locale","value","unit","numeric"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/relative-time"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"LocaleFormatsRelativeTimeEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/LocaleFormatsRelativeTimeRecord"},"meta":{"$ref":"#/components/schemas/LocaleFormatsRelativeTimeMeta"}},"required":["data","meta"],"additionalProperties":false},"LogLinesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"line":{"type":"string","description":"The complete log line, exactly as it would appear in the file — no trailing newline, and never containing one.","example":"192.0.2.42 - - [25/Jul/2026:14:32:10 +0000] \"GET /api/items HTTP/1.1\" 200 1439 \"https://www.example.com/\" \"curl/8.7.1\""},"format":{"type":"string","description":"The syntax this line is written in: json | logfmt | apacheCombined | apacheCommon | nginxError | syslog5424 | syslog3164.","example":"apacheCombined"},"parsed":{"type":"object","additionalProperties":true,"description":"Ground truth for THIS line: the fields a correct parser for this syntax recovers from it, and nothing more. Keys differ per syntax. NCSA `-` placeholders and CLF's empty byte count come back as null; logfmt values come back as strings because logfmt is untyped. One exception, in the two syslog syntaxes: a parser recovers PRI and derives `facility`/`severity` arithmetically, but `facilityName`/`severityName` are keyword tables, not wire data — these use the classic syslog.h words (`err`, `warning`, `local0`), not RFC 5424 Table 2's prose names, and codes 12–15 have no agreed keyword at all.","example":{"host":"192.0.2.42","ident":null,"authuser":null,"timestamp":"25/Jul/2026:14:32:10 +0000","request":"GET /api/items HTTP/1.1","method":"GET","path":"/api/items","protocol":"HTTP/1.1","status":200,"bytes":1439,"referer":"https://www.example.com/","userAgent":"curl/8.7.1"}},"timestamp":{"type":"string","format":"date-time","description":"The instant the line denotes, in UTC at millisecond resolution. It is more precise than most lines: `apacheCombined`, `apacheCommon`, `nginxError` and `syslog3164` print whole seconds only, so their milliseconds live here and nowhere else. `json` and `logfmt` carry the same millisecond value; an RFC 5424 line shows three further digits, which are generated.","example":"2026-07-25T14:32:10.482Z"}},"additionalProperties":false},"LogLinesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["log-lines"]},"params":{"type":"object","properties":{"logFormat":{"type":"string","enum":["json","logfmt","apacheCombined","apacheCommon","nginxError","syslog5424","syslog3164"]},"level":{"type":"string","enum":["debug","info","warn","error","fatal"]},"status":{"type":"integer","minimum":100,"maximum":599},"facility":{"type":"string","enum":["kern","user","mail","daemon","auth","syslog","lpr","news","uucp","cron","authpriv","ftp","ntp","logAudit","logAlert","clockDaemon","local0","local1","local2","local3","local4","local5","local6","local7"]},"service":{"type":"string","minLength":1,"maxLength":32},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["logFormat"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"LogLinesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LogLinesRootRecord"}},"meta":{"$ref":"#/components/schemas/LogLinesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"LogLinesBurstRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"requestId":{"type":"string","description":"The request's 16-hex identifier. It appears inside the application line as `request_id`; the NCSA and nginx syntaxes have no field for it, so it is surfaced here instead.","example":"9f2c1a7b4e0d5386"},"service":{"type":"string","description":"Application name, as it appears in the JSON application line.","example":"checkout"},"method":{"type":"string","description":"HTTP method of the correlated request.","example":"POST"},"path":{"type":"string","description":"Request target, query string included.","example":"/api/checkout"},"status":{"type":"integer","minimum":100,"maximum":599,"description":"Final status code of the request.","example":502},"clientIp":{"type":"string","description":"Client address, inside 192.0.2.0/24 or 2001:db8::/32.","example":"192.0.2.42"},"host":{"type":"string","description":"Host header the request carried, under example.com or .test.","example":"app.example.com"},"receivedAt":{"type":"string","format":"date-time","description":"Resolved `at` — the instant the access line's `%t` denotes.","example":"2026-07-25T14:32:10.482Z"},"completedAt":{"type":"string","format":"date-time","description":"`receivedAt` plus `durationMs` — the instant the application line denotes.","example":"2026-07-25T14:32:11.021Z"},"durationMs":{"type":"integer","description":"Request duration; exactly the gap between the first and last line, and the JSON line's `duration_ms`.","example":539},"lines":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"The three lines in chronological order, each `{ stage, format, offsetMs, timestamp, line, parsed }` — stage is access, error or app; `offsetMs` is the delay from `receivedAt`. The ordering is strict in `offsetMs`/`timestamp`, not in the line text: two of the three syntaxes print whole seconds, and most requests finish inside one, so their printed clocks usually match.","example":[{"stage":"access","format":"apacheCombined","offsetMs":0,"timestamp":"2026-07-25T14:32:10.482Z","line":"192.0.2.42 - - [25/Jul/2026:14:32:10 +0000] \"POST /api/checkout HTTP/1.1\" 502 210 \"-\" \"curl/8.7.1\"","parsed":{"status":502}}]}},"additionalProperties":false},"LogLinesBurstMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["log-lines"]},"params":{"type":"object","properties":{"status":{"type":"integer","minimum":100,"maximum":599},"service":{"type":"string","minLength":1,"maxLength":32},"at":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["seed"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/burst"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"LogLinesBurstEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/LogLinesBurstRecord"},"meta":{"$ref":"#/components/schemas/LogLinesBurstMeta"}},"required":["data","meta"],"additionalProperties":false},"LoremRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"text":{"type":"string","description":"The generated unit — one paragraph, one sentence or one word, depending on `type`.","example":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."},"words":{"type":"integer","description":"Number of whitespace-separated words in `text` (always 1 for type=words).","example":19}},"additionalProperties":false},"LoremRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["lorem"]},"params":{"type":"object","properties":{"type":{"type":"string","enum":["paragraphs","sentences","words"]},"startWithLorem":{"type":"boolean"}},"required":["type","startWithLorem"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"LoremRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LoremRootRecord"}},"meta":{"$ref":"#/components/schemas/LoremRootMeta"}},"required":["data","meta"],"additionalProperties":false},"MagneticDeclinationRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"date":{"type":"string","format":"date","description":"The resolved evaluation date — the supplied `date`, or today in UTC when it was omitted.","example":"2026-07-01"},"decimalYear":{"type":"number","description":"The model's time argument, `year + (dayOfYear − 1) / (365 or 366)`, rounded to 6 dp. 2025-01-01 is exactly 2025 and 2029-12-31 is 2029.997260.","example":2026.49589},"latitude":{"type":"number","description":"Geodetic latitude, echoed as supplied.","example":55.6761},"longitude":{"type":"number","description":"Geodetic longitude, echoed as supplied.","example":12.5683},"altitudeKm":{"type":"number","description":"Height above the WGS 84 ellipsoid, echoed as supplied.","example":0},"declinationDegrees":{"type":"number","minimum":-180,"maximum":180,"description":"Angle from true north to magnetic north, **positive east**. This is the number you add to a magnetic bearing to get a true bearing. Reported at 2 dp — NOAA's own precision, and already about ten times finer than the model's stated uncertainty.","example":5.23},"inclinationDegrees":{"type":"number","minimum":-90,"maximum":90,"description":"Dip angle of the field relative to horizontal, positive downward.","example":70.31},"horizontalIntensityNt":{"type":"number","description":"H — horizontal field strength in nanotesla, the component a compass needle aligns to.","example":17107.9},"totalIntensityNt":{"type":"number","description":"F — total field strength in nanotesla.","example":50765.6},"northComponentNt":{"type":"number","description":"X — the geodetic-north component in nanotesla.","example":17036.7},"eastComponentNt":{"type":"number","description":"Y — the geodetic-east component in nanotesla.","example":1559},"verticalComponentNt":{"type":"number","description":"Z — the downward component in nanotesla.","example":47796.1},"gridVariationDegrees":{"anyOf":[{"type":"number","minimum":-180,"maximum":180},{"type":"null"}],"description":"Declination referred to the polar-stereographic grid instead of true north: `declination − longitude` from 55°N poleward, `declination + longitude` from 55°S poleward, wrapped into [−180, 180] by NOAA's own ±360 correction (which leaves an exact ±180 in place, and 2 dp rounding can land on −180). **`null` for |latitude| < 55**, the band where NOAA's own software leaves it undefined and prints `NaN` in its published test values — this API returns `null` rather than inventing a value.","example":-7.34},"annualChange":{"type":"object","additionalProperties":true,"description":"Secular variation — the same seven keys as per-year rates (`declinationDegrees`, `inclinationDegrees`, `horizontalIntensityNt`, `totalIntensityNt`, `northComponentNt`, `eastComponentNt`, `verticalComponentNt`). The X/Y/Z rates are constant across the whole validity window because the model is linear in time; the declination, inclination, H and F rates are derived from the moving components, so they drift slightly across the five years.","example":{"declinationDegrees":0.16,"inclinationDegrees":0.02,"horizontalIntensityNt":-0.2,"totalIntensityNt":46.4,"northComponentNt":-4.5,"eastComponentNt":46.5,"verticalComponentNt":49.3}},"uncertainty":{"type":"object","additionalProperties":true,"description":"NOAA's published error model — one standard deviation between a hypothetical measurement and the model — with the same seven keys. Six values are fixed (137/89/141 nT on X/Y/Z, 133 nT on H, 138 nT on F, 0.20° on inclination); the declination uncertainty is √(0.26² + (5417/H)²) degrees and therefore grows where the horizontal field is weak.","example":{"declinationDegrees":0.41,"inclinationDegrees":0.2,"horizontalIntensityNt":133,"totalIntensityNt":138,"northComponentNt":137,"eastComponentNt":89,"verticalComponentNt":141}},"compassZone":{"type":"string","description":"`blackout` where H < 2000 nT (NOAA's Blackout Zone, where a magnetic compass should not be relied on for navigation), `caution` where 2000 nT ≤ H < 6000 nT (NOAA's Caution Zone), `normal` above that. Both thresholds are NOAA's; `normal` is this API's label for \"outside both of NOAA's named zones\" and not a NOAA term. A non-normal zone also raises a `meta.warnings` entry naming the measured H.","example":"normal"},"model":{"type":"string","description":"The model identifier that produced these numbers. Present so a stored response stays interpretable after the next model release.","example":"WMM2025"}},"additionalProperties":false},"MagneticDeclinationRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["magnetic-declination"]},"params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180},"date":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"altitudeKm":{"type":"number","minimum":-1,"maximum":850}},"required":["lat","lng","altitudeKm"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}}},"required":["endpoint","params","generatedAt"],"additionalProperties":false},"MagneticDeclinationRootEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MagneticDeclinationRootRecord"},"meta":{"$ref":"#/components/schemas/MagneticDeclinationRootMeta"}},"required":["data","meta"],"additionalProperties":false},"MagneticDeclinationTrueHeadingRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"date":{"type":"string","format":"date","description":"The resolved evaluation date — the supplied `date`, or today in UTC when it was omitted.","example":"2026-07-01"},"decimalYear":{"type":"number","description":"The model's time argument, `year + (dayOfYear − 1) / (365 or 366)`, rounded to 6 dp. 2025-01-01 is exactly 2025 and 2029-12-31 is 2029.997260.","example":2026.49589},"latitude":{"type":"number","description":"Geodetic latitude, echoed as supplied.","example":55.6761},"longitude":{"type":"number","description":"Geodetic longitude, echoed as supplied.","example":12.5683},"altitudeKm":{"type":"number","description":"Height above the WGS 84 ellipsoid, echoed as supplied.","example":0},"providedHeading":{"type":"string","description":"Which input was supplied: `magnetic` or `true`.","example":"magnetic"},"magneticHeading":{"type":"number","minimum":0,"maximum":360,"description":"The magnetic heading — supplied or derived — normalised into [0, 360).","example":45},"trueHeading":{"type":"number","minimum":0,"maximum":360,"description":"The true heading — supplied or derived — normalised into [0, 360).","example":50.23},"declinationDegrees":{"type":"number","minimum":-180,"maximum":180,"description":"The declination applied at this point, date and height, positive east.","example":5.23},"rule":{"type":"string","description":"The convention spelled out, so the sign never has to be guessed.","example":"true = magnetic + declination (east declination positive); magnetic = true − declination"},"horizontalIntensityNt":{"type":"number","description":"H at the point — the field strength the compass has to work with.","example":17107.9},"compassZone":{"type":"string","description":"`blackout` where H < 2000 nT (NOAA's Blackout Zone, where a magnetic compass should not be relied on for navigation), `caution` where 2000 nT ≤ H < 6000 nT (NOAA's Caution Zone), `normal` above that. Both thresholds are NOAA's; `normal` is this API's label for \"outside both of NOAA's named zones\" and not a NOAA term. A non-normal zone also raises a `meta.warnings` entry naming the measured H.","example":"normal"},"declinationUncertaintyDegrees":{"type":"number","description":"NOAA's one-standard-deviation uncertainty on the declination that was applied, √(0.26² + (5417/H)²), so the converted heading carries its own error bar.","example":0.41}},"additionalProperties":false},"MagneticDeclinationTrueHeadingMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["magnetic-declination"]},"params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180},"date":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"altitudeKm":{"type":"number","minimum":-1,"maximum":850},"magneticHeading":{"type":"number","minimum":0,"maximum":360},"trueHeading":{"type":"number","minimum":0,"maximum":360}},"required":["lat","lng","altitudeKm"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/true-heading"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"MagneticDeclinationTrueHeadingEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MagneticDeclinationTrueHeadingRecord"},"meta":{"$ref":"#/components/schemas/MagneticDeclinationTrueHeadingMeta"}},"required":["data","meta"],"additionalProperties":false},"MagneticDeclinationModelRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"model":{"type":"string","description":"Model identifier.","example":"WMM2025"},"epoch":{"type":"number","description":"The epoch the main-field coefficients are given at, as a decimal year.","example":2025},"validFrom":{"type":"string","format":"date","description":"First date the endpoint will evaluate the model for.","example":"2025-01-01"},"validUntil":{"type":"string","format":"date","description":"Last date the endpoint will evaluate the model for, inclusive.","example":"2029-12-31"},"releaseDate":{"type":"string","format":"date","description":"The date NOAA released this model version.","example":"2024-12-17"},"degree":{"type":"integer","description":"Maximum spherical-harmonic degree of the main-field expansion.","example":12},"order":{"type":"integer","description":"Maximum spherical-harmonic order.","example":12},"coefficientRows":{"type":"integer","description":"Rows in the coefficient file — one per (degree, order) pair, Σ(n+1) for n = 1…12.","example":90},"mainFieldCoefficients":{"type":"integer","description":"Main-field Gauss coefficients: 90 gₙᵐ plus 78 hₙᵐ (hₙ⁰ does not exist).","example":168},"secularVariationCoefficients":{"type":"integer","description":"Secular-variation coefficients — the same count again, for 336 in total.","example":168},"geomagneticReferenceRadiusKm":{"type":"number","description":"The geomagnetic reference sphere the expansion is written on. Not the same number as the WGS 84 semi-major axis (6378.137 km) the caller's latitude and altitude refer to; both are used and they are not interchangeable.","example":6371.2},"ellipsoid":{"type":"string","description":"The reference ellipsoid `lat`, `lng` and `altitudeKm` are interpreted against.","example":"WGS 84"},"altitudeRangeKm":{"type":"object","additionalProperties":true,"description":"The model's documented altitude envelope above the ellipsoid: `{ min, max }` in kilometres, both inclusive.","example":{"min":-1,"max":850}},"producedBy":{"type":"string","description":"Who produces and develops the model.","example":"Produced by the US National Geospatial-Intelligence Agency (NGA) and the UK Defence Geographic Centre (DGC); jointly developed by NOAA NCEI and the British Geological Survey (BGS)."},"coefficientFileSha256":{"type":"string","description":"SHA-256 of the pinned `WMM2025COF/WMM.COF` these coefficients were transcribed from, so a client can verify it is looking at the same bytes.","example":"dfa8597825af4e0b87ff4198a5b4fb661b3c49f4cd090cd0164e0259b075582f"},"date":{"type":"string","format":"date","description":"The resolved evaluation date — the supplied `date`, or today in UTC when it was omitted.","example":"2026-07-01"},"decimalYear":{"type":"number","description":"The model's time argument, `year + (dayOfYear − 1) / (365 or 366)`, rounded to 6 dp. 2025-01-01 is exactly 2025 and 2029-12-31 is 2029.997260.","example":2026.49589},"withinValidity":{"type":"boolean","description":"Whether the resolved `date` falls inside the validity window (inclusive at both ends).","example":true},"daysUntilExpiry":{"type":"integer","description":"Whole days from the resolved `date` to `validUntil`: 0 on the last valid day and **negative** once the model has expired.","example":1279}},"additionalProperties":false},"MagneticDeclinationModelMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["magnetic-declination"]},"params":{"type":"object","properties":{"date":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/model"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"MagneticDeclinationModelEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MagneticDeclinationModelRecord"},"meta":{"$ref":"#/components/schemas/MagneticDeclinationModelMeta"}},"required":["data","meta"],"additionalProperties":false},"MagneticDeclinationCoefficientsRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"degree":{"type":"integer","minimum":1,"maximum":12,"description":"Degree n.","example":1},"order":{"type":"integer","minimum":0,"maximum":12,"description":"Order m.","example":0},"gNt":{"type":"number","description":"Main-field cosine coefficient gₙᵐ at epoch 2025.0, nanotesla.","example":-29351.8},"hNt":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Main-field sine coefficient hₙᵐ, nanotesla. **`null` when `order` is 0** — hₙ⁰ does not exist, because its sin(0·λ) term vanishes. The coefficient file writes `0.0` in that column as padding, and padding is not published here as though it were a value.","example":null},"gDotNtPerYear":{"type":"number","description":"Secular-variation rate ġₙᵐ, nanotesla per year.","example":12},"hDotNtPerYear":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Secular-variation rate ḣₙᵐ, nanotesla per year; `null` when `order` is 0, for the same reason as `hNt`.","example":null}},"additionalProperties":false},"MagneticDeclinationCoefficientsMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["magnetic-declination"]},"params":{"type":"object","properties":{"degree":{"type":"integer","minimum":1,"maximum":12},"order":{"type":"integer","minimum":0,"maximum":12}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/coefficients"]},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","route","count"],"additionalProperties":false},"MagneticDeclinationCoefficientsEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MagneticDeclinationCoefficientsRecord"}},"meta":{"$ref":"#/components/schemas/MagneticDeclinationCoefficientsMeta"}},"required":["data","meta"],"additionalProperties":false},"MapTilesFromPointRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"zoom":{"type":"integer","minimum":0,"maximum":24,"description":"Tile matrix id / zoom level. The matrix is 2^zoom tiles per side.","example":14},"x":{"type":"integer","description":"Tile column (OGC `tileCol`): 0 at 180° W, increasing east.","example":8763},"y":{"type":"integer","description":"Tile row (OGC `tileRow`) with `cornerOfOrigin: topLeft` — 0 at the north edge, increasing SOUTH. This is the XYZ convention used by Google Maps, OpenStreetMap, Bing, MapLibre and Leaflet.","example":5128},"tmsY":{"type":"integer","description":"The same row in the OSGeo Tile Map Service convention (`bottomLeft` origin): 2^zoom − 1 − y. Always returned, so the flip is never something you have to guess.","example":11255},"quadkey":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bing Maps quadkey: one base-4 digit per zoom level, most significant first, X bit = +1 and Y bit = +2. A parent's quadkey is always its child's minus the last digit. Null at zoom 0, where the length-equals-zoom rule would give an empty string — null rather than \"\" so it cannot be mistaken for a missing value. Always built from the topLeft row; TMS has no quadkey.","example":"12021000113011"},"zxy":{"type":"string","description":"The conventional `{z}/{x}/{y}` path segment, handy as a cache key. This API serves no map imagery — it is a string, not a URL.","example":"14/8763/5128"},"bounds":{"type":"object","additionalProperties":true,"description":"`{ west, south, east, north }` in WGS 84 decimal degrees, as unrounded float64 results of the published inverse formulas. The rectangle is half-open — `[west, east)` by `[north, south)` — closed only at the global edges.","example":{"west":12.54638671875,"south":55.665193184436056,"east":12.568359375,"north":55.67758441108952}},"boundsMercator":{"type":"object","additionalProperties":true,"description":"`{ minX, minY, maxX, maxY }` in EPSG:3857 metres, from exact grid arithmetic off OGC Annex D.1's `pointOfOrigin` (±20037508.342789244) rather than by projecting `bounds`. Evaluated top-down from the north edge, as OGC §6.1.1 derives it.","example":{"minX":1396657.3808267415,"minY":7492051.764399836,"maxX":1399103.3657318652,"maxY":7494497.749304961}},"center":{"type":"object","additionalProperties":true,"description":"`{ lat, lng }` — the tile's centre. `lng` is the arithmetic midpoint; `lat` is the inverse projection of the pixel-space midpoint (row + 0.5), which is the true centre in the projection and differs from the mean of `north` and `south` around the tenth decimal.","example":{"lat":55.67138928829547,"lng":12.557373046875}},"groundResolution":{"type":"object","additionalProperties":true,"description":"`{ atEquator, atCenterLatitude }` — metres per pixel for 256-px tiles, cos(φ)·2πR/(256·2^zoom). The spherical EPSG:3857 approximation: OGC Annex D.1 NOTE 1 warns the tabulated cell sizes are only valid next to the equator in the E-W direction.","example":{"atEquator":9.554628535647032,"atCenterLatitude":5.388222805829274}},"scaleDenominator":{"type":"object","additionalProperties":true,"description":"`{ atEquator, atCenterLatitude, atCenterLatitude96dpi }`. The first two use OGC §6.1.1's standardized rendering pixel size of 0.28 mm — `atEquator` is the value tabulated in Annex D.1. The third uses Bing's 96-dpi convention (25.4/96 ≈ 0.2646 mm). The two conventions differ by about 5.8 %, which is the most common source of \"your scale is wrong\" confusion.","example":{"atEquator":34123.67334159654,"atCenterLatitude":19243.652877961697,"atCenterLatitude96dpi":20364.936588961038}},"parent":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"`{ z, x, y, quadkey }` of the containing tile one level coarser — floor(x/2), floor(y/2). Null at zoom 0; its inner `quadkey` is null when the parent is zoom 0.","example":{"z":13,"x":4381,"y":2564,"quadkey":"1202100011301"}},"children":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"The four tiles one level finer, in quadkey-digit order (0 = NW, 1 = NE, 2 = SW, 3 = SE), each `{ z, x, y, quadkey }`. An empty array at zoom 24, this API's documented ceiling — never null.","example":[{"z":15,"x":17526,"y":10256,"quadkey":"120210001130110"},{"z":15,"x":17527,"y":10256,"quadkey":"120210001130111"},{"z":15,"x":17526,"y":10257,"quadkey":"120210001130112"},{"z":15,"x":17527,"y":10257,"quadkey":"120210001130113"}]},"pixelX":{"type":"number","description":"Global pixel X at this zoom for 256-px tiles, fractional and unrounded. Bing's reference sample rounds to the nearest integer pixel and clips to mapSize − 1; this API does neither, because flooring the fraction is what yields the OGC/OSM tile index and rounding first can move a point within half a pixel of an edge into the next tile.","example":2243583.308231111},"pixelY":{"type":"number","description":"Global pixel Y at this zoom, same rules: fractional, unrounded, unclipped.","example":1312798.6718793944},"pixelInTile":{"type":"object","additionalProperties":true,"description":"`{ x, y }` — the fractional offset inside the tile, normally 0 ≤ v < 256. At the closed edges of the domain, where the tile index is clamped, it can land exactly on 256 (lng = 180) or a hair outside the range (a latitude at the accepted limit, by about 2.6e-5 px at zoom 14) — the sub-millimetre artefact described on this page, reported rather than hidden.","example":{"x":255.30823111115023,"y":30.67187939444557}}},"additionalProperties":false},"MapTilesFromPointMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["map-tiles"]},"params":{"type":"object","properties":{"lat":{"type":"number","minimum":-85.05112878,"maximum":85.05112878},"lng":{"type":"number","minimum":-180,"maximum":180},"zoom":{"type":"integer","minimum":0,"maximum":24}},"required":["lat","lng","zoom"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/from-point"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"MapTilesFromPointEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MapTilesFromPointRecord"},"meta":{"$ref":"#/components/schemas/MapTilesFromPointMeta"}},"required":["data","meta"],"additionalProperties":false},"MapTilesTileRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"zoom":{"type":"integer","minimum":0,"maximum":24,"description":"Tile matrix id / zoom level. The matrix is 2^zoom tiles per side.","example":14},"x":{"type":"integer","description":"Tile column (OGC `tileCol`): 0 at 180° W, increasing east.","example":8763},"y":{"type":"integer","description":"Tile row (OGC `tileRow`) with `cornerOfOrigin: topLeft` — 0 at the north edge, increasing SOUTH. This is the XYZ convention used by Google Maps, OpenStreetMap, Bing, MapLibre and Leaflet.","example":5128},"tmsY":{"type":"integer","description":"The same row in the OSGeo Tile Map Service convention (`bottomLeft` origin): 2^zoom − 1 − y. Always returned, so the flip is never something you have to guess.","example":11255},"quadkey":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bing Maps quadkey: one base-4 digit per zoom level, most significant first, X bit = +1 and Y bit = +2. A parent's quadkey is always its child's minus the last digit. Null at zoom 0, where the length-equals-zoom rule would give an empty string — null rather than \"\" so it cannot be mistaken for a missing value. Always built from the topLeft row; TMS has no quadkey.","example":"12021000113011"},"zxy":{"type":"string","description":"The conventional `{z}/{x}/{y}` path segment, handy as a cache key. This API serves no map imagery — it is a string, not a URL.","example":"14/8763/5128"},"bounds":{"type":"object","additionalProperties":true,"description":"`{ west, south, east, north }` in WGS 84 decimal degrees, as unrounded float64 results of the published inverse formulas. The rectangle is half-open — `[west, east)` by `[north, south)` — closed only at the global edges.","example":{"west":12.54638671875,"south":55.665193184436056,"east":12.568359375,"north":55.67758441108952}},"boundsMercator":{"type":"object","additionalProperties":true,"description":"`{ minX, minY, maxX, maxY }` in EPSG:3857 metres, from exact grid arithmetic off OGC Annex D.1's `pointOfOrigin` (±20037508.342789244) rather than by projecting `bounds`. Evaluated top-down from the north edge, as OGC §6.1.1 derives it.","example":{"minX":1396657.3808267415,"minY":7492051.764399836,"maxX":1399103.3657318652,"maxY":7494497.749304961}},"center":{"type":"object","additionalProperties":true,"description":"`{ lat, lng }` — the tile's centre. `lng` is the arithmetic midpoint; `lat` is the inverse projection of the pixel-space midpoint (row + 0.5), which is the true centre in the projection and differs from the mean of `north` and `south` around the tenth decimal.","example":{"lat":55.67138928829547,"lng":12.557373046875}},"groundResolution":{"type":"object","additionalProperties":true,"description":"`{ atEquator, atCenterLatitude }` — metres per pixel for 256-px tiles, cos(φ)·2πR/(256·2^zoom). The spherical EPSG:3857 approximation: OGC Annex D.1 NOTE 1 warns the tabulated cell sizes are only valid next to the equator in the E-W direction.","example":{"atEquator":9.554628535647032,"atCenterLatitude":5.388222805829274}},"scaleDenominator":{"type":"object","additionalProperties":true,"description":"`{ atEquator, atCenterLatitude, atCenterLatitude96dpi }`. The first two use OGC §6.1.1's standardized rendering pixel size of 0.28 mm — `atEquator` is the value tabulated in Annex D.1. The third uses Bing's 96-dpi convention (25.4/96 ≈ 0.2646 mm). The two conventions differ by about 5.8 %, which is the most common source of \"your scale is wrong\" confusion.","example":{"atEquator":34123.67334159654,"atCenterLatitude":19243.652877961697,"atCenterLatitude96dpi":20364.936588961038}},"parent":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"`{ z, x, y, quadkey }` of the containing tile one level coarser — floor(x/2), floor(y/2). Null at zoom 0; its inner `quadkey` is null when the parent is zoom 0.","example":{"z":13,"x":4381,"y":2564,"quadkey":"1202100011301"}},"children":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"The four tiles one level finer, in quadkey-digit order (0 = NW, 1 = NE, 2 = SW, 3 = SE), each `{ z, x, y, quadkey }`. An empty array at zoom 24, this API's documented ceiling — never null.","example":[{"z":15,"x":17526,"y":10256,"quadkey":"120210001130110"},{"z":15,"x":17527,"y":10256,"quadkey":"120210001130111"},{"z":15,"x":17526,"y":10257,"quadkey":"120210001130112"},{"z":15,"x":17527,"y":10257,"quadkey":"120210001130113"}]}},"additionalProperties":false},"MapTilesTileMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["map-tiles"]},"params":{"type":"object","properties":{"z":{"type":"integer","minimum":0,"maximum":24},"x":{"type":"integer","minimum":0,"maximum":16777215},"y":{"type":"integer","minimum":0,"maximum":16777215},"scheme":{"type":"string","enum":["xyz","tms"]}},"required":["z","x","y","scheme"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/tile"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"MapTilesTileEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MapTilesTileRecord"},"meta":{"$ref":"#/components/schemas/MapTilesTileMeta"}},"required":["data","meta"],"additionalProperties":false},"MapTilesQuadkeyRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"zoom":{"type":"integer","minimum":0,"maximum":24,"description":"Tile matrix id / zoom level. The matrix is 2^zoom tiles per side.","example":14},"x":{"type":"integer","description":"Tile column (OGC `tileCol`): 0 at 180° W, increasing east.","example":8763},"y":{"type":"integer","description":"Tile row (OGC `tileRow`) with `cornerOfOrigin: topLeft` — 0 at the north edge, increasing SOUTH. This is the XYZ convention used by Google Maps, OpenStreetMap, Bing, MapLibre and Leaflet.","example":5128},"tmsY":{"type":"integer","description":"The same row in the OSGeo Tile Map Service convention (`bottomLeft` origin): 2^zoom − 1 − y. Always returned, so the flip is never something you have to guess.","example":11255},"quadkey":{"type":"string","description":"Bing Maps quadkey, echoed exactly as validated: one base-4 digit per zoom level, most significant first, X bit = +1 and Y bit = +2. A parent's quadkey is always its child's minus the last digit.","example":"12021000113011"},"zxy":{"type":"string","description":"The conventional `{z}/{x}/{y}` path segment, handy as a cache key. This API serves no map imagery — it is a string, not a URL.","example":"14/8763/5128"},"bounds":{"type":"object","additionalProperties":true,"description":"`{ west, south, east, north }` in WGS 84 decimal degrees, as unrounded float64 results of the published inverse formulas. The rectangle is half-open — `[west, east)` by `[north, south)` — closed only at the global edges.","example":{"west":12.54638671875,"south":55.665193184436056,"east":12.568359375,"north":55.67758441108952}},"boundsMercator":{"type":"object","additionalProperties":true,"description":"`{ minX, minY, maxX, maxY }` in EPSG:3857 metres, from exact grid arithmetic off OGC Annex D.1's `pointOfOrigin` (±20037508.342789244) rather than by projecting `bounds`. Evaluated top-down from the north edge, as OGC §6.1.1 derives it.","example":{"minX":1396657.3808267415,"minY":7492051.764399836,"maxX":1399103.3657318652,"maxY":7494497.749304961}},"center":{"type":"object","additionalProperties":true,"description":"`{ lat, lng }` — the tile's centre. `lng` is the arithmetic midpoint; `lat` is the inverse projection of the pixel-space midpoint (row + 0.5), which is the true centre in the projection and differs from the mean of `north` and `south` around the tenth decimal.","example":{"lat":55.67138928829547,"lng":12.557373046875}},"groundResolution":{"type":"object","additionalProperties":true,"description":"`{ atEquator, atCenterLatitude }` — metres per pixel for 256-px tiles, cos(φ)·2πR/(256·2^zoom). The spherical EPSG:3857 approximation: OGC Annex D.1 NOTE 1 warns the tabulated cell sizes are only valid next to the equator in the E-W direction.","example":{"atEquator":9.554628535647032,"atCenterLatitude":5.388222805829274}},"scaleDenominator":{"type":"object","additionalProperties":true,"description":"`{ atEquator, atCenterLatitude, atCenterLatitude96dpi }`. The first two use OGC §6.1.1's standardized rendering pixel size of 0.28 mm — `atEquator` is the value tabulated in Annex D.1. The third uses Bing's 96-dpi convention (25.4/96 ≈ 0.2646 mm). The two conventions differ by about 5.8 %, which is the most common source of \"your scale is wrong\" confusion.","example":{"atEquator":34123.67334159654,"atCenterLatitude":19243.652877961697,"atCenterLatitude96dpi":20364.936588961038}},"parent":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"`{ z, x, y, quadkey }` of the containing tile one level coarser — floor(x/2), floor(y/2). Null at zoom 0; its inner `quadkey` is null when the parent is zoom 0.","example":{"z":13,"x":4381,"y":2564,"quadkey":"1202100011301"}},"children":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"The four tiles one level finer, in quadkey-digit order (0 = NW, 1 = NE, 2 = SW, 3 = SE), each `{ z, x, y, quadkey }`. An empty array at zoom 24, this API's documented ceiling — never null.","example":[{"z":15,"x":17526,"y":10256,"quadkey":"120210001130110"},{"z":15,"x":17527,"y":10256,"quadkey":"120210001130111"},{"z":15,"x":17526,"y":10257,"quadkey":"120210001130112"},{"z":15,"x":17527,"y":10257,"quadkey":"120210001130113"}]}},"additionalProperties":false},"MapTilesQuadkeyMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["map-tiles"]},"params":{"type":"object","properties":{"value":{"type":"string","minLength":1,"maxLength":24}},"required":["value"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/quadkey"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"MapTilesQuadkeyEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MapTilesQuadkeyRecord"},"meta":{"$ref":"#/components/schemas/MapTilesQuadkeyMeta"}},"required":["data","meta"],"additionalProperties":false},"MapTilesCoverRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"zoom":{"type":"integer","minimum":0,"maximum":24,"description":"Zoom level the range was computed at.","example":12},"bbox":{"type":"object","additionalProperties":true,"description":"`{ west, south, east, north }` — the requested box echoed in OGC/GeoJSON axis order, so it reads the same way as in any GIS tool.","example":{"west":12.4,"south":55.6,"east":12.7,"north":55.8}},"tileRange":{"type":"object","additionalProperties":true,"description":"`{ minX, minY, maxX, maxY }`, all inclusive and clamped at both ends into 0..2^zoom − 1, from OGC Annex I.1's epsilon-guarded algorithm. An edge within 1e-6 of a tile span of a boundary is treated as lying on that boundary — about 40 m at zoom 0 and 2.4 mm at zoom 14 — so a point inside that band can be reported by /from-point in the adjacent tile.","example":{"minX":2189,"minY":1279,"maxX":2192,"maxY":1283}},"columns":{"type":"integer","description":"maxX − minX + 1.","example":4},"rows":{"type":"integer","description":"maxY − minY + 1.","example":5},"tileCount":{"type":"integer","description":"columns × rows — exact at every supported zoom, with or without the list. The worst case, the whole world at zoom 24, is 2^48 = 281474976710656, well inside the safe integer range.","example":20},"tilesIncluded":{"type":"boolean","description":"True when 'tiles' lists every covering tile. Only ever false when includeTiles=false; the array is never a partial subset.","example":true},"tiles":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"`{ z, x, y, tmsY, quadkey }` per tile, row-major (y outer, x inner). Empty when tilesIncluded is false. Per-tile bounds are not repeated here — call /tile for those.","example":[{"z":12,"x":2189,"y":1279,"tmsY":2816,"quadkey":"120032223323"},{"z":12,"x":2190,"y":1279,"tmsY":2816,"quadkey":"120032223332"}]}},"additionalProperties":false},"MapTilesCoverMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["map-tiles"]},"params":{"type":"object","properties":{"minLat":{"type":"number","minimum":-85.05112878,"maximum":85.05112878},"minLng":{"type":"number","minimum":-180,"maximum":180},"maxLat":{"type":"number","minimum":-85.05112878,"maximum":85.05112878},"maxLng":{"type":"number","minimum":-180,"maximum":180},"zoom":{"type":"integer","minimum":0,"maximum":24},"includeTiles":{"type":"boolean"},"maxTiles":{"type":"integer","minimum":1,"maximum":1024}},"required":["minLat","minLng","maxLat","maxLng","zoom","includeTiles","maxTiles"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/cover"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"MapTilesCoverEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MapTilesCoverRecord"},"meta":{"$ref":"#/components/schemas/MapTilesCoverMeta"}},"required":["data","meta"],"additionalProperties":false},"MapTilesMercatorRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"direction":{"type":"string","description":"\"forward\" when lat/lng were supplied, \"inverse\" when x/y were.","example":"forward"},"latitude":{"type":"number","description":"WGS 84 latitude in degrees — echoed on forward, computed on inverse.","example":55.6761},"longitude":{"type":"number","description":"WGS 84 longitude in degrees — echoed on forward, computed on inverse.","example":12.5683},"easting":{"type":"number","description":"EPSG:3857 X in metres, R·λ — computed on forward, echoed on inverse.","example":1399096.7561371003},"northing":{"type":"number","description":"EPSG:3857 Y in metres, R·atanh(sin φ) — computed on forward, echoed on inverse. Exactly 0 at the equator, which the tempting ln(tan(π/4 + φ/2)) form is not.","example":7494204.690890856}},"additionalProperties":false},"MapTilesMercatorMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["map-tiles"]},"params":{"type":"object","properties":{"lat":{"type":"number","minimum":-85.05112878,"maximum":85.05112878},"lng":{"type":"number","minimum":-180,"maximum":180},"x":{"type":"number","minimum":-20037508.344,"maximum":20037508.344},"y":{"type":"number","minimum":-20037508.344,"maximum":20037508.344}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/mercator"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"MapTilesMercatorEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MapTilesMercatorRecord"},"meta":{"$ref":"#/components/schemas/MapTilesMercatorMeta"}},"required":["data","meta"],"additionalProperties":false},"MarkdownRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"markdown":{"type":"string","description":"The complete document: H1 title, intro paragraph, then the H2 sections with the enabled features distributed among them.","example":"# Practical Cache Strategies\n\nVeniam consequatur voluptas nihil tempora.\n\n## Getting Started\n\nQuia sequi rerum aut facilis. See [the deploy guide](https://example.com/docs/deploy) for the full reference.\n\n- Voluptas nihil tempora\n- Quia sequi rerum\n- Aut facilis numquam"},"wordCount":{"type":"integer","description":"Whitespace-separated token count of the exact markdown string (syntax included).","example":214},"sections":{"type":"integer","description":"Number of H2 sections in the document — echoes the sections parameter.","example":3}},"additionalProperties":false},"MarkdownRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["markdown"]},"params":{"type":"object","properties":{"sections":{"type":"integer","minimum":1,"maximum":10},"codeBlocks":{"type":"boolean"},"tables":{"type":"boolean"},"lists":{"type":"boolean"},"links":{"type":"boolean"},"images":{"type":"boolean"}},"required":["sections","codeBlocks","tables","lists","links","images"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"MarkdownRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MarkdownRootRecord"}},"meta":{"$ref":"#/components/schemas/MarkdownRootMeta"}},"required":["data","meta"],"additionalProperties":false},"MimeTypesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"mimeType":{"type":"string","description":"The full media type (type/subtype), lowercase. Media types are case-insensitive (RFC 2045 §5.1); IANA spells some registrations with capitals.","example":"application/pdf"},"extensions":{"type":"array","items":{"type":"string"},"description":"File extensions associated with this type (lowercase, no dot, sorted). Empty for the many registered types that have no conventional extension. Some extensions are claimed by more than one type — /lookup?ext= resolves those to one answer and names the alternatives.","example":["pdf"]},"category":{"type":"string","description":"Top-level type, one of: application | audio | chemical | font | haptics | image | message | model | multipart | text | video | x-conference | x-shader.","example":"application"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"One practical sentence about the format, written for this API — IANA publishes no prose. null for registry rows nobody has annotated, which is most of them; a made-up sentence would be worse than none.","example":"Portable Document Format (RFC 8118)."},"compressible":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether gzip/brotli meaningfully shrinks typical content of this type (text-based formats yes; already-compressed containers no). null when mime-db has no judgement.","example":false},"registered":{"type":"boolean","description":"Whether the type appears in the IANA Media Types registry. false marks a de-facto type real servers send that was never registered (video/x-matroska, text/x-python…).","example":true},"reference":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IANA's Reference cell, verbatim — the defining RFC, standards body or registrant. null for unregistered types.","example":"[RFC8118]"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IANA's own annotation on the registration, verbatim — this is how the registry marks a type deprecated or obsoleted. null for all but a handful of rows.","example":"OBSOLETED in favor of text/javascript"}},"additionalProperties":false},"MimeTypesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["mime-types"]},"params":{"type":"object","properties":{"category":{"type":"string","enum":["application","audio","chemical","font","haptics","image","message","model","multipart","text","video","x-conference","x-shader","any"]},"search":{"type":"string"},"registered":{"type":"string","enum":["any","yes","no"]},"hasExtension":{"type":"string","enum":["any","yes","no"]}},"required":["category","registered","hasExtension"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","count"],"additionalProperties":false},"MimeTypesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MimeTypesRootRecord"}},"meta":{"$ref":"#/components/schemas/MimeTypesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"MimeTypesLookupRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"mimeType":{"type":"string","description":"The full media type (type/subtype), lowercase. Media types are case-insensitive (RFC 2045 §5.1); IANA spells some registrations with capitals.","example":"application/pdf"},"extensions":{"type":"array","items":{"type":"string"},"description":"File extensions associated with this type (lowercase, no dot, sorted). Empty for the many registered types that have no conventional extension. Some extensions are claimed by more than one type — /lookup?ext= resolves those to one answer and names the alternatives.","example":["pdf"]},"category":{"type":"string","description":"Top-level type, one of: application | audio | chemical | font | haptics | image | message | model | multipart | text | video | x-conference | x-shader.","example":"application"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"One practical sentence about the format, written for this API — IANA publishes no prose. null for registry rows nobody has annotated, which is most of them; a made-up sentence would be worse than none.","example":"Portable Document Format (RFC 8118)."},"compressible":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether gzip/brotli meaningfully shrinks typical content of this type (text-based formats yes; already-compressed containers no). null when mime-db has no judgement.","example":false},"registered":{"type":"boolean","description":"Whether the type appears in the IANA Media Types registry. false marks a de-facto type real servers send that was never registered (video/x-matroska, text/x-python…).","example":true},"reference":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IANA's Reference cell, verbatim — the defining RFC, standards body or registrant. null for unregistered types.","example":"[RFC8118]"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IANA's own annotation on the registration, verbatim — this is how the registry marks a type deprecated or obsoleted. null for all but a handful of rows.","example":"OBSOLETED in favor of text/javascript"}},"additionalProperties":false},"MimeTypesLookupMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["mime-types"]},"params":{"type":"object","properties":{"ext":{"type":"string"},"type":{"type":"string"}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/lookup"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"MimeTypesLookupEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MimeTypesLookupRecord"},"meta":{"$ref":"#/components/schemas/MimeTypesLookupMeta"}},"required":["data","meta"],"additionalProperties":false},"MimeTypesParseRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"contentType":{"type":"string","description":"Canonical type/subtype plus normalized parameter syntax.","example":"application/problem+json;charset=utf-8;profile=\"https://example.test/problem\""},"mimeType":{"type":"string","description":"Lowercase type/subtype essence without parameters.","example":"application/problem+json"},"type":{"type":"string","description":"Lowercase top-level media type.","example":"application"},"subtype":{"type":"string","description":"Lowercase media subtype, including any structured suffix.","example":"problem+json"},"suffix":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Structured syntax suffix after the last +, or null.","example":"json"},"parameters":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Ordered lowercase names with decoded token/quoted values.","example":[{"name":"charset","value":"utf-8"}]},"known":{"type":"boolean","description":"Whether the essence appears in this endpoint's dataset (the IANA registry plus de-facto types).","example":true},"registered":{"type":"boolean","description":"Whether the essence is in the IANA Media Types registry snapshot. false for a valid but unregistered type.","example":true},"extensions":{"type":"array","items":{"type":"string"},"description":"Known file extensions, or an empty list for a type with none.","example":["json"]},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Top-level type when known, otherwise null.","example":"application"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curated practical description when one has been written, otherwise null.","example":"JSON data (RFC 8259); .map covers JavaScript source maps."},"compressible":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Compression guidance when known, otherwise null.","example":true},"reference":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IANA's Reference cell for the essence, verbatim; null when unregistered or unknown.","example":"[RFC8259]"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IANA's deprecation annotation for the essence, verbatim; null for almost every type.","example":"OBSOLETED in favor of text/javascript"}},"additionalProperties":false},"MimeTypesParseMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["mime-types"]},"params":{"type":"object","properties":{"value":{"type":"string","minLength":3,"maxLength":2048}},"required":["value"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/parse"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"MimeTypesParseEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MimeTypesParseRecord"},"meta":{"$ref":"#/components/schemas/MimeTypesParseMeta"}},"required":["data","meta"],"additionalProperties":false},"MoneyToMinorRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"currency":{"type":"string","description":"Canonical uppercase ISO 4217 code.","example":"DKK"},"decimalDigits":{"type":"integer","description":"ISO 4217 minor-unit exponent used for the exact conversion.","example":2},"amount":{"type":"string","description":"Canonical fixed-scale major-unit amount.","example":"123.45"},"minorUnits":{"type":"string","description":"Exact signed integer minor-unit value.","example":"12345"}},"additionalProperties":false},"MoneyToMinorMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["money"]},"params":{"type":"object","properties":{"amount":{"type":"string","minLength":1,"maxLength":72},"currency":{"type":"string","minLength":3,"maxLength":3}},"required":["amount","currency"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/to-minor"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"MoneyToMinorEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MoneyToMinorRecord"},"meta":{"$ref":"#/components/schemas/MoneyToMinorMeta"}},"required":["data","meta"],"additionalProperties":false},"MoneyFromMinorRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"currency":{"type":"string","description":"Canonical uppercase ISO 4217 code.","example":"DKK"},"decimalDigits":{"type":"integer","description":"ISO 4217 minor-unit exponent used for the exact conversion.","example":2},"minorUnits":{"type":"string","description":"Canonical signed integer minor-unit value.","example":"12345"},"amount":{"type":"string","description":"Exact fixed-scale major-unit amount.","example":"123.45"}},"additionalProperties":false},"MoneyFromMinorMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["money"]},"params":{"type":"object","properties":{"minor":{"type":"string","minLength":1,"maxLength":72},"currency":{"type":"string","minLength":3,"maxLength":3}},"required":["minor","currency"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/from-minor"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"MoneyFromMinorEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MoneyFromMinorRecord"},"meta":{"$ref":"#/components/schemas/MoneyFromMinorMeta"}},"required":["data","meta"],"additionalProperties":false},"MoneyAllocateRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"currency":{"type":"string","description":"Canonical uppercase ISO 4217 code.","example":"DKK"},"decimalDigits":{"type":"integer","description":"ISO 4217 minor-unit exponent used for the exact conversion.","example":2},"amount":{"type":"string","description":"Canonical amount that was allocated.","example":"10.00"},"minorUnits":{"type":"string","description":"Exact total in minor units.","example":"1000"},"totalWeight":{"type":"string","description":"Sum of all normalized positive weights.","example":"3"},"allocations":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Input-order shares with index, weight, exact minorUnits and fixed-scale amount; their sum equals the input exactly.","example":[{"index":0,"weight":"1","minorUnits":"334","amount":"3.34"},{"index":1,"weight":"1","minorUnits":"333","amount":"3.33"},{"index":2,"weight":"1","minorUnits":"333","amount":"3.33"}]}},"additionalProperties":false},"MoneyAllocateMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["money"]},"params":{"type":"object","properties":{"amount":{"type":"string","minLength":1,"maxLength":72},"currency":{"type":"string","minLength":3,"maxLength":3},"weights":{"type":"string","minLength":1,"maxLength":199}},"required":["amount","currency","weights"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/allocate"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"MoneyAllocateEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MoneyAllocateRecord"},"meta":{"$ref":"#/components/schemas/MoneyAllocateMeta"}},"required":["data","meta"],"additionalProperties":false},"MoonPhaseRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"at":{"type":"string","format":"date-time","description":"The evaluated instant in UTC.","example":"2026-07-29T14:36:00.000Z"},"timezone":{"type":"string","description":"Canonical IANA id used to render `localTime` and every `local` inside the phase objects. It never moves the instant.","example":"Europe/Copenhagen"},"localTime":{"type":"string","description":"Naive local wall clock of `at` in `timezone`.","example":"2026-07-29T16:36:00"},"illuminatedFraction":{"type":"number","minimum":0,"maximum":1,"description":"Fraction of the Moon's apparent disk that is sunlit, 0 at new and 1 at full. Geocentric — a topocentric observer's value differs by up to about 0.7 percentage points near the horizon. It never quite reaches 0 or 1: rounded to the five decimals returned here, the primary instants of 2026-2030 span 0.99811 to 1 at full and 0 to 0.00192 at new.","example":0.99967},"phaseAngleDegrees":{"type":"number","minimum":0,"maximum":180,"description":"Sun–Moon–Earth phase angle, derived from the true geocentric Sun–Earth–Moon separation, which includes the Moon's ecliptic latitude. It reaches exactly 0° at full and 180° at new **only when the Moon is at a node — that is, at an eclipse**: measured over every primary instant of 2026-2030 the full moons span 0.01°-4.99° and the new moons 174.98°-179.86°, so neither endpoint is ever actually attained.","example":2.073},"elongationDegrees":{"type":"number","minimum":0,"maximum":360,"description":"Geocentric elongation of the Moon east of the Sun in apparent ecliptic longitude: 0° new, 90° first quarter, 180° full, 270° last quarter. This is the quantity `phaseName`, `waxing` and the primary-phase root solve are all derived from.","example":180.0031},"phaseName":{"type":"string","description":"Conventional name for `elongationDegrees`: `new`, `waxing-crescent`, `first-quarter`, `waxing-gibbous`, `full`, `waning-gibbous`, `last-quarter` or `waning-crescent`. **The sector boundaries are this API's documented convention, not a standard** — eight 45°-wide sectors centred on the four primary instants (`new` is 337.5°–360° and 0°–22.5°, `waxing-crescent` 22.5°–67.5°, and so on). Other publishers bin differently, so near a boundary a name can disagree with theirs; `nextPrimaryPhase` and /api/moon/phases carry the exact instants.","example":"full"},"waxing":{"type":"boolean","description":"True while `elongationDegrees` is in [0, 180) — the illuminated fraction is growing. Exactly 180.0 is reported as false (waning).","example":false},"ageDays":{"type":"number","description":"Days elapsed since `previousNewMoon.instant`. Ranges 0 to about 29.83, and is exactly 0 at a published new-moon instant.","example":15.20313},"lunationNumber":{"type":"integer","description":"Brown Lunation Number of the cycle `at` falls in — lunation 1 is the cycle that began at the new moon of 1923 January 17 (02:41 UT). Always equal to the lunation of `previousNewMoon`.","example":1281},"distanceKm":{"type":"number","description":"Geometric geocentric centre-to-centre distance in km. Sampled hourly over 2026-2036 it ranges 356 445.9 to 406 670.5.","example":399616.1},"apparentDiameterDegrees":{"type":"number","description":"Geocentric apparent angular diameter of the lunar disk, from the IAU mean lunar radius applied to the horizontal parallax. Measured over 2026-2036 it ranges 0.4896° to 0.5585°.","example":0.4982},"previousNewMoon":{"type":"object","additionalProperties":true,"description":"The new-moon instant that starts this lunation. Object with `instant` (UTC ISO 8601, whole seconds), `local` (naive wall clock in `tz`) and `deltaTSeconds`, the TT−UT offset applied to convert the Terrestrial-Time solve to UTC, so the conversion is auditable.","example":{"instant":"2026-07-14T09:43:30.000Z","local":"2026-07-14T11:43:30","deltaTSeconds":75.4}},"nextPrimaryPhase":{"type":"object","additionalProperties":true,"description":"The next of the four primary phases strictly after `at`, with `phase` naming which one (`new`, `first-quarter`, `full` or `last-quarter`). Object with `instant` (UTC ISO 8601, whole seconds), `local` (naive wall clock in `tz`) and `deltaTSeconds`, the TT−UT offset applied to convert the Terrestrial-Time solve to UTC, so the conversion is auditable.","example":{"phase":"last-quarter","instant":"2026-08-06T02:21:22.000Z","local":"2026-08-06T04:21:22","deltaTSeconds":75.5}},"nextFullMoon":{"type":"object","additionalProperties":true,"description":"The next full-moon instant strictly after `at`; at a published full-moon instant this is the following month's. Object with `instant` (UTC ISO 8601, whole seconds), `local` (naive wall clock in `tz`) and `deltaTSeconds`, the TT−UT offset applied to convert the Terrestrial-Time solve to UTC, so the conversion is auditable.","example":{"instant":"2026-08-28T04:18:25.000Z","local":"2026-08-28T06:18:25","deltaTSeconds":75.5}}},"additionalProperties":false},"MoonPhaseMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["moon"]},"params":{"type":"object","properties":{"at":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"tz":{"type":"string"}},"required":["tz"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/phase"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"MoonPhaseEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MoonPhaseRecord"},"meta":{"$ref":"#/components/schemas/MoonPhaseMeta"}},"required":["data","meta"],"additionalProperties":false},"MoonTimesRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"date":{"type":"string","format":"date","description":"The local civil date the results describe, in the resolved zone.","example":"2026-07-29"},"timezone":{"type":"string","description":"Canonical IANA id used to resolve the local date, its start and end instants, and every `local` wall clock.","example":"Europe/Copenhagen"},"latitude":{"type":"number","description":"Observer latitude in decimal degrees, echoed as supplied.","example":55.6761},"longitude":{"type":"number","description":"Observer longitude in decimal degrees, echoed as supplied.","example":12.5683},"moonrise":{"type":"object","additionalProperties":true,"description":"First moonrise inside the local date — the Moon's upper limb apparently touching the horizon. Object with `instant` (UTC ISO 8601, whole seconds), `local` (naive wall clock in `tz`), `azimuthDegrees` (compass bearing at the crossing, 0° = north increasing clockwise) and `reason`. On an ordinary date `reason` is null; when the event does not happen all three others are null and `reason` is `crossing-falls-on-another-date`, `above-horizon-all-day` or `below-horizon-all-day`. No placeholder time is ever substituted.","example":{"instant":"2026-07-29T19:35:56.000Z","local":"2026-07-29T21:35:56","azimuthDegrees":127.07,"reason":null}},"moonset":{"type":"object","additionalProperties":true,"description":"First moonset inside the local date. **May be earlier than `moonrise`**: on the example date the Moon set at 04:23 local and rose again at 21:35. Object with `instant` (UTC ISO 8601, whole seconds), `local` (naive wall clock in `tz`), `azimuthDegrees` (compass bearing at the crossing, 0° = north increasing clockwise) and `reason`. On an ordinary date `reason` is null; when the event does not happen all three others are null and `reason` is `crossing-falls-on-another-date`, `above-horizon-all-day` or `below-horizon-all-day`. No placeholder time is ever substituted.","example":{"instant":"2026-07-29T02:23:54.000Z","local":"2026-07-29T04:23:54","azimuthDegrees":226.84,"reason":null}},"upperTransit":{"type":"object","additionalProperties":true,"description":"First upper meridian transit inside the local date: `{ instant, local, altitudeDegrees, reason }`, where `altitudeDegrees` is the topocentric geometric altitude at culmination (no refraction). Its UTC date can be the previous day, and the altitude can be negative — this endpoint publishes a transit that culminates below the horizon, which the USNO omits. `reason` is `crossing-falls-on-another-date` when the transit lands on a neighbouring local date, and then all three other members are null.","example":{"instant":"2026-07-28T22:48:09.000Z","local":"2026-07-29T00:48:09","altitudeDegrees":10.3,"reason":null}},"aboveHorizonSeconds":{"type":"integer","minimum":0,"maximum":172800,"description":"Seconds inside this local civil date during which the Moon's upper limb is above the horizon, summed over every above-horizon interval, and never more than the length of the local date itself. **The upper bound is not 86400**: a local date is 23 or 25 hours long on a daylight-saving change, some zones shift by 30 or 45 minutes, and a historical date-line or standard-offset jump can make one local date far longer than a day — sweeping every IANA zone over 1900-2100 finds 150 such dates in 44 zones, the longest being Pacific/Kwajalein 1969-09-30 at 47 hours (169 200 s), where at a high enough latitude the Moon stays up for all of it.","example":24478},"illuminatedFractionAtTransit":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}],"description":"Geocentric illuminated fraction at the instant of `upperTransit` — the observationally meaningful value for that night, and generally *not* the value at local noon that almanacs print for the date. `null` on a date with no upper transit. For any other anchor call /api/moon/phase with an explicit `at`.","example":0.99533},"extraEvents":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Any *additional* rise, set or upper transit on the same local date beyond the first of each kind, chronologically: `{ type, instant, local }` with `type` one of `moonrise`, `moonset`, `upper-transit`. Empty on almost every date: from about 63° of latitude upward the daily retardation can put two events of the same kind inside one local date, which over the whole of 2026 happens on 2 dates at 63°N and 5 at 72°N. This is where they appear instead of being dropped.","example":[]}},"additionalProperties":false},"MoonTimesMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["moon"]},"params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180},"date":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"tz":{"type":"string"}},"required":["lat","lng","tz"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/times"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"MoonTimesEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MoonTimesRecord"},"meta":{"$ref":"#/components/schemas/MoonTimesMeta"}},"required":["data","meta"],"additionalProperties":false},"MoonPositionRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"at":{"type":"string","format":"date-time","description":"The evaluated instant in UTC.","example":"2026-07-29T00:00:00.000Z"},"timezone":{"type":"string","description":"Canonical IANA id used to render `localTime`. It does not move the instant.","example":"Europe/Copenhagen"},"localTime":{"type":"string","description":"Naive local wall clock of the same instant.","example":"2026-07-29T02:00:00"},"latitude":{"type":"number","description":"Observer latitude, echoed as supplied.","example":55.6761},"longitude":{"type":"number","description":"Observer longitude, echoed as supplied.","example":12.5683},"altitudeDegrees":{"type":"number","minimum":-90,"maximum":90,"description":"Topocentric geometric altitude of the Moon's centre above the true horizon. No refraction correction, so near the horizon the apparent Moon sits roughly 0.57° higher. Observer elevation is taken as sea level.","example":9.0873},"azimuthDegrees":{"type":"number","minimum":0,"maximum":360,"description":"Compass bearing, 0° = north increasing clockwise. Within a hair of the zenith or of a pole the bearing is geometrically undefined and the meridian convention is reported instead: 180 for an observer north of the equator, 0 otherwise — the same convention /api/sun uses.","example":196.2188},"rightAscensionDegrees":{"type":"number","minimum":0,"maximum":360,"description":"Apparent topocentric right ascension, referred to the **true equator and equinox of date**. Not the ICRF/J2000 value — comparing it against an astrometric ICRF ephemeris shows the accumulated precession, not an error.","example":301.6825},"declinationDegrees":{"type":"number","minimum":-90,"maximum":90,"description":"Apparent topocentric declination, true equator of date.","example":-23.8409},"distanceKm":{"type":"number","description":"Topocentric centre-to-centre distance in km — up to about 6 400 km shorter than the geocentric distance /api/moon/phase reports, because the observer is off the Earth's centre.","example":400076.5},"horizontalParallaxDegrees":{"type":"number","description":"Geocentric horizontal parallax of the Moon — `asin(6378.137 km / distance)` on the WGS 84 equatorial radius. Measured over 2026-2036 it ranges 0.8987° to 1.0253°.","example":0.911},"apparentDiameterDegrees":{"type":"number","description":"Topocentric apparent angular diameter of the lunar disk.","example":0.4976},"parallacticAngleDegrees":{"type":"number","minimum":-180,"maximum":180,"description":"Angle at the Moon between the direction to the celestial north pole and the direction to the zenith. Implementations disagree on the sign, so the convention here is stated operationally: `atan2(cos φ · sin H, sin φ · cos δ − cos φ · sin δ · cos H)` with H the local hour angle — 0 at upper transit for an object south of the zenith, positive after transit (object west of the meridian), and ±180 near lower transit.","example":9.9148},"hourAngleDegrees":{"type":"number","minimum":-180,"maximum":180,"description":"Local apparent hour angle of the Moon: 0 at upper transit, negative before it, positive after. It advances at about 14.49° per hour, not 15° — the Moon's own eastward motion is subtracted.","example":17.5494},"aboveHorizon":{"type":"boolean","description":"True when the Moon's upper limb is above the horizon by the *same* definition /api/moon/times uses for moonrise and moonset, so the two routes always agree.","example":true}},"additionalProperties":false},"MoonPositionMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["moon"]},"params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180},"at":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"tz":{"type":"string"}},"required":["lat","lng","tz"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/position"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"MoonPositionEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MoonPositionRecord"},"meta":{"$ref":"#/components/schemas/MoonPositionMeta"}},"required":["data","meta"],"additionalProperties":false},"MoonPhasesRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"phase":{"type":"string","description":"One of `new`, `first-quarter`, `full` or `last-quarter`.","example":"full"},"instant":{"type":"string","format":"date-time","description":"The exact instant of the phase in UTC, rounded to the second.","example":"2026-07-29T14:35:36.000Z"},"local":{"type":"string","description":"Naive local wall clock of the same instant in `tz`.","example":"2026-07-29T16:35:36"},"localDate":{"type":"string","format":"date","description":"The local civil date in `tz` the instant falls on — the value `year` filters against.","example":"2026-07-29"},"lunationNumber":{"type":"integer","description":"Brown Lunation Number of the cycle this phase belongs to (lunation 1 began at the new moon of 1923 January 17). All four phases of one cycle share it.","example":1281},"deltaTSeconds":{"type":"number","description":"The TT−UT offset applied to convert the Terrestrial-Time solve to UTC, so the conversion is auditable.","example":75.4}},"additionalProperties":false},"MoonPhasesMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["moon"]},"params":{"type":"object","properties":{"year":{"type":"integer","minimum":1900,"maximum":2100},"phase":{"type":"string","enum":["new","first-quarter","full","last-quarter"]},"tz":{"type":"string"}},"required":["tz"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/phases"]},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","route","count"],"additionalProperties":false},"MoonPhasesEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MoonPhasesRecord"}},"meta":{"$ref":"#/components/schemas/MoonPhasesMeta"}},"required":["data","meta"],"additionalProperties":false},"MrzRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"type":{"type":"string","description":"MRZ document format of this record: td1, td2, td3, mrva or mrvb.","example":"td3"},"mrz":{"type":"string","description":"The complete machine readable zone, lines joined with a newline.","example":"PPUTOKLOCKO<<ADALINE<<<<<<<<<<<<<<<<<<<<<<<<\nSPECIMEN91UTO9607011F2907022<<<<<<<<<<<<<<02"},"lines":{"type":"array","items":{"type":"string"},"description":"The individual machine readable lines, each exactly lineLength characters.","example":["PPUTOKLOCKO<<ADALINE<<<<<<<<<<<<<<<<<<<<<<<<","SPECIMEN91UTO9607011F2907022<<<<<<<<<<<<<<02"]},"lineLength":{"type":"integer","description":"Exact character count of every line in this format (30, 36 or 44).","example":44},"documentCode":{"type":"string","description":"Positions 1-2 of the first line: PP for the TD3 passport, I< for TD1/TD2, V< for a visa.","example":"PP"},"issuingState":{"type":"string","description":"Issuing State code — always UTO, the ICAO specimen code for Utopia.","example":"UTO"},"nationality":{"type":"string","description":"Nationality code — always UTO, the ICAO specimen code for Utopia.","example":"UTO"},"documentNumber":{"type":"string","description":"Nine-character synthetic document number: the literal word SPECIMEN plus one digit.","example":"SPECIMEN9"},"primaryIdentifier":{"type":"string","description":"Full transliterated primary identifier (surname), before any truncation.","example":"KLOCKO"},"secondaryIdentifier":{"type":"string","description":"Full transliterated secondary identifier (given names), before any truncation. Empty for the roughly one record in eight that has no secondary identifier at all.","example":"ADALINE"},"nameField":{"type":"string","description":"The name field exactly as written in the MRZ, padded or truncated to its fixed width.","example":"KLOCKO<<ADALINE<<<<<<<<<<<<<<<<<<<<<<<<"},"nameTruncated":{"type":"boolean","description":"Whether the assembled name did not fit the field and was shortened.","example":false},"sex":{"type":"string","description":"MRZ sex character: M, F or < for unspecified (the printed page shows X).","example":"F"},"dateOfBirth":{"type":"string","format":"date","description":"Date of birth in full; the MRZ itself carries only the six digits YYMMDD.","example":"1996-07-01"},"dateOfExpiry":{"type":"string","format":"date","description":"Expiry date in full; the MRZ itself carries only the six digits YYMMDD.","example":"2029-07-02"},"ageYears":{"type":"integer","description":"Completed years between dateOfBirth and the resolved asOf anchor.","example":30},"expired":{"type":"boolean","description":"Whether dateOfExpiry is earlier than the resolved asOf anchor.","example":false},"optionalData":{"type":"array","items":{"type":"string"},"description":"Optional-data / personal-number field(s) in MRZ order — always all filler here (TD1 has two, every other format one).","example":["<<<<<<<<<<<<<<"]},"checkDigits":{"type":"object","additionalProperties":true,"description":"Every 7-3-1 check digit in the record: documentNumber, dateOfBirth, dateOfExpiry, optionalData (TD3 only) and composite (null for visas).","example":{"documentNumber":"1","dateOfBirth":"1","dateOfExpiry":"2","optionalData":"0","composite":"2"}}},"additionalProperties":false},"MrzRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["mrz"]},"params":{"type":"object","properties":{"type":{"type":"string","enum":["td1","td2","td3","mrva","mrvb"]},"sex":{"type":"string","enum":["M","F","X"]},"expired":{"type":"boolean"},"longName":{"type":"boolean"},"minAge":{"type":"integer","minimum":0,"maximum":120},"maxAge":{"type":"integer","minimum":0,"maximum":120},"asOf":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["type","longName","minAge","maxAge"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295},"locale":{"type":"string","enum":["en","da","de","fr","es","it","pt","ja"]}},"required":["endpoint","params","generatedAt","count","seed","locale"],"additionalProperties":false},"MrzRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MrzRootRecord"}},"meta":{"$ref":"#/components/schemas/MrzRootMeta"}},"required":["data","meta"],"additionalProperties":false},"MrzValidateRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"input":{"type":"string","description":"The MRZ exactly as supplied.","example":"ppUTOERIKSSON<<ANNA<MARIA<<<<<<<<<<<<<<<<<<<|L898902C36UTO7408122F1204159ZE184226B<<<<<10"},"normalized":{"type":"string","description":"Upper-cased input with the supplied separators replaced by newlines and each line trimmed.","example":"PPUTOERIKSSON<<ANNA<MARIA<<<<<<<<<<<<<<<<<<<\nL898902C36UTO7408122F1204159ZE184226B<<<<<10"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Resolved MRZ format — the requested type, or the one detected from line count, line length and the leading V of a visa. Null when no format matches.","example":"td3"},"lines":{"type":"array","items":{"type":"string"},"description":"The normalized machine readable lines.","example":["PPUTOERIKSSON<<ANNA<MARIA<<<<<<<<<<<<<<<<<<<","L898902C36UTO7408122F1204159ZE184226B<<<<<10"]},"lineLengths":{"type":"array","items":{"type":"integer"},"description":"Character count of each supplied line.","example":[44,44]},"expectedLineCount":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Line count the resolved format requires; null when no format matched.","example":2},"expectedLineLength":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Line length the resolved format requires; null when no format matched.","example":44},"geometryValid":{"type":"boolean","description":"Whether line count and every line length match the resolved format exactly.","example":true},"characterSetValid":{"type":"boolean","description":"Whether every character is inside the MRZ alphabet A-Z, 0-9 and <. Vacuously true for empty input, which is reported as EMPTY_INPUT instead.","example":true},"parsed":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"Decoded MRZ fields (document code, state, number, nationality, raw YYMMDD dates, sex, optional data and the identifiers). Null when the geometry does not match.","example":{"documentCode":"PP","issuingState":"UTO","documentNumber":"L898902C3","documentNumberCheckDigit":"6","nationality":"UTO","dateOfBirth":"740812","dateOfBirthCheckDigit":"2","sex":"F","dateOfExpiry":"120415","dateOfExpiryCheckDigit":"9","optionalData":["ZE184226B<<<<<"],"optionalDataCheckDigit":"1","compositeCheckDigit":"0","nameField":"ERIKSSON<<ANNA<MARIA<<<<<<<<<<<<<<<<<<<","primaryIdentifier":"ERIKSSON","secondaryIdentifier":"ANNA MARIA"}},"checkDigits":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One ordered entry per 7-3-1 check digit: field, the positions it covers, the recomputed expected digit, the digit found and whether they agree. Empty when the geometry does not match.","example":[{"field":"documentNumber","covers":"line 2, positions 1-9","expected":"6","found":"6","valid":true}]},"valid":{"type":"boolean","description":"True only when geometry, alphabet, sex, date fields and every check digit are correct. It is not an authenticity or identity check.","example":true},"reasons":{"type":"array","items":{"type":"string"},"description":"Stable ordered reason codes; empty exactly when valid is true.","example":[]}},"additionalProperties":false},"MrzValidateMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["mrz"]},"params":{"type":"object","properties":{"mrz":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","enum":["td1","td2","td3","mrva","mrvb"]}},"required":["mrz"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/validate"]},"locale":{"type":"string","enum":["en","da","de","fr","es","it","pt","ja"]}},"required":["endpoint","params","generatedAt","route","locale"],"additionalProperties":false},"MrzValidateEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MrzValidateRecord"},"meta":{"$ref":"#/components/schemas/MrzValidateMeta"}},"required":["data","meta"],"additionalProperties":false},"NamesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"firstName":{"type":"string","description":"Given name, drawn strictly from the locale's pool for the record's gender.","example":"Emily"},"lastName":{"type":"string","description":"Family name from the locale's surname pool.","example":"Carter"},"fullName":{"type":"string","description":"firstName + \" \" + lastName (Western order in every locale).","example":"Emily Carter"},"gender":{"type":"string","description":"male | female — the pool the first name was drawn from; equals the gender param when one is set.","example":"female"}},"additionalProperties":false},"NamesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["names"]},"params":{"type":"object","properties":{"gender":{"type":"string","enum":["male","female"]}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295},"locale":{"type":"string","enum":["en","da","de","fr","es","it","pt","ja"]}},"required":["endpoint","params","generatedAt","count","seed","locale"],"additionalProperties":false},"NamesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/NamesRootRecord"}},"meta":{"$ref":"#/components/schemas/NamesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"NatoAlphabetRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"character":{"type":"string","description":"The letter (A–Z) or digit (0–9).","example":"A"},"code":{"type":"string","description":"The official ICAO code word — note 'Alfa' and 'Juliett' are the official spellings.","example":"Alfa"},"pronunciation":{"type":"string","description":"ICAO respelling with stressed syllables (TREE for 3, FOW-ER for 4, FIFE for 5, NIN-ER for 9).","example":"AL-FAH"}},"additionalProperties":false},"NatoAlphabetRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["nato-alphabet"]},"params":{"type":"object","properties":{"group":{"type":"string","enum":["letters","digits","any"]}},"required":["group"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","count"],"additionalProperties":false},"NatoAlphabetRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/NatoAlphabetRootRecord"}},"meta":{"$ref":"#/components/schemas/NatoAlphabetRootMeta"}},"required":["data","meta"],"additionalProperties":false},"NatoAlphabetSpellRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"text":{"type":"string","description":"The input text, echoed back.","example":"hello"},"spelled":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One entry per character: the original character and its code word ('(space)' for spaces; characters outside A–Z/0–9 pass through unchanged).","example":[{"character":"h","code":"Hotel"},{"character":"i","code":"India"}]},"sentence":{"type":"string","description":"All code words joined with single spaces — ready to read out loud.","example":"Hotel India"}},"additionalProperties":false},"NatoAlphabetSpellMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["nato-alphabet"]},"params":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":100}},"required":["text"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/spell"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"NatoAlphabetSpellEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NatoAlphabetSpellRecord"},"meta":{"$ref":"#/components/schemas/NatoAlphabetSpellMeta"}},"required":["data","meta"],"additionalProperties":false},"NotificationsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Distinct fictional notification ID.","example":"ntf_91a3dc7200_00"},"channel":{"type":"string","description":"email | sms | push | inApp.","example":"push"},"template":{"type":"string","description":"Selected synthetic content template.","example":"securityAlert"},"recipient":{"type":"object","additionalProperties":true,"description":"Channel-specific safe destination type/value.","example":{"type":"push","value":"push_test_0123456789abcdef"}},"status":{"type":"string","description":"queued | sent | delivered | read | failed.","example":"delivered"},"createdAt":{"type":"string","format":"date-time","description":"Creation time inside from/to.","example":"2026-07-10T08:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Latest attempt or lifecycle transition.","example":"2026-07-10T08:05:00.000Z"},"sentAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Present for sent, delivered and read.","example":"2026-07-10T08:00:02.000Z"},"deliveredAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Present for delivered and read.","example":"2026-07-10T08:05:00.000Z"},"readAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Present only for read.","example":null},"attemptCount":{"type":"integer","description":"Exact nested-attempt count; zero while queued.","example":2},"maxAttempts":{"type":"integer","description":"Configured retry limit.","example":4},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Last failure only for failed status.","example":null},"content":{"type":"object","additionalProperties":true,"description":"Stable subject/title/body/data shape with channel-specific nullable fields.","example":{"subject":null,"title":"Example security alert","body":"A fictional sign-in was recorded for fixture testing.","data":{"template":"securityAlert","fixture":true}}},"attempts":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Zero to four chronological generic delivery attempts.","example":[{"number":1,"attemptedAt":"2026-07-10T08:00:01.000Z","durationMs":1000,"outcome":"accepted","response":"accepted for fixture delivery","error":null}]}},"additionalProperties":false},"NotificationsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["notifications"]},"params":{"type":"object","properties":{"channel":{"type":"string","enum":["email","sms","push","inApp"]},"status":{"type":"string","enum":["queued","sent","delivered","read","failed"]},"template":{"type":"string","enum":["welcome","receipt","securityAlert","reminder"]},"attemptCount":{"type":"integer","minimum":1,"maximum":4},"maxAttempts":{"type":"integer","minimum":1,"maximum":4},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["maxAttempts"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"NotificationsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/NotificationsRootRecord"}},"meta":{"$ref":"#/components/schemas/NotificationsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"NumbersRootRecord":{"type":"object","description":"The declared response record. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"value":{"type":"number","description":"The random number: a whole number for type=int, a decimal rounded to `precision` places for type=float. Always within [min, max].","example":42}},"required":["value"],"additionalProperties":false},"NumbersRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["numbers"]},"params":{"type":"object","properties":{"min":{"type":"number","minimum":-1000000000,"maximum":1000000000},"max":{"type":"number","minimum":-1000000000,"maximum":1000000000},"type":{"type":"string","enum":["int","float"]},"precision":{"type":"integer","minimum":0,"maximum":10},"unique":{"type":"boolean"}},"required":["min","max","type","unique"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"NumbersRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/NumbersRootRecord"}},"meta":{"$ref":"#/components/schemas/NumbersRootMeta"}},"required":["data","meta"],"additionalProperties":false},"OrdersRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Distinct synthetic order ID.","example":"ord_4c8a6e209d54e2340000"},"orderNumber":{"type":"string","description":"Human-readable synthetic order number.","example":"ORD-2025-X8FQ-001"},"status":{"type":"string","description":"pending | processing | shipped | delivered | cancelled.","example":"shipped"},"currency":{"type":"string","description":"Canonical active ISO 4217 code.","example":"USD"},"customer":{"type":"object","additionalProperties":true,"description":"Synthetic customer: id, name and reserved-domain email.","example":{"id":"cus_123","name":"Avery Chen","email":"avery.chen@example.com"}},"shippingAddress":{"type":"object","additionalProperties":true,"description":"Synthetic recipient, street, city, postal code and country.","example":{"recipient":"Avery Chen","street":"42 Market Street","city":"Portland","postalCode":"97205","country":"United States","countryCode":"US"}},"lineItems":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"1–10 items with sku, name, quantity, unitPrice and exact lineTotal.","example":[{"sku":"SKU-A8F2","name":"Soft Cotton Chair","quantity":2,"unitPrice":24.5,"lineTotal":49}]},"subtotal":{"type":"number","description":"Sum of line totals, in the selected currency.","example":98},"discount":{"type":"number","description":"Discount subtracted from subtotal.","example":9.8},"shipping":{"type":"number","description":"Shipping charge added after discount.","example":5},"tax":{"type":"number","description":"Tax calculated from the discounted amount plus shipping.","example":18.64},"total":{"type":"number","description":"Exactly subtotal - discount + shipping + tax.","example":111.84},"paymentStatus":{"type":"string","description":"pending | paid | refunded, coherent with order status.","example":"paid"},"placedAt":{"type":"string","format":"date-time","description":"Order placement time inside from..to.","example":"2025-05-10T12:30:00.000Z"},"shippedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Shipment time for shipped/delivered orders, else null.","example":"2025-05-12T12:30:00.000Z"},"deliveredAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Delivery time for delivered orders, else null.","example":null},"cancelledAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cancellation time for cancelled orders, else null.","example":null},"trackingNumber":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Generic TRK-prefixed fixture for shipped/delivered orders; not a real carrier format.","example":"TRK-8QL7M2NP9X"}},"additionalProperties":false},"OrdersRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["orders"]},"params":{"type":"object","properties":{"status":{"type":"string","enum":["pending","processing","shipped","delivered","cancelled"]},"currency":{"type":"string"},"minItems":{"type":"integer","minimum":1,"maximum":10},"maxItems":{"type":"integer","minimum":1,"maximum":10},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["currency","minItems","maxItems"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"OrdersRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OrdersRootRecord"}},"meta":{"$ref":"#/components/schemas/OrdersRootMeta"}},"required":["data","meta"],"additionalProperties":false},"PaginationOffsetRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"items":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Current ordered slice; each item has stable id, name and rank fields.","example":[{"id":"item_000041","name":"Item 000087","rank":12}]},"total":{"type":"integer","description":"Exact fixture dataset size.","example":137},"sort":{"type":"string","description":"Resolved sort key.","example":"id"},"order":{"type":"string","description":"Resolved ordering direction.","example":"asc"},"datasetKey":{"type":"string","description":"Resolved fixture dataset namespace.","example":"demo"},"pageInfo":{"type":"object","additionalProperties":true,"description":"Exact route-specific pagination metadata and navigation cursors/pages.","example":{"page":3,"pageSize":20,"totalPages":7,"hasNextPage":true}}},"additionalProperties":false},"PaginationOffsetMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["pagination"]},"params":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":10000},"sort":{"type":"string","enum":["id","name","rank"]},"order":{"type":"string","enum":["asc","desc"]},"datasetKey":{"type":"string","minLength":1,"maxLength":64},"page":{"type":"integer","minimum":1,"maximum":10000},"pageSize":{"type":"integer","minimum":1,"maximum":100}},"required":["total","sort","order","datasetKey","page","pageSize"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/offset"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"PaginationOffsetEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PaginationOffsetRecord"},"meta":{"$ref":"#/components/schemas/PaginationOffsetMeta"}},"required":["data","meta"],"additionalProperties":false},"PaginationCursorRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"items":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Current ordered slice; each item has stable id, name and rank fields.","example":[{"id":"item_000041","name":"Item 000087","rank":12}]},"total":{"type":"integer","description":"Exact fixture dataset size.","example":137},"sort":{"type":"string","description":"Resolved sort key.","example":"id"},"order":{"type":"string","description":"Resolved ordering direction.","example":"asc"},"datasetKey":{"type":"string","description":"Resolved fixture dataset namespace.","example":"demo"},"pageInfo":{"type":"object","additionalProperties":true,"description":"Exact route-specific pagination metadata and navigation cursors/pages.","example":{"page":3,"pageSize":20,"totalPages":7,"hasNextPage":true}}},"additionalProperties":false},"PaginationCursorMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["pagination"]},"params":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":10000},"sort":{"type":"string","enum":["id","name","rank"]},"order":{"type":"string","enum":["asc","desc"]},"datasetKey":{"type":"string","minLength":1,"maxLength":64},"first":{"type":"integer","minimum":1,"maximum":100},"after":{"type":"string","minLength":1,"maxLength":1024}},"required":["total","sort","order","datasetKey","first"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/cursor"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"PaginationCursorEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PaginationCursorRecord"},"meta":{"$ref":"#/components/schemas/PaginationCursorMeta"}},"required":["data","meta"],"additionalProperties":false},"PassphrasesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"passphrase":{"type":"string","description":"The words joined with the separator — exactly words.join(separator).","example":"ember-lagoon-violin-frost"},"words":{"type":"array","items":{"type":"string"},"description":"The individual words, in order, as they appear in the passphrase (Title Cased when capitalize=true).","example":["ember","lagoon","violin","frost"]},"entropyBits":{"type":"integer","description":"Strength estimate: round(words × log2(895)) — each word is an independent uniform pick from the 895-word list (≈9.8 bits per word).","example":39}},"additionalProperties":false},"PassphrasesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["passphrases"]},"params":{"type":"object","properties":{"words":{"type":"integer","minimum":3,"maximum":10},"separator":{"type":"string","minLength":0,"maxLength":3},"capitalize":{"type":"boolean"}},"required":["words","separator","capitalize"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"PassphrasesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PassphrasesRootRecord"}},"meta":{"$ref":"#/components/schemas/PassphrasesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"PasswordsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"password":{"type":"string","description":"The generated password. Contains at least one character of every enabled class.","example":"g7#Vqx!2Lm@9pZ.t"},"length":{"type":"integer","description":"Length of the password in characters (echoes the length parameter).","example":16},"entropyBits":{"type":"integer","description":"round(length × log2(poolSize)) — theoretical bits of entropy for the selected pools (e.g. 103 for 16 chars over all four classes).","example":103},"strength":{"type":"string","description":"weak (< 40 bits) | fair (< 60) | strong (< 80) | very-strong (≥ 80).","example":"very-strong"}},"additionalProperties":false},"PasswordsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["passwords"]},"params":{"type":"object","properties":{"length":{"type":"integer","minimum":4,"maximum":128},"uppercase":{"type":"boolean"},"digits":{"type":"boolean"},"symbols":{"type":"boolean"},"excludeSimilar":{"type":"boolean"}},"required":["length","uppercase","digits","symbols","excludeSimilar"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"PasswordsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PasswordsRootRecord"}},"meta":{"$ref":"#/components/schemas/PasswordsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"PhoneNumbersParseRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"input":{"type":"string","description":"The value exactly as supplied, byte for byte, so a mis-encoded plus sign is visible.","example":"+45 32 12 34 56"},"parsed":{"type":"boolean","description":"Whether a country calling code and a national significant number could be extracted. False is a record, not an error.","example":true},"failureReason":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"NOT_A_NUMBER · MISSING_REGION · INVALID_COUNTRY_CODE · TOO_SHORT_AFTER_IDD · TOO_SHORT_NSN · TOO_LONG · UNSUPPORTED_TEL_PARAMETER. The first, third, fourth, fifth and sixth are libphonenumber's own NumberParseException.ErrorType values; MISSING_REGION and UNSUPPORTED_TEL_PARAMETER are this endpoint's, and both are listed as divergences on this page. null when parsed is true.","example":null},"failureDetail":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"One sentence naming the offending value and the rule it broke. null when parsed is true.","example":null},"countryCallingCode":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The country calling code with its leading plus sign.","example":"+45"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The CLDR region that owns the number, 001 for a non-geographical calling code, or null when no region on the calling code publishes a range that covers it. These are CLDR ids, not strictly ISO 3166-1: AC, TA and XK appear too.","example":"DK"},"regionCandidates":{"type":"array","items":{"type":"string"},"description":"Every region sharing the calling code, in the order the number is tested against them (the main region first). One entry for an unshared code, empty when nothing parsed. An ambiguous +1 answer is visible here rather than hidden.","example":["DK"]},"nationalNumber":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The national significant number, digits only, with leading zeros preserved. This is libphonenumber's getNationalSignificantNumber(): upstream stores the digits as an integer plus an italianLeadingZero flag and re-inserts the zeros on read, and every length test and pattern match runs against the re-assembled string. Here it is a string throughout — the same value, one representation.","example":"32123456"},"nationalPrefixStripped":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The trunk prefix removed from the input, or null when none was — including for the 110 territories that publish no nationalPrefix at all (Denmark and Italy among them), where a leading 0 is part of the number and is never removed.","example":null},"carrierCode":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"A carrier-selection code captured by the region's nationalPrefixForParsing rule (Brazil and Argentina style; 44 territories publish such a rule, 32 of them with a transform). Only ever captured from national-form input, reported and never re-inserted into a formatted number.","example":null},"extension":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Digits from a trailing ;ext= parameter. That is the only extension syntax this endpoint parses — x123, ext. 123, #123 and anexo 123 are not recognised.","example":null},"isPossible":{"type":"boolean","description":"Length-only verdict, true for both IS_POSSIBLE and IS_POSSIBLE_LOCAL_ONLY, matching libphonenumber's isPossibleNumber.","example":true},"possibleReason":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"libphonenumber's ValidationResult verbatim — IS_POSSIBLE, IS_POSSIBLE_LOCAL_ONLY, TOO_SHORT, INVALID_LENGTH or TOO_LONG — so you can see which check decided. Upstream can also return INVALID_COUNTRY_CODE here; this endpoint cannot, because an unrecognised calling code is reported as parsed: false with failureReason INVALID_COUNTRY_CODE instead. null when parsed is false: a length verdict for a number that never parsed would be an invention.","example":"IS_POSSIBLE"},"isValid":{"type":"boolean","description":"Whether the national significant number matches a range region publishes for one of its number types. False whenever numberType is unknown or no region resolved. It says nothing about whether the line exists: a valid number may be unassigned, ported, disconnected or simply unreachable.","example":true},"numberType":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"fixedLine · mobile · fixedLineOrMobile · tollFree · premiumRate · sharedCost · voip · personalNumber · pager · uan · voicemail · unknown. null only when parsed is false. fixedLineOrMobile is common rather than exotic — it is returned whenever a region's fixed-line and mobile ranges both cover the number, which is true for Denmark, the United States and dozens of others.","example":"fixedLineOrMobile"},"validForType":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether the number is valid for the type named by validateForType, using libphonenumber's own getNumberDescByType mapping (fixedLineOrMobile reads the fixed-line range, falling back to mobile where a region publishes no fixed-line data). A fixedLineOrMobile number can therefore be validForType: true for mobile. null when validateForType was not sent.","example":null},"canBeInternationallyDialled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"False when the number falls inside the region's noInternationalDialling range (33 regions publish one). True for a non-geographical code and for an unresolved region, because there is then no such range to fail.","example":true},"mobileNumberPortableRegion":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Upstream's per-region portability flag (107 regions). True means the number's prefix does not identify the serving operator — the reason this endpoint ships no carrier lookup.","example":true},"lengths":{"type":"object","additionalProperties":true,"description":"{ actual, possible, localOnly } — actual is the national significant number's length, possible is the union of the number-type lengths published by the calling code's MAIN region (the metadata libphonenumber's own possible-number check reads, which is why a Bermuda number is measured against the NANP set), and localOnly are the subscriber-only lengths that produce IS_POSSIBLE_LOCAL_ONLY.","example":{"actual":8,"possible":[8],"localOnly":[]}},"e164":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Plus sign, calling code and national significant number, no separators. E.164 has no extension field, so an extension never appears here.","example":"+4532123456"},"international":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Calling code, a space, then the nationally grouped national significant number.","example":"+45 32 12 34 56"},"national":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"National form with the trunk prefix re-applied by the matching format rule. The grouping is canonical, not the input's: +4915112345678 comes back as 01511 2345678 even when the caller wrote 0151 12345678.","example":"32 12 34 56"},"rfc3966":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"A tel: URI. Deliberate divergence: libphonenumber emits visual separators (tel:+45-32-12-34-56); this endpoint emits the unseparated form, which is equally valid RFC 3966 global-number-digits and is what lets its own output round-trip back through value. An extension is appended as ;ext=.","example":"tel:+4532123456"},"notes":{"type":"array","items":{"type":"string"},"description":"Record-level advisories about this number: a shared calling code, a merged fixed-line/mobile range, number portability, a subscriber-only length, a non-geographical code, a captured carrier code, no matching formatting rule (distinguishing a calling code with no rules at all from one whose rules did not match these digits), or a range that cannot be dialled internationally. Named notes rather than warnings so it can never be confused with meta.warnings, which carries request-level advisories. Empty for an unremarkable number.","example":["Denmark's fixed-line and mobile ranges both cover this number, so its type is reported as fixedLineOrMobile rather than guessing between them."]},"metadataVersion":{"type":"string","description":"The pinned libphonenumber release this answer came from. Every parse and format decision in the response is a property of this snapshot and nothing else.","example":"v9.0.35"},"metadataUpdated":{"type":"string","format":"date","description":"The date that release was published upstream.","example":"2026-07-17"}},"additionalProperties":false},"PhoneNumbersParseMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["phone-numbers"]},"params":{"type":"object","properties":{"value":{"type":"string","minLength":1,"maxLength":32},"country":{"type":"string","minLength":2,"maxLength":3},"validateForType":{"type":"string","enum":["fixedLine","mobile","fixedLineOrMobile","tollFree","premiumRate","sharedCost","voip","personalNumber","pager","uan","voicemail"]}},"required":["value"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/parse"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"PhoneNumbersParseEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PhoneNumbersParseRecord"},"meta":{"$ref":"#/components/schemas/PhoneNumbersParseMeta"}},"required":["data","meta"],"additionalProperties":false},"PhoneNumbersFormatRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"input":{"type":"string","description":"The value exactly as supplied, byte for byte, so a mis-encoded plus sign is visible.","example":"+45 32 12 34 56"},"parsed":{"type":"boolean","description":"Whether a country calling code and a national significant number could be extracted. False is a record, not an error.","example":true},"failureReason":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"NOT_A_NUMBER · MISSING_REGION · INVALID_COUNTRY_CODE · TOO_SHORT_AFTER_IDD · TOO_SHORT_NSN · TOO_LONG · UNSUPPORTED_TEL_PARAMETER. The first, third, fourth, fifth and sixth are libphonenumber's own NumberParseException.ErrorType values; MISSING_REGION and UNSUPPORTED_TEL_PARAMETER are this endpoint's, and both are listed as divergences on this page. null when parsed is true.","example":null},"failureDetail":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"One sentence naming the offending value and the rule it broke. null when parsed is true.","example":null},"countryCallingCode":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The country calling code with its leading plus sign.","example":"+45"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The CLDR region that owns the number, 001 for a non-geographical calling code, or null when no region on the calling code publishes a range that covers it. These are CLDR ids, not strictly ISO 3166-1: AC, TA and XK appear too.","example":"DK"},"nationalNumber":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The national significant number, digits only, with leading zeros preserved. This is libphonenumber's getNationalSignificantNumber(): upstream stores the digits as an integer plus an italianLeadingZero flag and re-inserts the zeros on read, and every length test and pattern match runs against the re-assembled string. Here it is a string throughout — the same value, one representation.","example":"32123456"},"extension":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Digits from a trailing ;ext= parameter. That is the only extension syntax this endpoint parses — x123, ext. 123, #123 and anexo 123 are not recognised.","example":null},"e164":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Plus sign, calling code and national significant number, no separators and no extension.","example":"+4532123456"},"international":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Calling code, a space, then the nationally grouped national significant number.","example":"+45 32 12 34 56"},"national":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"National form with the trunk prefix re-applied by the matching format rule, in canonical grouping.","example":"32 12 34 56"},"rfc3966":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"A tel: URI built from the E.164 form, with ;ext= appended when an extension was parsed. Upstream's visual separators are a deliberate divergence documented on this page.","example":"tel:+4532123456"},"formatted":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The one of the four forms named by style. All four are always returned in their own fields as well.","example":"+4532123456"},"style":{"type":"string","description":"Echo of the resolved style: e164 · international · national · rfc3966.","example":"e164"},"outOfCountry":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"How a caller in fromRegion dials this number, i.e. libphonenumber's formatOutOfCountryCallingNumber. null unless fromRegion was sent. Dialling a +1 number from another NANP region gives 1 followed by the national form; dialling a number on your own calling code gives the plain national form.","example":null},"internationalPrefixUsed":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The IDD digits actually placed in front of outOfCountry. null when fromRegion publishes neither a preferredInternationalPrefix nor an internationalPrefix that is a single literal prefix — 35 regions publish a multi-branch IDD pattern such as Brazil's 00(?:1[245]|2[1-35]|31|4[13]|[56]5|99) or Indonesia's 00[89], and for those libphonenumber falls back to the plus-prefixed international form rather than inventing a carrier-select code. Six regions publish a wait-for-tone marker, which is passed through verbatim (Russia, Kazakhstan, Belarus, Tajikistan and Turkmenistan use 8~10, Ukraine 0~0).","example":null},"formatSourceRegion":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The region whose availableFormats produced the grouping. Formatting always uses the MAIN region of the calling code, never the resolved region: 44 territories publish no formatting rules of their own, and for 39 of them this differs from region — a Bermuda number is grouped by the United States' NANP rules.","example":"DK"},"formatRuleUsed":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The numberFormat pattern that matched, or null when none did — in which case national is the ungrouped national significant number. Two situations produce a null, and notes says which: the calling code publishes no rules at all, which is true of +247, +290, +500, +686 and +690 and therefore of every number on them; or it publishes rules and none of them matched, because a rule applies only when both its leadingDigits prefix and its own digit pattern match. Denmark's single rule is gated on a leading digit of 2–9, so +4511111111 formats without it.","example":"(\\d{2})(\\d{2})(\\d{2})(\\d{2})"},"isPossible":{"type":"boolean","description":"Length-only verdict, repeated here because formatting is not validation.","example":true},"isValid":{"type":"boolean","description":"Whether the number matches a published range. A possible-but-unassigned number formats perfectly, so this is the only field on the route that speaks to validity — and it still says nothing about reachability.","example":true},"notes":{"type":"array","items":{"type":"string"},"description":"Record-level advisories about this number: a shared calling code, a merged fixed-line/mobile range, number portability, a subscriber-only length, a non-geographical code, a captured carrier code, no matching formatting rule (distinguishing a calling code with no rules at all from one whose rules did not match these digits), or a range that cannot be dialled internationally. Named notes rather than warnings so it can never be confused with meta.warnings, which carries request-level advisories. Empty for an unremarkable number.","example":["Denmark's fixed-line and mobile ranges both cover this number, so its type is reported as fixedLineOrMobile rather than guessing between them."]},"metadataVersion":{"type":"string","description":"The pinned libphonenumber release this answer came from. Every parse and format decision in the response is a property of this snapshot and nothing else.","example":"v9.0.35"},"metadataUpdated":{"type":"string","format":"date","description":"The date that release was published upstream.","example":"2026-07-17"}},"additionalProperties":false},"PhoneNumbersFormatMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["phone-numbers"]},"params":{"type":"object","properties":{"value":{"type":"string","minLength":1,"maxLength":32},"country":{"type":"string","minLength":2,"maxLength":3},"style":{"type":"string","enum":["e164","international","national","rfc3966"]},"fromRegion":{"type":"string","minLength":2,"maxLength":3}},"required":["value","style"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/format"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"PhoneNumbersFormatEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PhoneNumbersFormatRecord"},"meta":{"$ref":"#/components/schemas/PhoneNumbersFormatMeta"}},"required":["data","meta"],"additionalProperties":false},"PhoneNumbersCountriesRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"region":{"type":"string","description":"CLDR region code, or 001 for a non-geographical calling code. Nine rows share 001 and are distinguished by their calling code, which is why this dataset is keyed by (region, callingCode) rather than by region.","example":"DK"},"countryName":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"English short name joined from the bundled ISO 3166-1 dataset that /api/countries serves. null for the nine 001 rows and for AC, TA and XK, which have no ISO 3166-1 officially assigned entry — twelve null rows in total, never invented.","example":"Denmark"},"callingCode":{"type":"string","description":"The country calling code with its leading plus sign.","example":"+45"},"zone":{"type":"integer","description":"ITU-T E.164 world numbering zone, 1–9 — simply the first digit of the calling code. It is also the key the bundled dataset is split by.","example":4},"mainCountryForCallingCode":{"type":"boolean","description":"Upstream's mainCountryForCode. Exactly twelve rows are true, one per shared calling code, and the main region's rules format every number on that code.","example":true},"regionsSharingCallingCode":{"type":"integer","description":"How many rows share this calling code: 1 for 203 of the 215 codes, 25 for +1.","example":1},"internationalPrefix":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The IDD pattern exactly as published — a bare literal for most regions, a regex for 35 of them (Indonesia's is 00[89]) — or null for the nine rows that publish none.","example":"00"},"nationalPrefix":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The trunk prefix, or null for the 110 regions that publish none. The only values in the snapshot are 0 (113 regions), 1 (26), 8 (4) and 06 (1). Denmark is null: it has no trunk prefix, and a leading 0 on a Danish number is part of the number.","example":null},"mobileNumberPortable":{"type":"boolean","description":"Upstream's portability flag; true for 107 regions.","example":true},"possibleLengths":{"type":"array","items":{"type":"integer"},"description":"The union of every number type's national lengths, ascending. Computed rather than read: the XML publishes no generalDesc lengths, and libphonenumber's build tool derives them the same way — excluding noInternationalDialling, which is a dialling restriction rather than a number type. Values range 4–17 in this snapshot; the shorter subscriber-only lengths in numberTypes[].localOnlyLengths go down to 2 and are not repeated here.","example":[8]},"numberTypes":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One entry per published range: { type, possibleLengths, localOnlyLengths, exampleNumber, exampleE164 }. The eleventh id, noInternationalDialling, is a dialling restriction rather than a number type and carries no example. exampleNumber is upstream's own example national significant number — libphonenumber's FAQ warns that some of them reach real subscribers, so do not call them.","example":[{"type":"fixedLine","possibleLengths":[8],"localOnlyLengths":[],"exampleNumber":"32123456","exampleE164":"+4532123456"}]},"formatSourceRegion":{"type":"string","description":"The region whose formatting rules apply to numbers on this calling code — itself, or the main region of its calling code. It differs from region for exactly 39 rows.","example":"DK"},"formatRuleCount":{"type":"integer","description":"How many numberFormat rules formatSourceRegion publishes (759 rules across the snapshot; 1 for Denmark, 0 for the five calling codes with no rules anywhere).","example":1}},"additionalProperties":false},"PhoneNumbersCountriesMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["phone-numbers"]},"params":{"type":"object","properties":{"country":{"type":"string","minLength":2,"maxLength":3},"callingCode":{"type":"string","minLength":1,"maxLength":4},"type":{"type":"string","enum":["fixedLine","mobile","pager","tollFree","premiumRate","sharedCost","personalNumber","voip","uan","voicemail","noInternationalDialling"]},"mobileNumberPortable":{"type":"boolean"},"search":{"type":"string","minLength":1,"maxLength":40},"offset":{"type":"integer","minimum":0,"maximum":300}},"required":["offset"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/countries"]},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","route","count"],"additionalProperties":false},"PhoneNumbersCountriesEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PhoneNumbersCountriesRecord"}},"meta":{"$ref":"#/components/schemas/PhoneNumbersCountriesMeta"}},"required":["data","meta"],"additionalProperties":false},"PhoneNumbersCallingCodeRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"callingCode":{"type":"string","description":"The country calling code with its leading plus sign.","example":"+1"},"zone":{"type":"integer","description":"ITU-T E.164 world numbering zone, 1–9 — the first digit of the calling code.","example":1},"regionCount":{"type":"integer","description":"How many rows the snapshot publishes on this calling code.","example":25},"mainRegion":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The mainCountryForCode region, whose formatting rules apply to every number on the code. null for a non-geographical code, whose only row is 001.","example":"US"},"isNonGeographic":{"type":"boolean","description":"True for the nine codes whose only row is 001 — 800, 808, 870, 878, 881, 882, 883, 888 and 979. They belong to services, not countries.","example":false},"regions":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"{ region, countryName, main, leadingDigits } per row, in resolution order. leadingDigits is the region-level prefix pattern that claims a number for a non-main region on a shared code; 36 rows publish one, the rest are decided by full range matching.","example":[{"region":"US","countryName":"United States","main":true,"leadingDigits":null}]},"resolutionOrder":{"type":"array","items":{"type":"string"},"description":"The exact order a parsed number is tested against the regions: the main region first, then upstream's document order. Six of the twelve shared codes list their main region later in the source file, so this is not simply alphabetical.","example":["US","AG","AI"]},"possibleLengths":{"type":"array","items":{"type":"integer"},"description":"The union of every region's possible national lengths on this code, ascending. It is a union, so a code can carry a length only one of its regions publishes — +1 shows 7 and 10 because Canada publishes both.","example":[7,10]},"metadataVersion":{"type":"string","description":"The pinned libphonenumber release this answer came from. Every parse and format decision in the response is a property of this snapshot and nothing else.","example":"v9.0.35"},"metadataUpdated":{"type":"string","format":"date","description":"The date that release was published upstream.","example":"2026-07-17"}},"additionalProperties":false},"PhoneNumbersCallingCodeMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["phone-numbers"]},"params":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":4}},"required":["code"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/calling-code"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"PhoneNumbersCallingCodeEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PhoneNumbersCallingCodeRecord"},"meta":{"$ref":"#/components/schemas/PhoneNumbersCallingCodeMeta"}},"required":["data","meta"],"additionalProperties":false},"PhonesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"e164":{"type":"string","description":"The number in E.164: '+', the country calling code, then the national digits — no spaces. Always matches ^\\+[1-9]\\d{6,14}$.","example":"+12125550134"},"international":{"type":"string","description":"Human-readable international form: the same digits as e164, spaced with the country's conventional grouping.","example":"+1 212 555 0134"},"national":{"type":"string","description":"National significant number with the country's digit grouping — no calling code and no domestic trunk prefix, so its digits equal the e164 digits after the calling code.","example":"212 555 0134"},"countryCallingCode":{"type":"string","description":"The country calling code with its leading '+'.","example":"+1"},"countryCode":{"type":"string","description":"Country whose numbering plan the record follows — determined by ?locale=.","example":"US"}},"additionalProperties":false},"PhonesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["phones"]},"params":{"type":"object","properties":{},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295},"locale":{"type":"string","enum":["en","da","de","fr","es","it","pt","ja"]}},"required":["endpoint","params","generatedAt","count","seed","locale"],"additionalProperties":false},"PhonesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PhonesRootRecord"}},"meta":{"$ref":"#/components/schemas/PhonesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"PluralRulesSelectRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"value":{"type":"number","description":"Numeric operand supplied by the caller.","example":2},"locale":{"type":"string","description":"Actual locale resolved by Intl.PluralRules.","example":"en-US"},"type":{"type":"string","description":"cardinal or ordinal rule family.","example":"ordinal"},"category":{"type":"string","description":"Selected ECMA-402 plural category.","example":"two"},"categories":{"type":"array","items":{"type":"string"},"description":"All categories available for this resolved locale/type.","example":["one","two","few","other"]},"minimumFractionDigits":{"type":"integer","description":"Resolved minimum fraction digits used during selection.","example":0},"maximumFractionDigits":{"type":"integer","description":"Resolved maximum fraction digits used during selection.","example":3}},"additionalProperties":false},"PluralRulesSelectMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["plural-rules"]},"params":{"type":"object","properties":{"locale":{"type":"string","minLength":2,"maxLength":64},"type":{"type":"string","enum":["cardinal","ordinal"]},"value":{"type":"number","minimum":-1000000000000000,"maximum":1000000000000000},"minimumFractionDigits":{"type":"integer","minimum":0,"maximum":20},"maximumFractionDigits":{"type":"integer","minimum":0,"maximum":20}},"required":["locale","type","value","minimumFractionDigits","maximumFractionDigits"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/select"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"PluralRulesSelectEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PluralRulesSelectRecord"},"meta":{"$ref":"#/components/schemas/PluralRulesSelectMeta"}},"required":["data","meta"],"additionalProperties":false},"PluralRulesCategoriesRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"locale":{"type":"string","description":"Actual locale resolved by Intl.PluralRules.","example":"ru"},"type":{"type":"string","description":"cardinal or ordinal rule family.","example":"cardinal"},"categories":{"type":"array","items":{"type":"string"},"description":"The complete category vocabulary exposed by the runtime for this locale/type.","example":["one","few","many","other"]}},"additionalProperties":false},"PluralRulesCategoriesMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["plural-rules"]},"params":{"type":"object","properties":{"locale":{"type":"string","minLength":2,"maxLength":64},"type":{"type":"string","enum":["cardinal","ordinal"]}},"required":["locale","type"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/categories"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"PluralRulesCategoriesEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PluralRulesCategoriesRecord"},"meta":{"$ref":"#/components/schemas/PluralRulesCategoriesMeta"}},"required":["data","meta"],"additionalProperties":false},"PolylineDecodeRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"precision":{"type":"integer","description":"Decimal places used to scale the decoded integers.","example":5},"pointCount":{"type":"integer","description":"Number of coordinate pairs decoded.","example":3},"encodedLength":{"type":"integer","description":"Characters of 'value' that were decoded, after surrounding whitespace is trimmed.","example":27},"coordinates":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Decoded points in the format's own order, { latitude, longitude } in WGS 84 decimal degrees, at most 'precision' decimals each.","example":[{"latitude":38.5,"longitude":-120.2}]},"geojson":{"type":"object","additionalProperties":true,"description":"RFC 7946 geometry ready to paste into a map tool: LineString for two or more points, Point for exactly one (section 3.1.4 requires two or more positions), 'coordinates' in [longitude, latitude] order (section 3.1.1), plus a section 5 'bbox' array [west, south, east, north].","example":{"type":"LineString","bbox":[-126.453,38.5,-120.2,43.252],"coordinates":[[-120.2,38.5],[-120.95,40.7],[-126.453,43.252]]}},"bounds":{"type":"object","additionalProperties":true,"description":"Plain minimum/maximum of the decoded coordinates as { west, south, east, north }. A geometry crossing the antimeridian therefore yields a box spanning most of the globe; RFC 7946 section 5.2's west > east narrow box is deliberately not inferred.","example":{"west":-126.453,"south":38.5,"east":-120.2,"north":43.252}},"lengthMeters":{"type":"number","description":"Sum of the great-circle segment lengths on the exposed mean-Earth sphere, in metres, rounded to millimetres. 0 for a single point. Not road distance.","example":788906.96},"lengthKilometers":{"type":"number","description":"The same length in kilometres.","example":788.90696},"canonical":{"type":"boolean","description":"True when every value was encoded minimally. A non-minimal group (a redundant continuation character) still decodes, and adds a meta.warnings entry.","example":true},"model":{"type":"string","description":"Explicit distance model: mean-earth-sphere. Not ellipsoidal, routed or terrain distance.","example":"mean-earth-sphere"},"radiusMeters":{"type":"number","description":"IUGG mean Earth radius used for every length, in metres.","example":6371008.8}},"additionalProperties":false},"PolylineDecodeMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["polyline"]},"params":{"type":"object","properties":{"value":{"type":"string","maxLength":8000},"precision":{"type":"integer","minimum":5,"maximum":6}},"required":["value","precision"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/decode"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"PolylineDecodeEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PolylineDecodeRecord"},"meta":{"$ref":"#/components/schemas/PolylineDecodeMeta"}},"required":["data","meta"],"additionalProperties":false},"PolylineEncodeRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"precision":{"type":"integer","description":"Decimal places the coordinates were scaled by.","example":5},"pointCount":{"type":"integer","description":"Number of input pairs encoded.","example":3},"encoded":{"type":"string","description":"The encoded polyline.","example":"_p~iF~ps|U_ulLnnqC_mqNvxq`@"},"encodedLength":{"type":"integer","description":"Characters in 'encoded'.","example":27},"urlEncoded":{"type":"string","description":"'encoded' run through encodeURIComponent — safe to paste into a query string, a path segment or a form body. It escapes the eight characters RFC 3986 section 3.4 forbids in a query ([ \\ ] ^ ` { | }) and also @ and ?, which section 3.4 permits but which are ambiguous elsewhere in a URL; over-escaping is safe, under-escaping is not.","example":"_p~iF~ps%7CU_ulLnnqC_mqNvxq%60%40"},"points":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One row per input pair: { index, latitude, longitude, encodedLatitude, encodedLongitude, offsetMeters } — the value you sent, the value the precision grid could actually store (Math.round(value * 10 ** precision), which breaks exact ties toward positive infinity where C's round() breaks them away from zero), and the great-circle distance between them in metres, rounded to a tenth of a millimetre. Trim it with ?exclude=points.","example":[{"index":0,"latitude":38.5,"longitude":-120.2,"encodedLatitude":38.5,"encodedLongitude":-120.2,"offsetMeters":0}]},"lossyPointCount":{"type":"integer","description":"How many input points the precision grid moved.","example":0},"maxOffsetMeters":{"type":"number","description":"Largest offsetMeters across all points, rounded to a tenth of a millimetre. Bounded by 0.7863 m at precision 5 and 0.07863 m at precision 6.","example":0},"roundTripsExactly":{"type":"boolean","description":"True when decoding 'encoded' at 'precision' reproduces every input coordinate exactly — equivalently, lossyPointCount === 0.","example":true},"model":{"type":"string","description":"Explicit distance model: mean-earth-sphere. Not ellipsoidal, routed or terrain distance.","example":"mean-earth-sphere"},"radiusMeters":{"type":"number","description":"IUGG mean Earth radius used for every length, in metres.","example":6371008.8}},"additionalProperties":false},"PolylineEncodeMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["polyline"]},"params":{"type":"object","properties":{"coordinates":{"type":"string","maxLength":8000},"precision":{"type":"integer","minimum":5,"maximum":6},"order":{"type":"string","enum":["latlon","lonlat"]}},"required":["coordinates","precision","order"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/encode"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"PolylineEncodeEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PolylineEncodeRecord"},"meta":{"$ref":"#/components/schemas/PolylineEncodeMeta"}},"required":["data","meta"],"additionalProperties":false},"PolylineSimplifyRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"precision":{"type":"integer","description":"Precision used to decode the input AND re-encode the output.","example":6},"toleranceMeters":{"type":"number","description":"Requested tolerance, echoed.","example":10},"algorithm":{"type":"string","description":"Named method, so the numbers are reproducible.","example":"ramer-douglas-peucker/spherical-cross-track"},"pointCountBefore":{"type":"integer","description":"Points decoded from 'value'. At most 1000 on this route, and a geometry whose shape would drive Ramer–Douglas–Peucker past 150,000 spherical distance evaluations is refused with a 400 rather than run over the CPU budget — any geometry of 547 points or fewer always fits, whatever its shape.","example":8},"pointCountAfter":{"type":"integer","description":"Points retained.","example":5},"removedPointCount":{"type":"integer","description":"pointCountBefore - pointCountAfter.","example":3},"maxDeviationMeters":{"type":"number","description":"Measured maximum distance from a dropped point to the retained chord that replaced it, in metres rounded to the nearest millimetre. 0 when nothing was dropped. The algorithm's own guarantee is exact — no dropped point is further than toleranceMeters from its chord — but because this figure is rounded rather than truncated it can read up to 0.5 mm above toleranceMeters (reachable only when a tolerance is set to within half a millimetre of an actual deviation).","example":8.276},"keptIndexes":{"type":"array","items":{"type":"integer"},"description":"Indexes of the retained points in the original list — strictly increasing, always starting at 0 and ending at pointCountBefore - 1. Use it to carry per-point attributes across.","example":[0,1,2,6,7]},"coordinates":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Retained points as { latitude, longitude }.","example":[{"latitude":52.435858,"longitude":10.743689}]},"encoded":{"type":"string","description":"The retained points re-encoded at 'precision'. Decoding it at the same precision reproduces 'coordinates' exactly.","example":"cxl_cBqwvnS|Dy@ogFyxmAn`O{|Bhi@ljL"},"urlEncoded":{"type":"string","description":"'encoded', query-safe (encodeURIComponent).","example":"cxl_cBqwvnS%7CDy%40ogFyxmAn%60O%7B%7CBhi%40ljL"},"lengthMetersBefore":{"type":"number","description":"Great-circle length of the original chain, in metres.","example":4178.287},"lengthMetersAfter":{"type":"number","description":"Great-circle length of the simplified chain, in metres.","example":4170.459},"geojson":{"type":"object","additionalProperties":true,"description":"RFC 7946 geometry of the simplified line, same rules as /decode.","example":{"type":"LineString","bbox":[10.743689,52.43059,10.786081,52.439483],"coordinates":[[10.743689,52.435858],[10.743718,52.435763],[10.784067,52.439483],[10.786081,52.431267],[10.779242,52.43059]]}},"model":{"type":"string","description":"Explicit distance model: mean-earth-sphere. Not ellipsoidal, routed or terrain distance.","example":"mean-earth-sphere"},"radiusMeters":{"type":"number","description":"IUGG mean Earth radius used for every length, in metres.","example":6371008.8}},"additionalProperties":false},"PolylineSimplifyMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["polyline"]},"params":{"type":"object","properties":{"value":{"type":"string","maxLength":8000},"precision":{"type":"integer","minimum":5,"maximum":6},"toleranceMeters":{"type":"number","minimum":0,"maximum":100000}},"required":["value","precision","toleranceMeters"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/simplify"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"PolylineSimplifyEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PolylineSimplifyRecord"},"meta":{"$ref":"#/components/schemas/PolylineSimplifyMeta"}},"required":["data","meta"],"additionalProperties":false},"PolylineInspectRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"valueLength":{"type":"integer","description":"Characters examined, after surrounding whitespace is trimmed.","example":15},"decodable":{"type":"boolean","description":"True when the whole string parses as an even number of complete varint groups using only the ASCII 63–126 alphabet. Precision-dependent coordinate range is a separate question, answered by precisionHypotheses.","example":true},"problem":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"null when decodable; otherwise { kind, message, index, character, codePoint } where kind is one of unsupported-character, unfinished-value, odd-value-count, oversized-value, and index is 0-based into the trimmed string (character/codePoint are null for the non-character kinds).","example":null},"groupCount":{"type":"integer","description":"Complete varint groups read before the string ended or failed.","example":4},"pointCount":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"groupCount / 2 when decodable, else null — a partial decode is never published as points.","example":2},"canonical":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"True when every group read is minimally encoded; null when not decodable.","example":true},"nonCanonicalGroupIndexes":{"type":"array","items":{"type":"integer"},"description":"0-based indexes of groups carrying a redundant most-significant zero chunk. Empty for every real-world encoder's output.","example":[]},"likelyPrecision":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"The single precision under which every coordinate is a valid WGS 84 position, or null when both or neither qualify. A hypothesis, not a verdict.","example":6},"likelyPrecisionBasis":{"type":"string","description":"Why, in words, including the evidence that rules a precision out.","example":"Only precision 6 keeps every coordinate inside latitude ±90 and longitude ±180; at precision 5 latitude reaches 422.25139 at point 0."},"precisionHypotheses":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One row per candidate precision (5 then 6): { precision, verdict, firstCoordinate, lastCoordinate, latitudeRange, longitudeRange, outOfRangeAtPoint, note }, verdict being 'consistent' or 'out-of-range'. Empty array when not decodable.","example":[{"precision":5,"verdict":"out-of-range","firstCoordinate":{"latitude":422.25139,"longitude":-86.70911},"lastCoordinate":{"latitude":422.25224,"longitude":-86.70718},"latitudeRange":{"minimum":422.25139,"maximum":422.25224},"longitudeRange":{"minimum":-86.70911,"maximum":-86.70718},"outOfRangeAtPoint":0,"note":"Point 0 reads as latitude 422.25139 at precision 5, outside -90 to 90, so the string cannot be precision 5."}]},"disallowedInQueryCharacters":{"type":"array","items":{"type":"string"},"description":"The distinct characters present in 'value' that RFC 3986 section 3.4 forbids unescaped in a query component ([ \\ ] ^ ` { | }), in order of first appearance. ~, _, ? and @ are legal and never listed.","example":["|"]},"urlEncoded":{"type":"string","description":"'value' run through encodeURIComponent, ready to resend. It also escapes @ and ?, which a query component permits.","example":"e~epoA%7CjfpOiDaK"},"trace":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Up to 'traceGroups' rows: { groupIndex, pointIndex, axis, characters, characterCodes, fiveBitChunks, zigZagValue, delta, accumulated, atPrecision5, atPrecision6 }. fiveBitChunks are least-significant-first with the continuation bit stripped ((code - 63) & 0x1f), so zigZagValue === the sum of chunk[i] * 32^i exactly. Everything up to 'accumulated' is integer and precision-independent; only the last two divide by the scale factor.","example":[{"groupIndex":0,"pointIndex":0,"axis":"latitude","characters":"e~epoA","characterCodes":[101,126,101,112,111,65],"fiveBitChunks":[6,31,6,17,16,2],"zigZagValue":84450278,"delta":42225139,"accumulated":42225139,"atPrecision5":422.25139,"atPrecision6":42.225139}]}},"additionalProperties":false},"PolylineInspectMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["polyline"]},"params":{"type":"object","properties":{"value":{"type":"string","maxLength":8000},"traceGroups":{"type":"integer","minimum":0,"maximum":100}},"required":["value","traceGroups"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/inspect"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"PolylineInspectEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PolylineInspectRecord"},"meta":{"$ref":"#/components/schemas/PolylineInspectMeta"}},"required":["data","meta"],"additionalProperties":false},"PortsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"port":{"type":"integer","minimum":0,"maximum":65535,"description":"Assigned port number. For the eight rows IANA publishes as a port RANGE rather than a single port, this is the first port of the span and `assignedRange` states the span.","example":22},"protocol":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Transport protocol of this registration: tcp, udp, sctp or dccp. Null when the registry row carries no protocol (some Unassigned/De-registered single ports).","example":"tcp"},"serviceName":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IANA service name, exactly as registered. Null wherever the registry publishes no name: mostly Reserved and Unassigned rows, but also the legacy `any private …` entries (24, 35, 57, 59, 75, 77, 87), De-registered/Removed rows and the odd anecdotal one (1008, \"Possibly used by Sun Solaris????\"). Pre-RFC-6335 names may contain characters RFC 6335 §5.1 now forbids (`mdbs_daemon`, `sql*net`).","example":"ssh"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The registry's Description cell, copied verbatim — terse, occasionally stale and sometimes duplicated across rows. Null when the cell is blank.","example":"The Secure Shell (SSH) Protocol"},"registrationDate":{"anyOf":[{"type":"string","pattern":"^\\d{4}-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12]\\d|3[01]))?$"},{"type":"null"}],"description":"Date IANA records for the assignment, in whichever precision the registry publishes. Null for the many older rows that carry none, and for every port-range row (the registry dates none of them).","example":"2015-04-23"},"reference":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The row's own Reference cell in IANA's bracketed form, e.g. `[RFC4251]` or `[RFC3501][RFC8314][RFC9051]`. Null when the registry cites nothing.","example":"[RFC4251]"},"range":{"type":"string","description":"`system` for 0-1023 (Well Known Ports) or `registered` for 1024-49151 (User Ports), per RFC 6335 §6.","example":"system"},"assignedRange":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Null for the per-port rows that make up all but eight registrations. The exceptions are the spans IANA assigns as one row — `x11` on `6000-6063`, `flex-lm` on `27000-27009`, `swx` on `7300-7359`, `vrml-multi-use` on `4200-4299`, `ircu` on `6665-6669`, `active-net` on `3322-3325`, `satvid-datalnk` on `3367-3371` — where this states the span instead of us inventing a row per port.","example":null},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The registry's Assignment Notes cell verbatim — de-assignment history, replacement names and DNS-SD guidance. Null when empty.","example":"Defined TXT keys: u=<username> p=<password>"},"unauthorizedUse":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The registry's own Unauthorized Use Reported cell verbatim: IANA's note that software squats on this port. Null when IANA reports none — it is not a claim about what is actually running.","example":"PORT 90 also being used unofficially by Pointcast"}},"additionalProperties":false},"PortsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["ports"]},"params":{"type":"object","properties":{"portFrom":{"type":"integer","minimum":0,"maximum":65535},"portTo":{"type":"integer","minimum":0,"maximum":65535},"protocol":{"type":"string","enum":["tcp","udp","sctp","dccp"]},"service":{"type":"string","minLength":1,"maxLength":64},"search":{"type":"string","minLength":1,"maxLength":64},"range":{"type":"string","enum":["system","registered"]}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","count"],"additionalProperties":false},"PortsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortsRootRecord"}},"meta":{"$ref":"#/components/schemas/PortsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"PortsLookupRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"port":{"anyOf":[{"type":"integer","minimum":0,"maximum":65535},{"type":"null"}],"description":"The port that was looked up; null when the lookup was by service name.","example":22},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The service name that was looked up, in the registry's own spelling; null when the lookup was by port.","example":null},"protocol":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The transport protocol filter that was applied, or null when none was.","example":null},"ports":{"type":"array","items":{"type":"integer"},"description":"Distinct `port` values across the returned registrations, ascending. For a range assignment that is the first port of the span, not every port it covers.","example":[22]},"registrationCount":{"type":"integer","description":"Number of entries in `registrations` — 1 or more, since a miss is a 404.","example":3},"registrations":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Every matching row this API ships, in registry order, each with the same fields as the list route.","example":[{"port":22,"protocol":"tcp","serviceName":"ssh","description":"The Secure Shell (SSH) Protocol","registrationDate":null,"reference":"[RFC4251]","range":"system","assignedRange":null,"note":"Defined TXT keys: u=<username> p=<password>","unauthorizedUse":null}]}},"additionalProperties":false},"PortsLookupMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["ports"]},"params":{"type":"object","properties":{"port":{"type":"integer","minimum":0,"maximum":65535},"name":{"type":"string","minLength":1,"maxLength":64},"protocol":{"type":"string","enum":["tcp","udp","sctp","dccp"]}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/lookup"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"PortsLookupEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortsLookupRecord"},"meta":{"$ref":"#/components/schemas/PortsLookupMeta"}},"required":["data","meta"],"additionalProperties":false},"PostalCodeFormatsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"country":{"type":"string","description":"English ISO 3166-1 name, joined from the country dataset at load time.","example":"Netherlands"},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 code (uppercase).","example":"NL"},"postalCodeSystem":{"type":"string","description":"`national` (a system covering the territory, with at least one verified format), `limited` (codes cover part of the territory, or no single expressible format is published), `none` (no postal code system — an address form should not ask for one) or `unverified` (the two upstreams disagree and we could not settle it against the operator).","example":"national"},"patterns":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Every accepted written form, most common first. Each entry has `mask` (the written form in this API's mask alphabet), `regex` (an anchored, capture-free ECMAScript source in the requested `separators` mode — case-insensitive by construction, so it needs no `/i` flag and works unchanged in an HTML `pattern=` attribute) and `example` (a shape-conforming illustration of the written form, not necessarily a code the operator has assigned). Empty unless `postalCodeSystem` is `national` or `limited`.","example":[{"mask":"#### @@","regex":"^[1-9]\\d{3}[ -]?(?:[A-RT-Za-rt-z][A-Za-z]|[Ss][BCE-RT-Zbce-rt-z])$","example":"1012 AB"}]},"precision":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"`national-rule` when every pattern encodes the operator's published rule (letter sets, digit ranges, fixed prefixes); `shape-only` when at least one pattern constrains only the count and kind of characters, so it accepts shape-correct codes the operator never assigns; `null` when there are no patterns.","example":"national-rule"},"postalCodeName":{"type":"string","description":"What the country's own address metadata calls the field: `postal code`, `zip code`, `eircode` or `PIN code`. Mapped 1:1 from libaddressinput's `zip_name_type`, with the key absent meaning `postal code`. Not a claim about the local-language term — `CEP`, `PLZ`, `CAP` and 郵便番号 are deliberately out of scope.","example":"postal code"},"requiredInAddress":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether a postal code is required in a complete address: `true` where libaddressinput's `require` contains `Z`, `false` where `require` is present without it, and `null` where `require` is absent entirely — the source records no requirement either way. Rows where it is `null` match neither `required=true` nor `required=false`.","example":true},"countryPrefix":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The optional international display prefix written before the code (`L-`, `LT-`, `CH-`, `AZ `). The prefix is not part of the code; `/validate` accepts it with or without its trailing separator and strips it. `null` where none is documented.","example":null},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Honest caveats: partial coverage, legacy forms, letters the operator excludes, why this row departs from the primary source, what is deliberately excluded. Every factual claim here is covered by `officialSource` or by a defect visible in the pinned snapshot itself. `null` where there is nothing to disclose.","example":"PostNL does not assign the letter combinations SA, SD or SS, and the numeric part never starts with 0. GeoNames' mask encodes neither restriction."},"officialSource":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"HTTPS URL of the national operator or standards publication this row was verified against — a citation for a human, never fetched at request time. Non-null for every `national-rule` row. `null` where the row is taken verbatim from the agreeing upstreams, or where a divergence is proven by a defect inside the pinned snapshots and needs no external fact.","example":"https://www.postnl.nl/en/find-a-postcode/"}},"additionalProperties":false},"PostalCodeFormatsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["postal-code-formats"]},"params":{"type":"object","properties":{"system":{"type":"string","enum":["national","limited","none","unverified","any"]},"search":{"type":"string","minLength":1,"maxLength":60},"required":{"type":"boolean"},"precision":{"type":"string","enum":["national-rule","shape-only","any"]},"separators":{"type":"string","enum":["optional","exact"]},"offset":{"type":"integer","minimum":0,"maximum":248}},"required":["system","precision","separators","offset"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","count"],"additionalProperties":false},"PostalCodeFormatsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PostalCodeFormatsRootRecord"}},"meta":{"$ref":"#/components/schemas/PostalCodeFormatsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"PostalCodeFormatsLookupRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"country":{"type":"string","description":"English ISO 3166-1 name, joined from the country dataset at load time.","example":"Netherlands"},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 code (uppercase).","example":"NL"},"postalCodeSystem":{"type":"string","description":"`national` (a system covering the territory, with at least one verified format), `limited` (codes cover part of the territory, or no single expressible format is published), `none` (no postal code system — an address form should not ask for one) or `unverified` (the two upstreams disagree and we could not settle it against the operator).","example":"national"},"patterns":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Every accepted written form, most common first. Each entry has `mask` (the written form in this API's mask alphabet), `regex` (an anchored, capture-free ECMAScript source in the requested `separators` mode — case-insensitive by construction, so it needs no `/i` flag and works unchanged in an HTML `pattern=` attribute) and `example` (a shape-conforming illustration of the written form, not necessarily a code the operator has assigned). Empty unless `postalCodeSystem` is `national` or `limited`.","example":[{"mask":"#### @@","regex":"^[1-9]\\d{3}[ -]?(?:[A-RT-Za-rt-z][A-Za-z]|[Ss][BCE-RT-Zbce-rt-z])$","example":"1012 AB"}]},"precision":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"`national-rule` when every pattern encodes the operator's published rule (letter sets, digit ranges, fixed prefixes); `shape-only` when at least one pattern constrains only the count and kind of characters, so it accepts shape-correct codes the operator never assigns; `null` when there are no patterns.","example":"national-rule"},"postalCodeName":{"type":"string","description":"What the country's own address metadata calls the field: `postal code`, `zip code`, `eircode` or `PIN code`. Mapped 1:1 from libaddressinput's `zip_name_type`, with the key absent meaning `postal code`. Not a claim about the local-language term — `CEP`, `PLZ`, `CAP` and 郵便番号 are deliberately out of scope.","example":"postal code"},"requiredInAddress":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether a postal code is required in a complete address: `true` where libaddressinput's `require` contains `Z`, `false` where `require` is present without it, and `null` where `require` is absent entirely — the source records no requirement either way. Rows where it is `null` match neither `required=true` nor `required=false`.","example":true},"countryPrefix":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The optional international display prefix written before the code (`L-`, `LT-`, `CH-`, `AZ `). The prefix is not part of the code; `/validate` accepts it with or without its trailing separator and strips it. `null` where none is documented.","example":null},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Honest caveats: partial coverage, legacy forms, letters the operator excludes, why this row departs from the primary source, what is deliberately excluded. Every factual claim here is covered by `officialSource` or by a defect visible in the pinned snapshot itself. `null` where there is nothing to disclose.","example":"PostNL does not assign the letter combinations SA, SD or SS, and the numeric part never starts with 0. GeoNames' mask encodes neither restriction."},"officialSource":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"HTTPS URL of the national operator or standards publication this row was verified against — a citation for a human, never fetched at request time. Non-null for every `national-rule` row. `null` where the row is taken verbatim from the agreeing upstreams, or where a divergence is proven by a defect inside the pinned snapshots and needs no external fact.","example":"https://www.postnl.nl/en/find-a-postcode/"}},"additionalProperties":false},"PostalCodeFormatsLookupMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["postal-code-formats"]},"params":{"type":"object","properties":{"country":{"type":"string","minLength":2,"maxLength":3},"separators":{"type":"string","enum":["optional","exact"]}},"required":["country","separators"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/lookup"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"PostalCodeFormatsLookupEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PostalCodeFormatsLookupRecord"},"meta":{"$ref":"#/components/schemas/PostalCodeFormatsLookupMeta"}},"required":["data","meta"],"additionalProperties":false},"PostalCodeFormatsValidateRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"country":{"type":"string","description":"The resolved ISO 3166-1 alpha-2 code.","example":"NL"},"input":{"type":"string","description":"The `code` value exactly as supplied.","example":"1012ab"},"normalized":{"type":"string","description":"The code after the documented normalisation pipeline (trim, collapse inner whitespace, uppercase, strip the country prefix). Always populated, even when invalid — input that failed the ASCII character check is echoed as typed rather than uppercased, so the offending character stays visible.","example":"1012 AB"},"prefixStripped":{"type":"boolean","description":"Whether the country's documented `countryPrefix` was removed during normalisation.","example":false},"postalCodeSystem":{"type":"string","description":"The country's classification — same values as the list route.","example":"national"},"checkable":{"type":"boolean","description":"Whether there is anything to check against: `true` when the country has at least one pattern, or when it has no postal code system at all (in which case nothing is a valid code).","example":true},"valid":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"The shape verdict: `true` only when `checkable` and `reasons` is empty, and `null` exactly when `checkable` is `false` — we do not report a verdict we cannot support. Never a claim that the code is assigned, in service or deliverable.","example":true},"reasons":{"type":"array","items":{"type":"string"},"description":"Stable reason codes in the documented order. Empty exactly when `valid` is `true`; non-empty when `valid` is `null`.","example":[]},"matchedMask":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The mask of the first pattern that matched; `null` when nothing matched.","example":"#### @@"},"matchedRegex":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"That pattern's regex in the requested `separators` mode; `null` when nothing matched.","example":"^[1-9]\\d{3}[ -]?(?:[A-RT-Za-rt-z][A-Za-z]|[Ss][BCE-RT-Zbce-rt-z])$"},"expectedMasks":{"type":"array","items":{"type":"string"},"description":"Every mask this country accepts, so a failing caller can be told the shape. Empty when there are none.","example":["#### @@"]},"precision":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The row's `precision`, so you know what a `true` here is worth.","example":"national-rule"}},"additionalProperties":false},"PostalCodeFormatsValidateMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["postal-code-formats"]},"params":{"type":"object","properties":{"country":{"type":"string","minLength":2,"maxLength":3},"code":{"type":"string","minLength":1,"maxLength":16},"separators":{"type":"string","enum":["optional","exact"]}},"required":["country","code","separators"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/validate"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"PostalCodeFormatsValidateEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PostalCodeFormatsValidateRecord"},"meta":{"$ref":"#/components/schemas/PostalCodeFormatsValidateMeta"}},"required":["data","meta"],"additionalProperties":false},"PostalCodesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 code of the country the shard belongs to.","example":"US"},"countryName":{"type":"string","description":"English country name, joined from the ISO 3166-1 dataset.","example":"United States"},"postalCode":{"type":"string","description":"The code exactly as GeoNames publishes it, including any internal space or hyphen (`624 66`, `100-0001`). Lookups accept the separator-free form too.","example":"94103"},"place":{"type":"string","description":"The first place name GeoNames lists for this code. Where several places share a code, the others are not carried — `placeCount` says how many there were.","example":"San Francisco"},"placeCount":{"type":"integer","description":"How many distinct place names GeoNames lists for this code (1 when the code belongs to one place). Above 1 means `place` is one of several.","example":1},"admin1":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"First-order division name (state, region, prefecture); null when the upstream row has none.","example":"California"},"admin1Code":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"First-order division code exactly as GeoNames publishes it, which is not one scheme across countries: a USPS state code in the US, a province code in Canada, an INSEE region number in France, a FIPS 10-4 code in Japan (Tokyo To is `40`, not its JIS number 13). A country can also carry two codes for the same division — `/regions` lists each of them.","example":"CA"},"admin2":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Second-order division name (county, province, municipality); null when absent upstream — New Zealand is the one bundled country whose rows carry no second-order division at all.","example":"City and County of San Francisco"},"admin2Code":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Second-order division code exactly as GeoNames publishes it. Its meaning is country-specific, and in the UK not even internally consistent: a three-digit FIPS county code in the US, a GeoNames feature id in Japan, a department number in France, and a mixture of council codes, GeoNames ids and ONS codes in the UK. Treat it as an upstream label, not a key to join on.","example":"075"},"admin3":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Third-order division name (community); null when the upstream row has none, which is most of the bundled codes — Australia, Czechia, Denmark, the Netherlands, New Zealand, Norway and Sweden carry none at all.","example":null},"admin3Code":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Third-order division code; null when absent upstream.","example":null},"latitude":{"type":"number","description":"Estimated WGS84 latitude of the code, as published. Not a surveyed centroid — see `accuracy`.","example":37.7725},"longitude":{"type":"number","description":"Estimated WGS84 longitude of the code, as published.","example":-122.4147},"accuracy":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"GeoNames' own accuracy column. The upstream readme defines 1 = estimated, 4 = geonameid and 6 = centroid of addresses or shape; 1, 3, 4, 5, 6 all occur in the data and 3 and 5 are undefined upstream. Null for the 42% of codes that leave the column blank.","example":4}},"additionalProperties":false},"PostalCodesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["postal-codes"]},"params":{"type":"object","properties":{"country":{"type":"string","enum":["AT","AU","BE","CA","CH","CZ","DE","DK","ES","FI","FR","GB","IT","JP","MX","NL","NO","NZ","PL","SE","US"]},"postalCode":{"type":"string","minLength":1,"maxLength":24}},"required":["country","postalCode"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}}},"required":["endpoint","params","generatedAt"],"additionalProperties":false},"PostalCodesRootEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PostalCodesRootRecord"},"meta":{"$ref":"#/components/schemas/PostalCodesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"PostalCodesSearchRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 code of the country the shard belongs to.","example":"US"},"countryName":{"type":"string","description":"English country name, joined from the ISO 3166-1 dataset.","example":"United States"},"postalCode":{"type":"string","description":"The code exactly as GeoNames publishes it, including any internal space or hyphen (`624 66`, `100-0001`). Lookups accept the separator-free form too.","example":"94103"},"place":{"type":"string","description":"The first place name GeoNames lists for this code. Where several places share a code, the others are not carried — `placeCount` says how many there were.","example":"San Francisco"},"placeCount":{"type":"integer","description":"How many distinct place names GeoNames lists for this code (1 when the code belongs to one place). Above 1 means `place` is one of several.","example":1},"admin1":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"First-order division name (state, region, prefecture); null when the upstream row has none.","example":"California"},"admin1Code":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"First-order division code exactly as GeoNames publishes it, which is not one scheme across countries: a USPS state code in the US, a province code in Canada, an INSEE region number in France, a FIPS 10-4 code in Japan (Tokyo To is `40`, not its JIS number 13). A country can also carry two codes for the same division — `/regions` lists each of them.","example":"CA"},"admin2":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Second-order division name (county, province, municipality); null when absent upstream — New Zealand is the one bundled country whose rows carry no second-order division at all.","example":"City and County of San Francisco"},"admin2Code":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Second-order division code exactly as GeoNames publishes it. Its meaning is country-specific, and in the UK not even internally consistent: a three-digit FIPS county code in the US, a GeoNames feature id in Japan, a department number in France, and a mixture of council codes, GeoNames ids and ONS codes in the UK. Treat it as an upstream label, not a key to join on.","example":"075"},"admin3":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Third-order division name (community); null when the upstream row has none, which is most of the bundled codes — Australia, Czechia, Denmark, the Netherlands, New Zealand, Norway and Sweden carry none at all.","example":null},"admin3Code":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Third-order division code; null when absent upstream.","example":null},"latitude":{"type":"number","description":"Estimated WGS84 latitude of the code, as published. Not a surveyed centroid — see `accuracy`.","example":37.7725},"longitude":{"type":"number","description":"Estimated WGS84 longitude of the code, as published.","example":-122.4147},"accuracy":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"GeoNames' own accuracy column. The upstream readme defines 1 = estimated, 4 = geonameid and 6 = centroid of addresses or shape; 1, 3, 4, 5, 6 all occur in the data and 3 and 5 are undefined upstream. Null for the 42% of codes that leave the column blank.","example":4}},"additionalProperties":false},"PostalCodesSearchMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["postal-codes"]},"params":{"type":"object","properties":{"country":{"type":"string","enum":["AT","AU","BE","CA","CH","CZ","DE","DK","ES","FI","FR","GB","IT","JP","MX","NL","NO","NZ","PL","SE","US"]},"startsWith":{"type":"string","minLength":1,"maxLength":24},"place":{"type":"string","minLength":2,"maxLength":60},"admin1":{"type":"string","minLength":1,"maxLength":60},"offset":{"type":"integer","minimum":0,"maximum":142576}},"required":["country","offset"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/search"]},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","route","count"],"additionalProperties":false},"PostalCodesSearchEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PostalCodesSearchRecord"}},"meta":{"$ref":"#/components/schemas/PostalCodesSearchMeta"}},"required":["data","meta"],"additionalProperties":false},"PostalCodesRegionsRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 code.","example":"US"},"countryName":{"type":"string","description":"English country name.","example":"United States"},"admin1Code":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Division code as GeoNames publishes it; null where the file carries a name but no code.","example":"CA"},"admin1":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Division name; null where the file carries a code but no name.","example":"California"},"postalCodes":{"type":"integer","description":"Postal codes in this division.","example":2600}},"additionalProperties":false},"PostalCodesRegionsMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["postal-codes"]},"params":{"type":"object","properties":{"country":{"type":"string","enum":["AT","AU","BE","CA","CH","CZ","DE","DK","ES","FI","FR","GB","IT","JP","MX","NL","NO","NZ","PL","SE","US"]}},"required":["country"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/regions"]},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","route","count"],"additionalProperties":false},"PostalCodesRegionsEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PostalCodesRegionsRecord"}},"meta":{"$ref":"#/components/schemas/PostalCodesRegionsMeta"}},"required":["data","meta"],"additionalProperties":false},"PostalCodesCountriesRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 code.","example":"GB"},"countryName":{"type":"string","description":"English country name.","example":"United Kingdom"},"postalCodes":{"type":"integer","description":"Unique postal codes bundled for this country.","example":3002},"upstreamRows":{"type":"integer","description":"Rows in the upstream file before deduplication to one row per code.","example":27450},"places":{"type":"integer","description":"Distinct place names across those codes.","example":2588},"regions":{"type":"integer","description":"First-order divisions those codes fall in.","example":5},"codesWithoutRegion":{"type":"integer","description":"Codes whose upstream row names no first-order division at all. They are returned by /search with a null admin1 and are not counted by /regions.","example":21},"coverage":{"type":"string","description":"'full' or 'partial'.","example":"partial"},"coverageNote":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Exactly what is missing or unusual about this country's codes. Null when there is nothing to declare.","example":"Outward codes only (`SW1`, `M9`, `ZE2`) …"},"withAccuracy":{"type":"integer","description":"Codes carrying a GeoNames accuracy value; the rest expose accuracy as null.","example":2986},"sharedCodes":{"type":"integer","description":"Codes GeoNames lists under more than one place name (placeCount above 1).","example":2227},"maxPlaceCount":{"type":"integer","description":"Most place names GeoNames lists for a single code in this country.","example":162},"sourceFile":{"type":"string","description":"The upstream file this country's codes come from.","example":"https://download.geonames.org/export/zip/GB.zip"},"sourceSha256":{"type":"string","description":"SHA-256 of the pinned <CC>.txt inside that archive.","example":"8cfd9136650053f28df3ca6d5a94b285411f9f6eb1542ac7746c883734303594"}},"additionalProperties":false},"PostalCodesCountriesMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["postal-codes"]},"params":{"type":"object","properties":{"coverage":{"type":"string","enum":["any","full","partial"]}},"required":["coverage"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/countries"]},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","route","count"],"additionalProperties":false},"PostalCodesCountriesEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PostalCodesCountriesRecord"}},"meta":{"$ref":"#/components/schemas/PostalCodesCountriesMeta"}},"required":["data","meta"],"additionalProperties":false},"PostsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"'post_' + 12 hex characters + 2 hex of the record index, so ids are unique inside a response.","example":"post_9f3a2c018d3104"},"slug":{"type":"string","description":"ASCII kebab-case slug derived from the title, at most 60 characters, suffixed with the id's last 4 hex characters so it is unique inside a response.","example":"notes-on-hardening-the-default-path-3104"},"title":{"type":"string","description":"At most 80 characters, assembled from the topic's own noun phrases.","example":"Notes on hardening the default path"},"excerpt":{"type":"string","description":"Word-boundary prefix of the body's PARAGRAPH text (paragraphs joined by a single space; '## ' heading blocks and '- ' bullet blocks are skipped, because neither carries sentence punctuation and splicing them in produced run-together teasers), at most excerptChars UTF-16 code units, with a trailing … only when truncated. Never generated separately from the body.","example":"We drew the threat model on one page. The team agreed to keep it simple. Hardening the default saved every later argument. The exploit chain was three boring…"},"body":{"type":"string","description":"CommonMark subset: blank-line-separated paragraphs, at most one '## ' subheading and at most one '- ' bullet list. A subheading needs a wordCount of at least 60 and a bullet list at least 85, so short bodies are plain paragraphs. No code fences, tables, links, images, emphasis or inline code — use /api/markdown for those.","example":"We drew the threat model on one page. The team agreed to keep it simple. Hardening the default saved every later argument. The exploit chain was three boring steps.\n\n## Hardening steps\n\n- rotate every long lived credential\n- fix the boring vulnerability first\n- log what the sandbox blocks\n\nThe vulnerability had been open for months. Least privilege broke two internal tools first. We wrote it down so the next person could follow. It took longer than we expected. Rotation is easy once nothing depends on a secret."},"tags":{"type":"array","items":{"type":"string"},"description":"1–3 labels. tags[0] is the topic id and the only vocabulary the title and body draw from; the rest are that same topic's sub-labels. Posts are never cross-tagged.","example":["security","appsec"]},"author":{"type":"object","additionalProperties":true,"description":"Nested object: name, username (the ASCII slug of the name as first.last) and avatarUrl (a /api/avatars/image URL on this platform).","example":{"name":"Maria Ortiz","username":"maria.ortiz","avatarUrl":"https://randomapi.dev/api/avatars/image?style=initials&seed=maria.ortiz&name=Maria%20Ortiz"}},"status":{"type":"string","description":"draft | scheduled | published | archived.","example":"published"},"createdAt":{"type":"string","format":"date-time","description":"Sampled inside slot i of 100 equal slots across [from, to], so records come oldest-first and record i depends only on the seed, the resolved params and i — never on count.","example":"2026-02-11T08:14:02.311Z"},"publishedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"null for draft. published/archived: inside [createdAt, to]. scheduled: 1–30 days after to (clamped to 9999-12-31T23:59:59.999Z).","example":"2026-02-12T09:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"published/archived: inside [publishedAt, to]. draft/scheduled: inside [createdAt, to]. Never before createdAt.","example":"2026-03-02T16:45:10.004Z"},"wordCount":{"type":"integer","description":"Exactly the number of whitespace-separated tokens in body containing at least one ASCII letter — inside [minWords, maxWords]. The '##' and '-' markers contain no letters, so they never count.","example":85},"metrics":{"type":"object","additionalProperties":true,"description":"Nested object: views ≥ likes ≥ commentCount ≥ 0, all exactly 0 for draft and scheduled. commentCount is the post's own display counter — NOT the number of rows /api/posts/comments returns for that id.","example":{"views":18420,"likes":640,"commentCount":71}},"coverImageUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"A /api/images/placeholder URL labelled with the topic; null for roughly 1 post in 5 so card layouts have to handle the fallback.","example":"https://randomapi.dev/api/images/placeholder?width=1200&height=630&text=security"}},"additionalProperties":false},"PostsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["posts"]},"params":{"type":"object","properties":{"tag":{"type":"string","enum":["engineering","design","product","security","data","career"]},"status":{"type":"string","enum":["draft","scheduled","published","archived"]},"tagCount":{"type":"integer","minimum":1,"maximum":3},"minWords":{"type":"integer","minimum":20,"maximum":160},"maxWords":{"type":"integer","minimum":20,"maximum":160},"excerptChars":{"type":"integer","minimum":40,"maximum":200},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["minWords","maxWords","excerptChars"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"PostsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PostsRootRecord"}},"meta":{"$ref":"#/components/schemas/PostsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"PostsCommentsRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"'comment_' + 12 hex characters + 2 hex of the row index, so ids are unique inside a response.","example":"comment_4c81be02a71d05"},"postId":{"type":"string","description":"Your postId, or one of postCount synthetic 'post_…' ids. A reply always shares its parent's postId.","example":"post_9f3a2c018d3104"},"parentId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"null for a root comment; otherwise the id of a row printed EARLIER in the same response.","example":"comment_4c81be02a71d02"},"depth":{"type":"integer","description":"0 for a root, otherwise parent.depth + 1; never above maxDepth.","example":1},"author":{"type":"object","additionalProperties":true,"description":"Nested object: name, email (<first.last>@example.com/.net/.org — RFC 2606 §3 reserved, so it can never deliver mail) and avatarUrl (a /api/avatars/image URL on this platform).","example":{"name":"Jonas Weber","email":"jonas.weber@example.net","avatarUrl":"https://randomapi.dev/api/avatars/image?style=initials&seed=jonas.weber&name=Jonas%20Weber"}},"body":{"type":"string","description":"Plain text — no markdown at all, because a comment box is not a CMS editor.","example":"This matches what we saw in staging. We hit the same thing again."},"wordCount":{"type":"integer","description":"Whitespace-separated tokens in body containing at least one ASCII letter; inside [minWords, maxWords].","example":13},"createdAt":{"type":"string","format":"date-time","description":"Sampled inside slot i of 100 equal slots across [from, to], so rows are chronological AND parent-first at once — a reply is never dated before the comment it answers.","example":"2026-01-18T11:02:44.918Z"},"updatedAt":{"type":"string","format":"date-time","description":"Exactly createdAt when edited is false; strictly later (and ≤ to) when it is true.","example":"2026-01-18T11:02:44.918Z"},"edited":{"type":"boolean","description":"True for roughly 1 row in 6 — true exactly when updatedAt > createdAt.","example":false},"likes":{"type":"integer","description":"0–999, skewed low the way real comment sections are.","example":4},"status":{"type":"string","description":"published | pending | spam. Note this enum differs from the post route's status.","example":"published"}},"additionalProperties":false},"PostsCommentsMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["posts"]},"params":{"type":"object","properties":{"postId":{"type":"string","minLength":1,"maxLength":64},"postCount":{"type":"integer","minimum":1,"maximum":10},"maxDepth":{"type":"integer","minimum":0,"maximum":4},"status":{"type":"string","enum":["published","pending","spam"]},"minWords":{"type":"integer","minimum":3,"maximum":60},"maxWords":{"type":"integer","minimum":3,"maximum":60},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["maxDepth","minWords","maxWords"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/comments"]},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","route","count","seed"],"additionalProperties":false},"PostsCommentsEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PostsCommentsRecord"}},"meta":{"$ref":"#/components/schemas/PostsCommentsMeta"}},"required":["data","meta"],"additionalProperties":false},"ProductsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"name":{"type":"string","description":"Category-themed product name: adjective + material + noun from the category's pools.","example":"Wireless Aluminum Headphones"},"description":{"type":"string","description":"1–2 sentence marketing blurb that mentions the product and its category.","example":"Meet the wireless aluminum headphones — a customer favorite from the electronics range."},"category":{"type":"string","description":"One of the 10 product categories.","example":"electronics"},"price":{"type":"number","description":"Price within minPrice..maxPrice, rounded to the currency's decimal digits (whole numbers for JPY/KRW).","example":129.99},"currency":{"type":"string","description":"ISO 4217 code the price is denominated in.","example":"USD"},"sku":{"type":"string","description":"Stock keeping unit: 3-letter category prefix, 5 digits, 2 letters (e.g. ELE-04821-QX).","example":"ELE-04821-QX"},"ean13":{"type":"string","description":"13-digit European Article Number with a valid GS1 check digit (kept as a string to preserve leading zeros).","example":"4006381333931"},"rating":{"type":"number","description":"Average customer rating, 1.0–5.0 in 0.1 steps.","example":4.3},"inStock":{"type":"boolean","description":"Availability flag (true for roughly 80% of records).","example":true},"imageUrl":{"type":"string","format":"uri","description":"Ready-to-use 640×480 placeholder from this platform's image API, labeled with the category.","example":"https://randomapi.dev/api/images/placeholder?width=640&height=480&text=electronics"}},"additionalProperties":false},"ProductsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["products"]},"params":{"type":"object","properties":{"category":{"type":"string","enum":["electronics","clothing","home","beauty","sports","toys","books","food","automotive","garden"]},"minPrice":{"type":"number","minimum":0,"maximum":1000000},"maxPrice":{"type":"number","minimum":0,"maximum":1000000},"currency":{"type":"string"}},"required":["minPrice","maxPrice","currency"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"ProductsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ProductsRootRecord"}},"meta":{"$ref":"#/components/schemas/ProductsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"PunycodeEncodeRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"input":{"type":"string","description":"The domain exactly as supplied, after surrounding whitespace is trimmed.","example":"münchen.de"},"ascii":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ASCII (A-label) form, with 'xn--' added only to labels containing non-ASCII code points. Null when a label could not be converted at all: it holds a code point the URL host parser forbids, the runtime refused to map it, or it is an xn-- label that does not decode.","example":"xn--mnchen-3ya.de"},"unicode":{"type":"string","description":"Unicode (U-label) form: labels supplied as Unicode after UTS #46 mapping (lower-cased, NFC-normalized, compatibility characters folded), and labels supplied as xn-- shown as their decoded content, which the standard validates without mapping and so is not re-normalized.","example":"münchen.de"},"isIdn":{"type":"boolean","description":"True when at least one label needs Punycode.","example":true},"asciiLength":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Byte length of the ASCII form excluding the DNS root label and its dot; the limit is 253. Null when ascii is null.","example":17},"valid":{"type":"boolean","description":"True when every rule this API checks passes. Call /analyze for the rules that failed.","example":true},"labels":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Per-label conversion: index, input, unicode, ascii, isAce, isIdn, asciiLength and valid.","example":[{"index":0,"input":"münchen","unicode":"münchen","ascii":"xn--mnchen-3ya","isAce":false,"isIdn":true,"asciiLength":14,"valid":true}]}},"additionalProperties":false},"PunycodeEncodeMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["punycode"]},"params":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"maxLength":1024},"mode":{"type":"string","enum":["domain","label"]},"transitional":{"type":"boolean"},"useStd3AsciiRules":{"type":"boolean"}},"required":["domain","mode","transitional","useStd3AsciiRules"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/encode"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"PunycodeEncodeEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PunycodeEncodeRecord"},"meta":{"$ref":"#/components/schemas/PunycodeEncodeMeta"}},"required":["data","meta"],"additionalProperties":false},"PunycodeDecodeRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"input":{"type":"string","description":"The domain exactly as supplied, after surrounding whitespace is trimmed.","example":"xn--mnchen-3ya.de"},"ascii":{"type":"string","description":"The input lower-cased, which is the canonical case for A-labels in the DNS.","example":"xn--mnchen-3ya.de"},"unicode":{"type":"string","description":"Decoded U-label form; a label that fails to decode is left unchanged.","example":"münchen.de"},"isIdn":{"type":"boolean","description":"True when at least one label carried the xn-- ACE prefix and decoded successfully.","example":true},"roundTripsExactly":{"type":"boolean","description":"True when re-encoding every decoded label with RFC 3492 reproduces the supplied A-label exactly.","example":true},"labels":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Per-label decoding: index, ascii, unicode, isAce, isIdn, roundTripsExactly, canonicalAscii (the form a conforming encoder would produce) and error.","example":[{"index":0,"ascii":"xn--mnchen-3ya","unicode":"münchen","isAce":true,"isIdn":true,"roundTripsExactly":true,"canonicalAscii":"xn--mnchen-3ya","error":null}]}},"additionalProperties":false},"PunycodeDecodeMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["punycode"]},"params":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"maxLength":1024},"mode":{"type":"string","enum":["domain","label"]}},"required":["domain","mode"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/decode"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"PunycodeDecodeEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PunycodeDecodeRecord"},"meta":{"$ref":"#/components/schemas/PunycodeDecodeMeta"}},"required":["data","meta"],"additionalProperties":false},"PunycodeAnalyzeRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"input":{"type":"string","description":"The domain exactly as supplied, after surrounding whitespace is trimmed.","example":"münchen.de"},"ascii":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ASCII (A-label) form, or null when a label could not be converted at all. A label that merely breaks a rule — including the bidi rule — still gets its A-label.","example":"xn--mnchen-3ya.de"},"unicode":{"type":"string","description":"Unicode (U-label) form after mapping and Punycode decoding. For a label the runtime refused to map, this is a best-effort case-folded NFC form and the failures array says so with uts46-processing.","example":"münchen.de"},"valid":{"type":"boolean","description":"True when the failures array is empty.","example":true},"isIdn":{"type":"boolean","description":"True when at least one label needs Punycode.","example":true},"isBidiDomain":{"type":"boolean","description":"True when some label contains a right-to-left character, which is what makes the RFC 5893 Bidi Rule apply to every label in the name.","example":false},"asciiLength":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Byte length of the ASCII form excluding the DNS root label and its dot; the limit is 253.","example":17},"labels":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Per-label result: index, input, unicode, ascii, isAce, isIdn, asciiLength, valid and direction — rtl when the label contains an R, AL or AN character (RFC 5893 section 1.4), which is the test that makes the whole name a bidi domain, not the first-character test that picks which conditions apply.","example":[{"index":0,"input":"münchen","unicode":"münchen","ascii":"xn--mnchen-3ya","isAce":false,"isIdn":true,"asciiLength":14,"valid":true,"direction":"ltr"}]},"failures":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One entry per violated rule: label, labelIndex (null for whole-name rules), rule and a detail sentence naming the clause it comes from. Empty when the domain is valid.","example":[{"label":"ab--cd","labelIndex":0,"rule":"hyphen-3-4","detail":"A label must not contain '--' in the third and fourth character positions; those positions are reserved for ACE prefixes such as 'xn--' (RFC 5891 section 4.2.3.1)."}]}},"additionalProperties":false},"PunycodeAnalyzeMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["punycode"]},"params":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"maxLength":1024},"transitional":{"type":"boolean"},"useStd3AsciiRules":{"type":"boolean"}},"required":["domain","transitional","useStd3AsciiRules"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/analyze"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"PunycodeAnalyzeEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PunycodeAnalyzeRecord"},"meta":{"$ref":"#/components/schemas/PunycodeAnalyzeMeta"}},"required":["data","meta"],"additionalProperties":false},"QrCodesInfoRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"version":{"type":"integer","minimum":1,"maximum":40,"description":"Smallest QR version whose data capacity fits the payload at this level.","example":2},"modules":{"type":"integer","description":"Modules per side of the symbol, excluding the quiet zone (4 × version + 17).","example":25},"eccLevel":{"type":"string","enum":["L","M","Q","H"],"description":"Error-correction level used for the calculation.","example":"M"},"mode":{"type":"string","enum":["numeric","alphanumeric","byte"],"description":"Encoding mode actually applied after 'auto' resolution.","example":"byte"},"capacityBits":{"type":"integer","description":"Data-codeword capacity of this version and level, in bits (error-correction codewords excluded).","example":224},"dataBits":{"type":"integer","description":"Bits the segment occupies: 4-bit mode indicator + character-count indicator + payload.","example":180},"remainderBits":{"type":"integer","enum":[0,3,4,7],"description":"Symbol bits left over once whole codewords are placed; encoded as zero, then masked like any other data module.","example":7},"maskPattern":{"type":"integer","minimum":0,"maximum":7,"description":"Data mask chosen by scoring all eight patterns with the four penalty rules.","example":4},"capacityByLevel":{"type":"object","additionalProperties":true,"description":"Maximum characters this version holds in the selected mode at each level (UTF-8 bytes in byte mode): { L, M, Q, H }.","example":{"L":32,"M":26,"Q":20,"H":14}},"quietZoneModules":{"type":"integer","description":"Quiet zone the /image route applies by default, in modules.","example":4},"svgWidth":{"type":"integer","description":"Width in pixels /image returns at its default scale=4 and quietZone=4.","example":132},"svgHeight":{"type":"integer","description":"Height in pixels /image returns at its default scale=4 and quietZone=4 (always equal to svgWidth).","example":132}},"additionalProperties":false},"QrCodesInfoMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["qr-codes"]},"params":{"type":"object","properties":{"data":{"type":"string","minLength":1,"maxLength":900},"ecc":{"type":"string","enum":["L","M","Q","H"]},"mode":{"type":"string","enum":["auto","numeric","alphanumeric","byte"]}},"required":["data","ecc","mode"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/info"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"QrCodesInfoEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/QrCodesInfoRecord"},"meta":{"$ref":"#/components/schemas/QrCodesInfoMeta"}},"required":["data","meta"],"additionalProperties":false},"QuotesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"text":{"type":"string","description":"The quote, in its classic public-domain English rendering.","example":"When in doubt, tell the truth."},"author":{"type":"string","description":"The verified author; unattributable sayings are labelled e.g. 'Anonymous (Japanese proverb)'.","example":"Mark Twain"},"tags":{"type":"array","items":{"type":"string"},"description":"Themes from the fixed set: wisdom, life, courage, work, happiness, time, truth, change, success, nature, love, art.","example":["truth","wisdom"]}},"additionalProperties":false},"QuotesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["quotes"]},"params":{"type":"object","properties":{"author":{"type":"string"},"tag":{"type":"string","enum":["wisdom","life","courage","work","happiness","time","truth","change","success","nature","love","art","any"]},"maxLength":{"type":"integer","minimum":20,"maximum":500}},"required":["tag"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"QuotesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/QuotesRootRecord"}},"meta":{"$ref":"#/components/schemas/QuotesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"RandomPickRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"index":{"type":"integer","description":"Zero-based position of this independent draw in the returned batch.","example":0},"value":{"type":"string","description":"The picked option — always one of the provided 'options'.","example":"rock"}},"additionalProperties":false},"RandomPickMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["random"]},"params":{"type":"object","properties":{"options":{"type":"array","items":{"type":"string"},"minItems":1},"weights":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["options"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/pick"]},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","route","count","seed"],"additionalProperties":false},"RandomPickEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RandomPickRecord"}},"meta":{"$ref":"#/components/schemas/RandomPickMeta"}},"required":["data","meta"],"additionalProperties":false},"RandomShuffleRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"index":{"type":"integer","description":"Zero-based position of this independent shuffle in the returned batch.","example":0},"items":{"type":"array","items":{"type":"string"},"description":"The input items in their original order, echoed for easy comparison.","example":["alice","bob","carol","dave"]},"shuffled":{"type":"array","items":{"type":"string"},"description":"The same items in random order — an unbiased Fisher–Yates permutation.","example":["carol","alice","dave","bob"]}},"additionalProperties":false},"RandomShuffleMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["random"]},"params":{"type":"object","properties":{"items":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["items"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/shuffle"]},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","route","count","seed"],"additionalProperties":false},"RandomShuffleEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RandomShuffleRecord"}},"meta":{"$ref":"#/components/schemas/RandomShuffleMeta"}},"required":["data","meta"],"additionalProperties":false},"RandomBooleanRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"index":{"type":"integer","description":"Zero-based position of this independent trial in the returned batch.","example":0},"value":{"type":"boolean","description":"The flip result — true with the requested probability.","example":true},"probability":{"type":"number","description":"Echo of the probability that produced this flip (default 0.5).","example":0.7}},"additionalProperties":false},"RandomBooleanMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["random"]},"params":{"type":"object","properties":{"probability":{"type":"number","minimum":0,"maximum":1}},"required":["probability"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/boolean"]},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","route","count","seed"],"additionalProperties":false},"RandomBooleanEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RandomBooleanRecord"}},"meta":{"$ref":"#/components/schemas/RandomBooleanMeta"}},"required":["data","meta"],"additionalProperties":false},"RelationalSeedRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"schema":{"type":"string","description":"Resolved schema: ecommerce, saas or blog.","example":"ecommerce"},"asOf":{"type":"string","format":"date-time","description":"Resolved timestamp anchor; no generated row is dated after it.","example":"2026-01-15T09:00:00Z"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ISO 4217 code used for the money columns; null for schema=blog, which has none.","example":"USD"},"idStyle":{"type":"string","description":"Identifier format used for every primary and foreign key.","example":"int"},"rowCount":{"type":"integer","description":"Total rows across all tables (capped at 400).","example":118},"tableOrder":{"type":"array","items":{"type":"string"},"description":"Table names in topological insertion order — parents before the rows that reference them.","example":["categories","products","customers","orders","order_items"]},"foreignKeys":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Every foreign key in the schema: table, column, whether it is nullable, and the referenced table/column.","example":[{"table":"products","column":"category_id","nullable":false,"references":{"table":"categories","column":"id"}}]},"tables":{"type":"object","additionalProperties":true,"description":"The rows themselves, keyed by table name in tableOrder. Every non-null foreign-key value appears as a primary key in the referenced table of this same response.","example":{"categories":[{"id":1,"slug":"home-kitchen","name":"Home & Kitchen"}],"customers":[{"id":1,"email":"emily.carter1@example.com","full_name":"Emily Carter","city":"Portland","country_code":"US","is_active":true,"created_at":"2025-04-18T07:31:44Z"}]}}},"additionalProperties":false},"RelationalSeedRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["relational-seed"]},"params":{"type":"object","properties":{"schema":{"type":"string","enum":["ecommerce","saas","blog"]},"customers":{"type":"integer","minimum":1,"maximum":50},"ordersPerCustomer":{"type":"integer","minimum":0,"maximum":5},"itemsPerOrder":{"type":"integer","minimum":1,"maximum":6},"idStyle":{"type":"string","enum":["int","uuid","prefixed"]},"currency":{"type":"string","minLength":3,"maxLength":3},"seed":{"type":"integer","minimum":0,"maximum":4294967295},"asOf":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["schema","customers","ordersPerCustomer","itemsPerOrder","idStyle","currency","seed"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"locale":{"type":"string","enum":["en","da","de","fr","es","it","pt","ja"]}},"required":["endpoint","params","generatedAt","locale"],"additionalProperties":false},"RelationalSeedRootEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/RelationalSeedRootRecord"},"meta":{"$ref":"#/components/schemas/RelationalSeedRootMeta"}},"required":["data","meta"],"additionalProperties":false},"RelationalSeedSqlRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"schema":{"type":"string","description":"Resolved schema: ecommerce, saas or blog.","example":"ecommerce"},"dialect":{"type":"string","description":"Dialect the script was rendered for.","example":"postgres"},"idStyle":{"type":"string","description":"Identifier format used for every key column.","example":"int"},"includeDdl":{"type":"boolean","description":"Whether CREATE TABLE statements were included.","example":true},"tableOrder":{"type":"array","items":{"type":"string"},"description":"Insertion order of the statements — parents before the rows that reference them.","example":["categories","products","customers","orders","order_items"]},"rowCount":{"type":"integer","description":"Total rows inserted by the script.","example":118},"statementCount":{"type":"integer","description":"Number of executable statements (pragma + CREATE TABLEs + INSERTs).","example":10},"byteLength":{"type":"integer","description":"UTF-8 byte length of the sql field.","example":14820},"sql":{"type":"string","description":"The complete script: header comments, optional DDL, then one multi-row INSERT per non-empty table.","example":"CREATE TABLE \"categories\" (\n  \"id\" BIGINT NOT NULL,\n  \"slug\" TEXT NOT NULL,\n  \"name\" TEXT NOT NULL,\n  PRIMARY KEY (\"id\")\n);\n\nINSERT INTO \"categories\" (\"id\", \"slug\", \"name\") VALUES\n  (1, 'home-kitchen', 'Home & Kitchen');"}},"additionalProperties":false},"RelationalSeedSqlMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["relational-seed"]},"params":{"type":"object","properties":{"schema":{"type":"string","enum":["ecommerce","saas","blog"]},"dialect":{"type":"string","enum":["postgres","mysql","sqlite"]},"includeDdl":{"type":"boolean"},"customers":{"type":"integer","minimum":1,"maximum":50},"ordersPerCustomer":{"type":"integer","minimum":0,"maximum":5},"itemsPerOrder":{"type":"integer","minimum":1,"maximum":6},"idStyle":{"type":"string","enum":["int","uuid","prefixed"]},"currency":{"type":"string","minLength":3,"maxLength":3},"seed":{"type":"integer","minimum":0,"maximum":4294967295},"asOf":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["schema","dialect","includeDdl","customers","ordersPerCustomer","itemsPerOrder","idStyle","currency","seed"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/sql"]},"locale":{"type":"string","enum":["en","da","de","fr","es","it","pt","ja"]}},"required":["endpoint","params","generatedAt","route","locale"],"additionalProperties":false},"RelationalSeedSqlEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/RelationalSeedSqlRecord"},"meta":{"$ref":"#/components/schemas/RelationalSeedSqlMeta"}},"required":["data","meta"],"additionalProperties":false},"ReturnsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Distinct fictional return ID.","example":"ret_930ac8204f00_00"},"returnNumber":{"type":"string","description":"Human-readable fictional RET number.","example":"RET-ABCD2345"},"orderId":{"type":"string","description":"Synthetic related order ID.","example":"ord_demo"},"status":{"type":"string","description":"Requested reverse-logistics/refund status.","example":"received"},"reason":{"type":"string","description":"damaged | wrongItem | notAsDescribed | changedMind | duplicate.","example":"damaged"},"currency":{"type":"string","description":"USD | EUR | DKK | GBP.","example":"DKK"},"createdAt":{"type":"string","format":"date-time","description":"Request creation inside from/to.","example":"2026-06-10T08:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Exactly the final lifecycle event timestamp.","example":"2026-06-12T08:00:00.000Z"},"approvedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Present from approved through refunded.","example":"2026-06-10T10:00:00.000Z"},"rejectedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Present only when rejected.","example":null},"cancelledAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Present only when cancelled.","example":null},"items":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One to four return lines with ordered/returned quantities and exact line refund.","example":[{"orderLineId":"line_demo","productId":"prd_demo","name":"Demo USB Hub","orderedQuantity":2,"returnQuantity":1,"unitPriceMinor":10000,"lineRefundMinor":10000}]},"refund":{"type":"object","additionalProperties":true,"description":"Exact subtotal, fee, estimate, actual amount and nullable refundedAt.","example":{"subtotalMinor":10000,"restockingFeeRate":10,"restockingFeeMinor":1000,"estimatedMinor":9000,"refundedMinor":0,"refundedAt":null}},"reverseShipment":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"Generic label/transit/received data from approved onward.","example":{"status":"inTransit","trackingNumber":"RET-ABCD2345","trackingUrl":"https://returns.example.com/track/RET-ABCD2345","shippedAt":"2026-06-11T08:00:00.000Z","receivedAt":null}},"events":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Chronological branch-correct lifecycle events.","example":[{"status":"requested","message":"Fictional return request created","createdAt":"2026-06-10T08:00:00.000Z"}]}},"additionalProperties":false},"ReturnsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["returns"]},"params":{"type":"object","properties":{"status":{"type":"string","enum":["requested","approved","inTransit","received","refunded","rejected","cancelled"]},"reason":{"type":"string","enum":["damaged","wrongItem","notAsDescribed","changedMind","duplicate"]},"currency":{"type":"string","enum":["USD","EUR","DKK","GBP"]},"minItems":{"type":"integer","minimum":1,"maximum":4},"maxItems":{"type":"integer","minimum":1,"maximum":4},"restockingFeeRate":{"type":"number","minimum":0,"maximum":20},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["currency","minItems","maxItems","restockingFeeRate"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"ReturnsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ReturnsRootRecord"}},"meta":{"$ref":"#/components/schemas/ReturnsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"ReverseDnsEncodeRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"family":{"type":"integer","description":"IP address family: 4 for IPv4 or 6 for IPv6.","example":4},"ip":{"type":"string","description":"Canonical IP address decoded from or encoded into the reverse name.","example":"10.2.0.52"},"reverseName":{"type":"string","description":"Canonical lowercase PTR owner name with its root-label trailing dot.","example":"52.0.2.10.in-addr.arpa."},"zone":{"type":"string","description":"Reverse namespace selected for the address family.","example":"in-addr.arpa."}},"additionalProperties":false},"ReverseDnsEncodeMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["reverse-dns"]},"params":{"type":"object","properties":{"ip":{"type":"string","minLength":2,"maxLength":45}},"required":["ip"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/encode"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"ReverseDnsEncodeEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ReverseDnsEncodeRecord"},"meta":{"$ref":"#/components/schemas/ReverseDnsEncodeMeta"}},"required":["data","meta"],"additionalProperties":false},"ReverseDnsDecodeRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"family":{"type":"integer","description":"IP address family: 4 for IPv4 or 6 for IPv6.","example":4},"ip":{"type":"string","description":"Canonical IP address decoded from or encoded into the reverse name.","example":"10.2.0.52"},"reverseName":{"type":"string","description":"Canonical lowercase PTR owner name with its root-label trailing dot.","example":"52.0.2.10.in-addr.arpa."},"zone":{"type":"string","description":"Reverse namespace selected for the address family.","example":"in-addr.arpa."}},"additionalProperties":false},"ReverseDnsDecodeMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["reverse-dns"]},"params":{"type":"object","properties":{"name":{"type":"string","minLength":12,"maxLength":80}},"required":["name"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/decode"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"ReverseDnsDecodeEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ReverseDnsDecodeRecord"},"meta":{"$ref":"#/components/schemas/ReverseDnsDecodeMeta"}},"required":["data","meta"],"additionalProperties":false},"ReviewsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"rating":{"type":"integer","description":"Star rating within minRating..maxRating. Unclamped distribution is J-shaped: ~40% 5★, ~20% 1★.","example":5},"title":{"type":"string","description":"Short headline built strictly from the rating's sentiment word pool.","example":"Simply wonderful"},"body":{"type":"string","description":"2–3 sentence review text, sentiment-coherent with the rating: 4–5★ praise, 3★ lukewarm, 1–2★ complaints — never mixed.","example":"This kit is outstanding. The battery life is brilliant. Overall, I would recommend it to anyone."},"author":{"type":"string","description":"Reviewer's full name.","example":"Emily Carter"},"date":{"type":"string","format":"date","description":"Review date, uniformly distributed within from..to (inclusive).","example":"2026-03-14"},"verified":{"type":"boolean","description":"Verified-purchase flag (true for roughly 3 in 4 reviews).","example":true},"helpfulCount":{"type":"integer","description":"Helpful votes, 0–500, skewed low like real review pages.","example":12}},"additionalProperties":false},"ReviewsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["reviews"]},"params":{"type":"object","properties":{"minRating":{"type":"integer","minimum":1,"maximum":5},"maxRating":{"type":"integer","minimum":1,"maximum":5},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["minRating","maxRating"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"ReviewsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ReviewsRootRecord"}},"meta":{"$ref":"#/components/schemas/ReviewsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"RobotsTxtCheckRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"userAgent":{"type":"string","description":"The product token that was tested, as supplied. Token matching itself is case-insensitive.","example":"foobot"},"matchedGroup":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Product token of the group that applied, as written in the file (the first one when several groups merge). '*' means the global group was the fallback; null means no group covers this crawler, so nothing is restricted.","example":"foobot"},"allowed":{"type":"boolean","description":"Whether the crawler may fetch the path. With no matching rule, the path is allowed.","example":false},"matchedRule":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"The rule that decided the verdict: `type` (allow|disallow), `pattern` (canonical form compared against the path), `octetLength` (the precedence measure) and `lineNumber`. Null when no rule matched.","example":{"type":"disallow","pattern":"/example/page/disallowed.gif","octetLength":28,"lineNumber":3}},"competingRules":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Every rule of the applying group(s) that matched the path, in the same shape as `matchedRule` and ordered by RFC 9309 precedence — most octets first, allow ahead of disallow on a tie — so the first entry is always the winner.","example":[{"type":"disallow","pattern":"/example/page/disallowed.gif","octetLength":28,"lineNumber":3},{"type":"allow","pattern":"/example/page/","octetLength":14,"lineNumber":2}]},"path":{"type":"string","description":"The path plus query string that was actually matched: the fragment removed, then the Section 2.2.2 comparison form applied (escapes of unreserved characters decoded, surviving escapes uppercased, non-ASCII UTF-8 percent-encoded). Reserved octets you send literally are compared literally.","example":"/example/page/disallowed.gif"}},"additionalProperties":false},"RobotsTxtCheckMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["robots-txt"]},"params":{"type":"object","properties":{"robots":{"type":"string"},"url":{"type":"string","minLength":1,"maxLength":2048},"path":{"type":"string","minLength":1,"maxLength":2048},"userAgent":{"type":"string","minLength":1,"maxLength":64}},"required":["robots","userAgent"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/check"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"RobotsTxtCheckEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/RobotsTxtCheckRecord"},"meta":{"$ref":"#/components/schemas/RobotsTxtCheckMeta"}},"required":["data","meta"],"additionalProperties":false},"RobotsTxtParseRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"groups":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Groups in file order: `userAgents` (the RFC 9309 product tokens that select the group) and `rules` ({ type, pattern, lineNumber }), each pattern as written in the file with only its comment and surrounding whitespace removed.","example":[{"userAgents":["*"],"rules":[{"type":"disallow","pattern":"/admin/","lineNumber":2},{"type":"allow","pattern":"/admin/public/","lineNumber":3}]}]},"sitemaps":{"type":"array","items":{"type":"string"},"description":"Value of every Sitemap line, in file order. Sitemap is not defined by RFC 9309, and these URLs are never fetched or validated here.","example":["https://example.com/sitemap.xml"]},"otherRecords":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Records outside RFC 9309 such as crawl-delay, host or clean-param: { field, value, lineNumber }. Reported so you can see them, never evaluated by /check.","example":[{"field":"crawl-delay","value":"10","lineNumber":4}]},"invalidLines":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Every line that could not be used, as { lineNumber, text, reason }: a missing ':' separator, an empty field name, an empty sitemap value, a user-agent value with no product token, or a rule that precedes the first user-agent line. The first five also appear in meta.warnings, on /check as well, so a dropped line is never silent.","example":[{"lineNumber":1,"text":"Disallow: /oops","reason":"rule precedes the first user-agent line, so RFC 9309 Section 2.2.2 requires it to be ignored"}]},"byteLength":{"type":"integer","description":"UTF-8 byte length of the text exactly as supplied, measured before parsing and including a byte order mark if you sent one.","example":110},"lineCount":{"type":"integer","description":"Number of lines, counting a single trailing line break as the end of the last line rather than a new one.","example":5}},"additionalProperties":false},"RobotsTxtParseMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["robots-txt"]},"params":{"type":"object","properties":{"robots":{"type":"string"}},"required":["robots"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/parse"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"RobotsTxtParseEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/RobotsTxtParseRecord"},"meta":{"$ref":"#/components/schemas/RobotsTxtParseMeta"}},"required":["data","meta"],"additionalProperties":false},"SearchResultsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"query":{"type":"string","description":"Original caller query.","example":"cursor pagination"},"effectiveQuery":{"type":"string","description":"Query used to build result text; equals suggestedQuery in suggestion mode.","example":"cursor pagination"},"scenario":{"type":"string","description":"results | empty | suggestion.","example":"results"},"suggestedQuery":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Explicit alternative in suggestion mode, otherwise null.","example":null},"total":{"type":"integer","description":"Exact full-result count before paging.","example":137},"sort":{"type":"string","description":"Applied sort mode.","example":"relevance"},"pageInfo":{"type":"object","additionalProperties":true,"description":"Exact one-based page bounds, totals and previous/next state.","example":{"page":1,"pageSize":10,"totalPages":14,"from":1,"to":10,"hasPreviousPage":false,"hasNextPage":true,"previousPage":null,"nextPage":2}},"results":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"At most pageSize deterministic result records with safe URLs and exact Unicode code-point highlight offsets.","example":[{"id":"result_00001_1234abcd","title":"cursor pagination — API reference 1","url":"https://search.example/results/result_00001_1234abcd","snippet":"A fictional search fixture about cursor pagination.","category":"reference","score":0.91,"updatedAt":"2026-07-01T12:00:00.000Z","highlights":[]}]},"facets":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Category counts over all matches; empty when disabled or no results.","example":[{"value":"reference","count":34}]}},"additionalProperties":false},"SearchResultsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["search-results"]},"params":{"type":"object","properties":{"query":{"type":"string","minLength":1,"maxLength":100},"scenario":{"type":"string","enum":["results","empty","suggestion"]},"suggestedQuery":{"type":"string","minLength":1,"maxLength":100},"total":{"type":"integer","minimum":0,"maximum":1000},"page":{"type":"integer","minimum":1,"maximum":1000},"pageSize":{"type":"integer","minimum":1,"maximum":50},"sort":{"type":"string","enum":["relevance","newest","oldest"]},"facets":{"type":"boolean"},"asOf":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["query","scenario","page","pageSize","sort","facets"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}}},"required":["endpoint","params","generatedAt"],"additionalProperties":false},"SearchResultsRootEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SearchResultsRootRecord"},"meta":{"$ref":"#/components/schemas/SearchResultsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"SemverParseRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"version":{"type":"string","description":"Validated SemVer string, unchanged because the accepted grammar is already canonical.","example":"1.4.0-beta.2+build.7"},"major":{"type":"integer","description":"Major version component.","example":1},"minor":{"type":"integer","description":"Minor version component.","example":4},"patch":{"type":"integer","description":"Patch version component.","example":0},"prerelease":{"type":"array","items":{"type":"string"},"description":"Ordered prerelease identifiers; empty for a stable release.","example":["beta","2"]},"build":{"type":"array","items":{"type":"string"},"description":"Ordered build-metadata identifiers, which do not affect precedence.","example":["build","7"]},"isPrerelease":{"type":"boolean","description":"True when the version has one or more prerelease identifiers.","example":true}},"additionalProperties":false},"SemverParseMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["semver"]},"params":{"type":"object","properties":{"version":{"type":"string","minLength":5,"maxLength":256}},"required":["version"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/parse"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"SemverParseEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SemverParseRecord"},"meta":{"$ref":"#/components/schemas/SemverParseMeta"}},"required":["data","meta"],"additionalProperties":false},"SemverCompareRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"left":{"type":"string","description":"Validated left-hand version, including metadata.","example":"1.9.0"},"right":{"type":"string","description":"Validated right-hand version, including metadata.","example":"1.10.0"},"comparison":{"type":"integer","enum":[-1,0,1],"description":"-1 when left is lower, 0 when precedence is equal, 1 when left is higher.","example":-1},"relation":{"type":"string","description":"less-than | equal | greater-than.","example":"less-than"}},"additionalProperties":false},"SemverCompareMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["semver"]},"params":{"type":"object","properties":{"left":{"type":"string","minLength":5,"maxLength":256},"right":{"type":"string","minLength":5,"maxLength":256}},"required":["left","right"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/compare"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"SemverCompareEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SemverCompareRecord"},"meta":{"$ref":"#/components/schemas/SemverCompareMeta"}},"required":["data","meta"],"additionalProperties":false},"SemverBumpRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"input":{"type":"string","description":"Validated input version before metadata removal.","example":"1.2.3-beta.1+build.5"},"type":{"type":"string","description":"Requested bump type: major, minor or patch.","example":"minor"},"version":{"type":"string","description":"Stable bumped version with no prerelease or build metadata.","example":"1.3.0"},"major":{"type":"integer","description":"Resulting major component.","example":1},"minor":{"type":"integer","description":"Resulting minor component.","example":3},"patch":{"type":"integer","description":"Resulting patch component.","example":0}},"additionalProperties":false},"SemverBumpMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["semver"]},"params":{"type":"object","properties":{"version":{"type":"string","minLength":5,"maxLength":256},"type":{"type":"string","enum":["major","minor","patch"]}},"required":["version","type"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/bump"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"SemverBumpEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SemverBumpRecord"},"meta":{"$ref":"#/components/schemas/SemverBumpMeta"}},"required":["data","meta"],"additionalProperties":false},"ShipmentsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Distinct shp_-prefixed synthetic shipment ID.","example":"shp_42ce8f30a91bd572_00"},"trackingNumber":{"type":"string","description":"Clearly generic SHP-{internal carrier}-{fixture} value; not a real carrier format.","example":"SHP-PLM-7QK4M8X2RP-00"},"carrier":{"type":"object","additionalProperties":true,"description":"Fictional carrier name and internal three-letter fixture code.","example":{"name":"Parcel Loom (fictional)","code":"PLM"}},"status":{"type":"string","description":"labelCreated | inTransit | outForDelivery | delivered | exception | cancelled.","example":"inTransit"},"service":{"type":"string","description":"economy | standard | express; controls the synthetic transit-day range.","example":"standard"},"origin":{"type":"object","additionalProperties":true,"description":"Synthetic city plus canonical supported ISO country code and country name.","example":{"countryCode":"DK","country":"Denmark","city":"Copenhagen"}},"destination":{"type":"object","additionalProperties":true,"description":"Synthetic destination city/country. Domestic shipments are allowed.","example":{"countryCode":"DE","country":"Germany","city":"Berlin"}},"weightKg":{"type":"number","description":"Synthetic parcel weight from 0.1 to 30 kilograms.","example":4.75},"shippedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Handoff time for inTransit/outForDelivery/delivered/exception; null for labelCreated and pre-handoff cancelled fixtures.","example":"2026-06-03T09:15:00.000Z"},"estimatedDelivery":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Synthetic estimate after handoff; null for labelCreated and cancelled fixtures.","example":"2026-06-07T09:15:00.000Z"},"deliveredAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Final delivery time only when status=delivered; null for every other status.","example":null},"events":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Chronological synthetic lifecycle events; the last event status always equals the top-level status.","example":[{"status":"labelCreated","timestamp":"2026-06-02T12:00:00.000Z","location":"Copenhagen, Denmark","description":"Shipping label created"}]}},"additionalProperties":false},"ShipmentsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["shipments"]},"params":{"type":"object","properties":{"status":{"type":"string","enum":["labelCreated","inTransit","outForDelivery","delivered","exception","cancelled"]},"service":{"type":"string","enum":["economy","standard","express"]},"originCountry":{"type":"string","minLength":2,"maxLength":2},"destinationCountry":{"type":"string","minLength":2,"maxLength":2},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"ShipmentsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ShipmentsRootRecord"}},"meta":{"$ref":"#/components/schemas/ShipmentsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"StressStringsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Stable kebab-case identifier for this fixture — safe to pin in a snapshot test.","example":"whitespace-no-break-space"},"category":{"type":"string","description":"Hazard family: rtl | bidi-control | cjk-width | combining | emoji-zwj | zero-width | homoglyph | whitespace | case-folding | normalization-unstable | length.","example":"whitespace"},"value":{"type":"string","description":"The fixture itself, exactly as authored. It travels raw through JSON, NDJSON and CSV — print it with care, or use `escaped` instead.","example":"10 kg"},"escaped":{"type":"string","description":"Print-safe rendering of `value`: every control, format character, combining mark, surrogate, line/paragraph separator and non-ASCII space becomes a \\uXXXX escape (\\u{XXXXX} above the BMP), and a literal backslash is doubled. Visible characters — RTL letters, CJK, emoji bases — are untouched, so an `escaped` value carrying Hebrew or Arabic letters still reorders the neutrals around it.","example":"10\\u00A0kg"},"codePoints":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"The DISTINCT code points of `value` in order of first appearance, each with its Unicode `name` and two-letter General_Category. Use /api/unicode/inspect for a full positional walk.","example":[{"cp":"U+0031","name":"DIGIT ONE","category":"Nd"},{"cp":"U+0030","name":"DIGIT ZERO","category":"Nd"},{"cp":"U+00A0","name":"NO-BREAK SPACE","category":"Zs"},{"cp":"U+006B","name":"LATIN SMALL LETTER K","category":"Ll"},{"cp":"U+0067","name":"LATIN SMALL LETTER G","category":"Ll"}]},"lengthUnits":{"type":"object","additionalProperties":true,"description":"All four counts that software routinely conflates: `codePoints`, `utf16Units` (String.length), `utf8Bytes` and `graphemes` (UAX #29 clusters).","example":{"codePoints":5,"utf16Units":5,"utf8Bytes":6,"graphemes":5}},"unstableUnder":{"type":"array","items":{"type":"string"},"description":"Which of NFC, NFD, NFKC and NFKD actually change this value, computed from the string itself. Empty when the value is stable under all four.","example":["NFKC","NFKD"]},"hazard":{"type":"string","description":"What is dangerous about this fixture, in one sentence.","example":"A NO-BREAK SPACE (U+00A0) where an ASCII space is expected."},"expectedBehavior":{"type":"string","description":"What correct software should do with it — the assertion your test is really making.","example":"Normalize Unicode spaces to U+0020 on input, or match whitespace with a Unicode-aware class everywhere."},"whyItBreaks":{"type":"string","description":"The mechanism by which naive code gets this wrong.","example":"JavaScript's \\s matches it but a literal ' ' does not, and NFKC turns it into a plain space — so three layers of the same stack can disagree about the token boundaries."}},"additionalProperties":false},"StressStringsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["stress-strings"]},"params":{"type":"object","properties":{"category":{"type":"string","enum":["rtl","bidi-control","cjk-width","combining","emoji-zwj","zero-width","homoglyph","whitespace","case-folding","normalization-unstable","length"]},"maxLength":{"type":"integer","minimum":1,"maximum":4000}},"required":["maxLength"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"StressStringsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/StressStringsRootRecord"}},"meta":{"$ref":"#/components/schemas/StressStringsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"StressStringsPseudoRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"input":{"type":"string","description":"The text exactly as submitted; no trimming is applied.","example":"Save changes"},"output":{"type":"string","description":"The pseudo-localized string.","example":"⟦Śáṽé ćĥáñğéś···⟧"},"style":{"type":"string","description":"Applied style: accent | bracket | both.","example":"both"},"requestedExpansion":{"type":"number","description":"The requested minimum length increase, as a fraction of the input.","example":0.35},"achievedExpansion":{"type":"number","description":"Actual increase in code points, (output - input) / input, rounded UP to 6 decimals — rounding to nearest could report a hair under the request for an expansion with more than six decimals. Always ≥ requestedExpansion.","example":0.416667},"inputCodePoints":{"type":"integer","description":"Code points in the input.","example":12},"outputCodePoints":{"type":"integer","description":"Code points in the output.","example":17},"paddingCodePoints":{"type":"integer","description":"How many MIDDLE DOT (U+00B7) padding characters were appended.","example":3},"lettersMapped":{"type":"integer","description":"How many ASCII letters the accent map replaced; 0 when style=bracket.","example":11},"outputUtf16Units":{"type":"integer","description":"String.length of the output. It exceeds the code point count only when the input itself carries astral characters — the accent map only ever emits BMP code points.","example":17},"outputUtf8Bytes":{"type":"integer","description":"UTF-8 byte length of the output: the number a byte-sized database column actually has to hold.","example":36}},"additionalProperties":false},"StressStringsPseudoMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["stress-strings"]},"params":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":2000},"expansion":{"type":"number","minimum":0,"maximum":1},"style":{"type":"string","enum":["accent","bracket","both"]}},"required":["text","expansion","style"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/pseudo"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"StressStringsPseudoEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/StressStringsPseudoRecord"},"meta":{"$ref":"#/components/schemas/StressStringsPseudoMeta"}},"required":["data","meta"],"additionalProperties":false},"StructuredFieldsParseRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"input":{"type":"string","description":"The field value exactly as supplied, before any whitespace was discarded.","example":"u=1, i"},"type":{"type":"string","description":"Resolved top-level type: item, list or dictionary.","example":"dictionary"},"field":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Registered IANA field name that selected the type, or null when 'type' was given directly.","example":"Priority"},"registryType":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The IANA registry's Structured Type label for that field (Dictionary, List, Item or Token), or null when no field was given.","example":"Dictionary"},"parsed":{"type":"object","additionalProperties":true,"description":"The parsed value in this API's own JSON mapping: every node is {type, value} plus {params} wherever RFC 9651 allows parameters. RFC 9651 defines no JSON mapping; this one is ours.","example":{"type":"dictionary","value":{"u":{"type":"integer","value":1,"params":{}},"i":{"type":"boolean","value":true,"params":{}}}}},"canonical":{"type":"string","description":"The parsed value re-serialized with RFC 9651 Section 4.1. Empty when an empty list or dictionary means the field should be omitted entirely.","example":"u=1, i"},"inputIsCanonical":{"type":"boolean","description":"True when 'input' already equals 'canonical' character for character.","example":true}},"additionalProperties":false},"StructuredFieldsParseMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["structured-fields"]},"params":{"type":"object","properties":{"value":{"type":"string","maxLength":4096},"type":{"type":"string","enum":["item","list","dictionary"]},"field":{"type":"string","minLength":1,"maxLength":128},"strict":{"type":"boolean"}},"required":["strict"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/parse"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"StructuredFieldsParseEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/StructuredFieldsParseRecord"},"meta":{"$ref":"#/components/schemas/StructuredFieldsParseMeta"}},"required":["data","meta"],"additionalProperties":false},"StructuredFieldsSerializeRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"type":{"type":"string","description":"The requested top-level type: item, list or dictionary.","example":"item"},"structure":{"type":"object","additionalProperties":true,"description":"The structure that was actually serialized, after normalization: decimals rounded to three fractional digits, byte sequences re-encoded as padded base64 and omitted 'params' filled in. RFC 9651 defines no JSON mapping; this shape is ours.","example":{"type":"integer","value":5,"params":{"foo":{"type":"token","value":"bar"}}}},"serialized":{"type":"string","description":"Canonical ASCII field value produced by RFC 9651 Section 4.1.","example":"5;foo=bar"},"omitField":{"type":"boolean","description":"True when the structure is an empty list or dictionary, which RFC 9651 Section 4.1 says must be sent by omitting the field entirely rather than as an empty value.","example":false}},"additionalProperties":false},"StructuredFieldsSerializeMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["structured-fields"]},"params":{"type":"object","properties":{"json":{"type":"string","minLength":2,"maxLength":4096},"type":{"type":"string","enum":["item","list","dictionary"]}},"required":["json","type"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/serialize"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"StructuredFieldsSerializeEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/StructuredFieldsSerializeRecord"},"meta":{"$ref":"#/components/schemas/StructuredFieldsSerializeMeta"}},"required":["data","meta"],"additionalProperties":false},"SubscriptionsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Distinct synthetic subscription ID.","example":"sub_82fe1c4a32d90001"},"customer":{"type":"object","additionalProperties":true,"description":"Synthetic customer with id, name and reserved-domain email.","example":{"id":"cus_123","name":"Avery Chen","email":"avery.chen@example.com"}},"plan":{"type":"object","additionalProperties":true,"description":"Synthetic plan id, name, tier and feature list.","example":{"id":"pro","name":"Pro","tier":"pro","features":["10 workspaces","Usage reports"]}},"status":{"type":"string","description":"trialing | active | pastDue | cancelled | paused.","example":"active"},"interval":{"type":"string","description":"monthly | yearly.","example":"monthly"},"currency":{"type":"string","description":"Canonical active ISO 4217 code.","example":"USD"},"amount":{"type":"number","description":"Recurring amount per selected billing interval, calculated in minor units.","example":29},"currentPeriodStart":{"type":"string","format":"date-time","description":"Start of the current trial or billing period.","example":"2025-06-01T00:00:00.000Z"},"currentPeriodEnd":{"type":"string","format":"date-time","description":"Exclusive end of the current period; always after currentPeriodStart.","example":"2025-07-01T00:00:00.000Z"},"trialEndsAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Trial end for trialing records only, else null.","example":null},"cancelledAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cancellation time for cancelled records only, else null.","example":null},"nextBillingAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Next period boundary for renewing statuses; null when cancelled or paused.","example":"2025-07-01T00:00:00.000Z"},"autoRenew":{"type":"boolean","description":"True for trialing, active and pastDue; false for cancelled and paused.","example":true},"createdAt":{"type":"string","format":"date-time","description":"Creation time inside from..to and not after currentPeriodStart.","example":"2025-01-10T12:00:00.000Z"}},"additionalProperties":false},"SubscriptionsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["subscriptions"]},"params":{"type":"object","properties":{"status":{"type":"string","enum":["trialing","active","pastDue","cancelled","paused"]},"interval":{"type":"string","enum":["monthly","yearly"]},"currency":{"type":"string"},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["interval","currency"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"SubscriptionsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SubscriptionsRootRecord"}},"meta":{"$ref":"#/components/schemas/SubscriptionsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"SunTimesRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"date":{"type":"string","format":"date","description":"The local civil date the results describe, in the resolved zone. On the rare date that contains no solar transit at all — where local solar noon sits within seconds of local midnight — the events are anchored to the nearest transit and `meta.warnings` names the date it falls on.","example":"2026-06-21"},"timezone":{"type":"string","description":"Canonical IANA id applied to the local date and every `local` wall clock.","example":"Europe/Copenhagen"},"latitude":{"type":"number","description":"Observer latitude in decimal degrees, echoed as supplied.","example":55.6761},"longitude":{"type":"number","description":"Observer longitude in decimal degrees, echoed as supplied.","example":12.5683},"solarNoon":{"type":"object","additionalProperties":true,"description":"Meridian transit — the Sun's highest point of the local day. Always present, so `reason` is always null here. Object with `instant` (UTC ISO 8601, whole seconds), `local` (naive wall clock in `tz`) and `reason`. On a normal day `reason` is null; when the crossing does not happen it is `polar-day` (the Sun stays above this altitude all day) or `polar-night` (it stays below), and both times are null.","example":{"instant":"2026-06-21T11:11:33.000Z","local":"2026-06-21T13:11:33","reason":null}},"sunrise":{"type":"object","additionalProperties":true,"description":"Sun's centre crossing the −0.833° horizon while rising. Object with `instant` (UTC ISO 8601, whole seconds), `local` (naive wall clock in `tz`) and `reason`. On a normal day `reason` is null; when the crossing does not happen it is `polar-day` (the Sun stays above this altitude all day) or `polar-night` (it stays below), and both times are null.","example":{"instant":"2026-06-21T02:25:20.000Z","local":"2026-06-21T04:25:20","reason":null}},"sunset":{"type":"object","additionalProperties":true,"description":"Sun's centre crossing the −0.833° horizon while setting. Object with `instant` (UTC ISO 8601, whole seconds), `local` (naive wall clock in `tz`) and `reason`. On a normal day `reason` is null; when the crossing does not happen it is `polar-day` (the Sun stays above this altitude all day) or `polar-night` (it stays below), and both times are null.","example":{"instant":"2026-06-21T19:57:45.000Z","local":"2026-06-21T21:57:45","reason":null}},"dayLengthSeconds":{"type":"integer","minimum":0,"maximum":86400,"description":"Seconds the Sun spends above the −0.833° horizon on this solar day: exactly the gap between the returned sunrise and sunset instants when both exist, 86400 through a polar day and 0 through a polar night. On the changeover day, where only one of the two crossings happens, the measured half is added to the full 12 hours on the side the Sun never sets or never rises.","example":63145},"civilDawn":{"type":"object","additionalProperties":true,"description":"Sun's centre reaching 6° below the horizon while rising. Object with `instant` (UTC ISO 8601, whole seconds), `local` (naive wall clock in `tz`) and `reason`. On a normal day `reason` is null; when the crossing does not happen it is `polar-day` (the Sun stays above this altitude all day) or `polar-night` (it stays below), and both times are null.","example":{"instant":"2026-06-21T01:24:09.000Z","local":"2026-06-21T03:24:09","reason":null}},"civilDusk":{"type":"object","additionalProperties":true,"description":"Sun's centre reaching 6° below the horizon while setting. Object with `instant` (UTC ISO 8601, whole seconds), `local` (naive wall clock in `tz`) and `reason`. On a normal day `reason` is null; when the crossing does not happen it is `polar-day` (the Sun stays above this altitude all day) or `polar-night` (it stays below), and both times are null.","example":{"instant":"2026-06-21T20:58:55.000Z","local":"2026-06-21T22:58:55","reason":null}},"nauticalDawn":{"type":"object","additionalProperties":true,"description":"Sun's centre reaching 12° below the horizon while rising. Object with `instant` (UTC ISO 8601, whole seconds), `local` (naive wall clock in `tz`) and `reason`. On a normal day `reason` is null; when the crossing does not happen it is `polar-day` (the Sun stays above this altitude all day) or `polar-night` (it stays below), and both times are null.","example":{"instant":null,"local":null,"reason":"polar-day"}},"nauticalDusk":{"type":"object","additionalProperties":true,"description":"Sun's centre reaching 12° below the horizon while setting. Object with `instant` (UTC ISO 8601, whole seconds), `local` (naive wall clock in `tz`) and `reason`. On a normal day `reason` is null; when the crossing does not happen it is `polar-day` (the Sun stays above this altitude all day) or `polar-night` (it stays below), and both times are null.","example":{"instant":null,"local":null,"reason":"polar-day"}},"astronomicalDawn":{"type":"object","additionalProperties":true,"description":"Sun's centre reaching 18° below the horizon while rising. Object with `instant` (UTC ISO 8601, whole seconds), `local` (naive wall clock in `tz`) and `reason`. On a normal day `reason` is null; when the crossing does not happen it is `polar-day` (the Sun stays above this altitude all day) or `polar-night` (it stays below), and both times are null.","example":{"instant":null,"local":null,"reason":"polar-day"}},"astronomicalDusk":{"type":"object","additionalProperties":true,"description":"Sun's centre reaching 18° below the horizon while setting. Object with `instant` (UTC ISO 8601, whole seconds), `local` (naive wall clock in `tz`) and `reason`. On a normal day `reason` is null; when the crossing does not happen it is `polar-day` (the Sun stays above this altitude all day) or `polar-night` (it stays below), and both times are null.","example":{"instant":null,"local":null,"reason":"polar-day"}}},"additionalProperties":false},"SunTimesMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["sun"]},"params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180},"date":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"tz":{"type":"string"}},"required":["lat","lng","tz"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/times"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"SunTimesEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SunTimesRecord"},"meta":{"$ref":"#/components/schemas/SunTimesMeta"}},"required":["data","meta"],"additionalProperties":false},"SunPositionRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"at":{"type":"string","format":"date-time","description":"The evaluated instant in UTC.","example":"2026-06-21T12:00:00.000Z"},"timezone":{"type":"string","description":"Canonical IANA id used to render localTime.","example":"Europe/Copenhagen"},"localTime":{"type":"string","description":"Naive local wall clock of the same instant in `timezone`.","example":"2026-06-21T14:00:00"},"elevationDegrees":{"type":"number","minimum":-90,"maximum":90,"description":"Geometric elevation of the Sun's centre above the true horizon. No atmospheric refraction correction is applied, so near the horizon the apparent Sun sits about 0.57° higher than this figure.","example":56.5453},"azimuthDegrees":{"type":"number","minimum":0,"maximum":360,"description":"Compass bearing of the Sun, 0° = north increasing clockwise. Within ~0.06° of the zenith or of a pole the bearing is geometrically undefined and NOAA's meridian convention is reported instead: 180 for an observer north of the equator, 0 otherwise.","example":200.4393},"declinationDegrees":{"type":"number","minimum":-23.5,"maximum":23.5,"description":"Apparent solar declination at the instant.","example":23.4381},"equationOfTimeMinutes":{"type":"number","description":"Apparent solar time minus mean solar time, in minutes (roughly −14 to +16 over a year).","example":-1.8243},"hourAngleDegrees":{"type":"number","minimum":-180,"maximum":180,"description":"Local hour angle of the Sun: 0 at solar noon, negative before it, positive after, 15° per hour.","example":12.1122},"isDaylight":{"type":"boolean","description":"True when elevationDegrees is above the −0.833° horizon that /times uses for sunrise and sunset, so the two routes agree.","example":true}},"additionalProperties":false},"SunPositionMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["sun"]},"params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180},"at":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"tz":{"type":"string"}},"required":["lat","lng","tz"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/position"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"SunPositionEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SunPositionRecord"},"meta":{"$ref":"#/components/schemas/SunPositionMeta"}},"required":["data","meta"],"additionalProperties":false},"SunSeasonsRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"year":{"type":"integer","description":"Calendar year the four instants belong to.","example":2026},"timezone":{"type":"string","description":"Canonical IANA id used to render every `local` wall clock.","example":"UTC"},"marchEquinox":{"type":"object","additionalProperties":true,"description":"March (northward) equinox: `instant` in UTC, `local` wall clock in `tz`, and `deltaTSeconds`, the TT−UT offset applied.","example":{"instant":"2026-03-20T14:45:30.000Z","local":"2026-03-20T14:45:30","deltaTSeconds":75.2}},"juneSolstice":{"type":"object","additionalProperties":true,"description":"June (northern summer) solstice, in the same shape as marchEquinox.","example":{"instant":"2026-06-21T08:24:49.000Z","local":"2026-06-21T08:24:49","deltaTSeconds":75.4}},"septemberEquinox":{"type":"object","additionalProperties":true,"description":"September (southward) equinox, in the same shape as marchEquinox.","example":{"instant":"2026-09-23T00:05:24.000Z","local":"2026-09-23T00:05:24","deltaTSeconds":75.5}},"decemberSolstice":{"type":"object","additionalProperties":true,"description":"December (northern winter) solstice, in the same shape as marchEquinox.","example":{"instant":"2026-12-21T20:50:07.000Z","local":"2026-12-21T20:50:07","deltaTSeconds":75.7}}},"additionalProperties":false},"SunSeasonsMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["sun"]},"params":{"type":"object","properties":{"year":{"type":"integer","minimum":1900,"maximum":2100},"tz":{"type":"string"}},"required":["tz"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/seasons"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"SunSeasonsEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SunSeasonsRecord"},"meta":{"$ref":"#/components/schemas/SunSeasonsMeta"}},"required":["data","meta"],"additionalProperties":false},"SupportTicketsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Distinct fictional ticket ID.","example":"tkt_4128abff3900_00"},"subject":{"type":"string","description":"Synthetic ticket subject.","example":"Example checkout issue"},"status":{"type":"string","description":"new | open | pending | resolved | closed.","example":"pending"},"priority":{"type":"string","description":"low | normal | high | urgent.","example":"urgent"},"channel":{"type":"string","description":"email | chat | web.","example":"chat"},"requester":{"type":"object","additionalProperties":true,"description":"Synthetic requester with id, name and reserved-domain email.","example":{"id":"usr_demo","name":"Avery Chen","email":"fixture@example.net"}},"assignee":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"Fictional support agent, or null for unassigned new tickets.","example":{"id":"agt_demo","name":"Example Support Agent"}},"createdAt":{"type":"string","format":"date-time","description":"Creation time inside from/to.","example":"2026-05-10T08:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Latest message or lifecycle transition.","example":"2026-05-10T09:00:00.000Z"},"firstResponseAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"First agent response for non-new tickets.","example":"2026-05-10T08:20:00.000Z"},"resolvedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Present for resolved and closed tickets.","example":null},"closedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Present only for closed tickets.","example":null},"sla":{"type":"object","additionalProperties":true,"description":"First-response targetMinutes, dueAt and exact breached verdict.","example":{"type":"firstResponse","targetMinutes":60,"dueAt":"2026-05-10T09:00:00.000Z","breached":false}},"messages":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"One to eight chronological requester/agent messages.","example":[{"id":"msg_demo","senderId":"usr_demo","role":"requester","text":"Could you check this synthetic request?","createdAt":"2026-05-10T08:00:00.000Z"}]},"tags":{"type":"array","items":{"type":"string"},"description":"One to three synthetic support tags.","example":["example","account"]}},"additionalProperties":false},"SupportTicketsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["support-tickets"]},"params":{"type":"object","properties":{"status":{"type":"string","enum":["new","open","pending","resolved","closed"]},"priority":{"type":"string","enum":["low","normal","high","urgent"]},"channel":{"type":"string","enum":["email","chat","web"]},"assigned":{"type":"boolean"},"breached":{"type":"boolean"},"minMessages":{"type":"integer","minimum":1,"maximum":8},"maxMessages":{"type":"integer","minimum":1,"maximum":8},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["minMessages","maxMessages"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"SupportTicketsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SupportTicketsRootRecord"}},"meta":{"$ref":"#/components/schemas/SupportTicketsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"TasksRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Distinct synthetic task ID.","example":"tsk_91a8fe320000"},"title":{"type":"string","description":"Synthetic developer-productivity task title.","example":"Add contract-test coverage"},"description":{"type":"string","description":"Short synthetic task description.","example":"Cover the remaining validation branches before release."},"status":{"type":"string","description":"todo | inProgress | blocked | completed.","example":"inProgress"},"priority":{"type":"string","description":"low | medium | high | urgent.","example":"high"},"assignee":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"Synthetic id, name and avatarUrl when assigned; otherwise null.","example":{"id":"usr_a1","name":"Avery Chen","avatarUrl":"https://randomapi.dev/api/avatars/image?seed=usr_a1"}},"blocker":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Explicit fictional blocker for blocked tasks only; otherwise null.","example":null},"dueDate":{"type":"string","format":"date","description":"Due date inside the requested inclusive UTC calendar-day window.","example":"2026-04-15"},"completedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Completion time for completed tasks only, between createdAt and resolved to.","example":null},"createdAt":{"type":"string","format":"date-time","description":"Creation time on or before dueDate.","example":"2026-02-10T09:30:00.000Z"},"tags":{"type":"array","items":{"type":"string"},"description":"1–3 distinct safe tags; includes the requested tag when supplied.","example":["frontend","testing"]},"subtasks":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"0–5 bounded subtasks with distinct id, title and completed status coherent with the parent.","example":[{"id":"sub_a1","title":"Add range tests","completed":true}]}},"additionalProperties":false},"TasksRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["tasks"]},"params":{"type":"object","properties":{"status":{"type":"string","enum":["todo","inProgress","blocked","completed"]},"priority":{"type":"string","enum":["low","medium","high","urgent"]},"assigned":{"type":"boolean"},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"tag":{"type":"string","maxLength":24}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"TasksRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TasksRootRecord"}},"meta":{"$ref":"#/components/schemas/TasksRootMeta"}},"required":["data","meta"],"additionalProperties":false},"TextEncodingDiagnoseRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"input":{"type":"string","description":"The suspect text exactly as received; whitespace is never trimmed.","example":"cafÃ©"},"hypothesis":{"type":"string","description":"`utf8-as-<encoding>` with the punctuation removed (utf8-as-windows1252, utf8-as-windows1251, utf8-as-koi8r…), plus the two historical spellings utf8-as-latin1 (ISO-8859-1) and utf8-as-latin9 (ISO-8859-15); `double-encoded` for two or more layers; `none` when nothing decodes cleanly.","example":"utf8-as-windows1252"},"encoding":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The encoding this hypothesis blames — the one whose decoder would have produced the input. Null when there is no recovery. Use this instead of parsing `hypothesis`.","example":"windows-1252"},"confidence":{"type":"string","description":"high | medium | low — how strong the byte evidence is for this hypothesis.","example":"medium"},"confidenceRationale":{"type":"string","description":"Plain-English reason for the confidence label, naming the actual bytes, how many rival encodings agree or disagree and any reason the answer is not final.","example":"Encoding the input as windows-1252 gives 5 byte(s) holding a single 2-byte UTF-8 sequence. It decodes cleanly, but a string can legitimately contain those two characters, so this stays a hypothesis. iso-8859-1, iso-8859-15, windows-1254 and 1 more produce the identical recovery; macintosh also decodes, but to a different string."},"evidence":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"The byte trail: one row per non-ASCII character with its code point, the byte it encodes to, its zero-based code-point position and its role in the UTF-8 sequence. Capped at 32 rows.","example":[{"codePoint":"U+00C3","byte":"0xC3","position":3,"note":"Byte 1 of a 2-byte UTF-8 sequence decoding to U+00E9 'é'."},{"codePoint":"U+00A9","byte":"0xA9","position":4,"note":"Byte 2 of 2 in the UTF-8 sequence for U+00E9 'é'."}]},"recovered":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The text the hypothesis recovers, or null when no clean recovery exists.","example":"café"},"recoveredLayers":{"type":"integer","description":"How many broken decodes were undone; 0 when nothing was recovered.","example":1},"alternatives":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Every other supported encoding that also unwinds the input, grouped by the text it recovers (`recovered`, `layers`, `encodings`). A group matching `recovered` above corroborates the answer; one that differs is genuine ambiguity and is listed first. Capped at 8 groups.","example":[{"recovered":"caf̩","layers":1,"encodings":["macintosh"]},{"recovered":"café","layers":1,"encodings":["iso-8859-1","iso-8859-15","windows-1254","iso-8859-14"]}]},"complete":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"True when the recovery no longer unwinds under any supported encoding. False when it still does — normally because `layers` ran out, so the text is only partly repaired. Null when there is no recovery.","example":true}},"additionalProperties":false},"TextEncodingDiagnoseMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["text-encoding"]},"params":{"type":"object","properties":{"text":{"type":"string","minLength":1},"layers":{"type":"integer","minimum":1,"maximum":3}},"required":["text","layers"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/diagnose"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"TextEncodingDiagnoseEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/TextEncodingDiagnoseRecord"},"meta":{"$ref":"#/components/schemas/TextEncodingDiagnoseMeta"}},"required":["data","meta"],"additionalProperties":false},"TextEncodingTranscodeRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"input":{"type":"string","description":"The text exactly as received; whitespace is never trimmed.","example":"café"},"from":{"type":"string","description":"Encoding used to turn the text into bytes.","example":"utf-8"},"to":{"type":"string","description":"Encoding used to read those bytes back.","example":"windows-1252"},"bytes":{"type":"string","description":"The exact intermediate bytes, one two-digit pair per byte.","example":"63 61 66 C3 A9"},"byteLength":{"type":"integer","description":"Number of intermediate bytes.","example":5},"output":{"type":"string","description":"Result of decoding those bytes with the target encoding — the mojibake, when the pair is mismatched.","example":"cafÃ©"},"unmappable":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Characters the source encoding cannot represent, with their zero-based code-point position. They are omitted from the bytes, never substituted; always empty for from=utf-8, which can represent every Unicode scalar value.","example":[{"codePoint":"U+20AC","position":0}]}},"additionalProperties":false},"TextEncodingTranscodeMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["text-encoding"]},"params":{"type":"object","properties":{"text":{"type":"string","minLength":1},"from":{"type":"string","enum":["utf-8","windows-1252","iso-8859-1","iso-8859-15","windows-1251","windows-1250","windows-1256","windows-1254","windows-1253","windows-1255","windows-1257","windows-1258","windows-874","koi8-r","koi8-u","ibm866","iso-8859-2","iso-8859-5","iso-8859-7","iso-8859-6","iso-8859-8","iso-8859-4","iso-8859-13","iso-8859-3","iso-8859-10","iso-8859-14","iso-8859-16","macintosh","x-mac-cyrillic"]},"to":{"type":"string","enum":["utf-8","windows-1252","iso-8859-1","iso-8859-15","windows-1251","windows-1250","windows-1256","windows-1254","windows-1253","windows-1255","windows-1257","windows-1258","windows-874","koi8-r","koi8-u","ibm866","iso-8859-2","iso-8859-5","iso-8859-7","iso-8859-6","iso-8859-8","iso-8859-4","iso-8859-13","iso-8859-3","iso-8859-10","iso-8859-14","iso-8859-16","macintosh","x-mac-cyrillic"]}},"required":["text","from","to"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/transcode"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"TextEncodingTranscodeEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/TextEncodingTranscodeRecord"},"meta":{"$ref":"#/components/schemas/TextEncodingTranscodeMeta"}},"required":["data","meta"],"additionalProperties":false},"TimeRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"iso":{"type":"string","format":"date-time","description":"The current instant in UTC, with milliseconds. Identical no matter which tz you ask for.","example":"2026-06-11T14:30:45.123Z"},"unix":{"type":"integer","description":"Seconds since the Unix epoch (UTC, floored to the whole second).","example":1781188245},"timezone":{"type":"string","description":"Canonical IANA id of the zone that was applied (case-corrected from your input).","example":"Europe/Copenhagen"},"localDate":{"type":"string","format":"date","description":"Wall-clock date in the requested zone.","example":"2026-06-11"},"localTime":{"type":"string","description":"Wall-clock time in the requested zone, 24-hour clock.","example":"16:30:45"},"weekday":{"type":"string","description":"English weekday name of the local date.","example":"Thursday"},"utcOffset":{"type":"string","description":"The zone's UTC offset at this instant, DST-aware (e.g. +02:00, -04:00, +05:45).","example":"+02:00"},"offsetMinutes":{"type":"integer","description":"The same offset in minutes — negative west of UTC (e.g. -300 for New York in winter).","example":120},"isoWeek":{"type":"integer","description":"ISO 8601 week number (1–53) of the local date.","example":24},"isoWeekYear":{"type":"integer","description":"ISO week-based year of the local date — can differ from the calendar year around New Year.","example":2026},"dayOfYear":{"type":"integer","description":"Ordinal day of the local calendar year (1–366).","example":162},"dst":{"type":"boolean","description":"Whether daylight saving time is in effect in the zone at this instant.","example":true}},"additionalProperties":false},"TimeRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["time"]},"params":{"type":"object","properties":{"tz":{"type":"string"}},"required":["tz"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}}},"required":["endpoint","params","generatedAt"],"additionalProperties":false},"TimeRootEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/TimeRootRecord"},"meta":{"$ref":"#/components/schemas/TimeRootMeta"}},"required":["data","meta"],"additionalProperties":false},"TimeSeriesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"seriesId":{"type":"string","description":"Unique fictional series identity prefixed ser_.","example":"ser_0_a81c42f0"},"metric":{"type":"string","description":"cpuUsage, requestRate, latency, memoryUsage or temperature.","example":"latency"},"unit":{"type":"string","description":"Unit coherent with metric.","example":"ms"},"trend":{"type":"string","description":"Generated value-shape constraint.","example":"rising"},"interval":{"type":"string","description":"Exact point interval.","example":"5m"},"startTime":{"type":"string","format":"date-time","description":"Timestamp of points[0].","example":"2026-07-10T00:00:00.000Z"},"endTime":{"type":"string","format":"date-time","description":"Timestamp of the final point.","example":"2026-07-10T00:55:00.000Z"},"min":{"type":"number","description":"Minimum of the returned point values.","example":121.4},"max":{"type":"number","description":"Maximum of the returned point values.","example":178.2},"average":{"type":"number","description":"Arithmetic mean of returned point values, rounded to metric precision.","example":149.8},"tags":{"type":"object","additionalProperties":true,"description":"Small fictional environment and host tag set.","example":{"environment":"staging","host":"node-3"}},"points":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Exact chronological timestamp/value pairs.","example":[{"timestamp":"2026-07-10T00:00:00.000Z","value":121.4}]}},"additionalProperties":false},"TimeSeriesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["time-series"]},"params":{"type":"object","properties":{"metric":{"type":"string","enum":["cpuUsage","requestRate","latency","memoryUsage","temperature"]},"trend":{"type":"string","enum":["stable","rising","falling","spike"]},"interval":{"type":"string","enum":["1m","5m","1h"]},"points":{"type":"integer","minimum":2,"maximum":24},"start":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"environment":{"type":"string","enum":["development","staging","production"]}},"required":["interval","points","environment"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"TimeSeriesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TimeSeriesRootRecord"}},"meta":{"$ref":"#/components/schemas/TimeSeriesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"TimeSeriesPointsRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"pointId":{"type":"string","description":"Unique fixture point id containing the stable record index.","example":"pt_0_31f0a82d"},"seriesId":{"type":"string","description":"Validated caller-supplied series key.","example":"checkout-latency"},"metric":{"type":"string","description":"Selected metric.","example":"latency"},"unit":{"type":"string","description":"Unit coherent with metric.","example":"ms"},"timestamp":{"type":"string","format":"date-time","description":"start plus recordIndex times interval.","example":"2026-07-10T00:05:00.000Z"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Bounded metric value, or null when quality is missing.","example":82.4},"quality":{"type":"string","description":"good, estimated or missing.","example":"good"},"tags":{"type":"object","additionalProperties":true,"description":"Small stable fictional host and source tags.","example":{"host":"node-2","source":"mock"}}},"additionalProperties":false},"TimeSeriesPointsMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["time-series"]},"params":{"type":"object","properties":{"series":{"type":"string","minLength":1,"maxLength":48},"metric":{"type":"string","enum":["cpuUsage","requestRate","latency","memoryUsage","temperature"]},"interval":{"type":"string","enum":["1m","5m","1h"]},"start":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"quality":{"type":"string","enum":["good","estimated","missing"]}},"required":["series","metric","interval"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/points"]},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","route","count","seed"],"additionalProperties":false},"TimeSeriesPointsEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TimeSeriesPointsRecord"}},"meta":{"$ref":"#/components/schemas/TimeSeriesPointsMeta"}},"required":["data","meta"],"additionalProperties":false},"TimezonesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"IANA timezone id, exactly as the runtime's tz database reports it (e.g. Europe/Copenhagen).","example":"Europe/Copenhagen"},"offset":{"type":"string","description":"Current UTC offset, DST-aware — e.g. +01:00 for Copenhagen in winter, +02:00 in summer.","example":"+02:00"},"offsetMinutes":{"type":"integer","description":"Current UTC offset in minutes (+05:45 ⇒ 345; negative west of Greenwich, e.g. -03:30 ⇒ -210).","example":120},"countryCodes":{"type":"array","items":{"type":"string"},"description":"ISO 3166-1 alpha-2 codes of the countries using this zone, per IANA zone.tab. Empty for country-less zones like UTC.","example":["DK"]},"localTime":{"type":"string","description":"Current wall-clock time in the zone, 24-hour HH:MM:SS.","example":"14:30:07"},"isDst":{"type":"boolean","description":"Whether daylight saving time is in effect in the zone right now.","example":true}},"additionalProperties":false},"TimezonesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["timezones"]},"params":{"type":"object","properties":{"country":{"type":"string"},"offsetMinutes":{"type":"integer","minimum":-720,"maximum":840}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","count"],"additionalProperties":false},"TimezonesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TimezonesRootRecord"}},"meta":{"$ref":"#/components/schemas/TimezonesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"TimezonesLookupRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"IANA timezone id, exactly as the runtime's tz database reports it (e.g. Europe/Copenhagen).","example":"Europe/Copenhagen"},"offset":{"type":"string","description":"Current UTC offset, DST-aware — e.g. +01:00 for Copenhagen in winter, +02:00 in summer.","example":"+02:00"},"offsetMinutes":{"type":"integer","description":"Current UTC offset in minutes (+05:45 ⇒ 345; negative west of Greenwich, e.g. -03:30 ⇒ -210).","example":120},"countryCodes":{"type":"array","items":{"type":"string"},"description":"ISO 3166-1 alpha-2 codes of the countries using this zone, per IANA zone.tab. Empty for country-less zones like UTC.","example":["DK"]},"localDate":{"type":"string","format":"date","description":"Current calendar date on the zone's local wall clock (can differ from the UTC date).","example":"2026-06-11"},"localTime":{"type":"string","description":"Current wall-clock time in the zone, 24-hour HH:MM:SS.","example":"14:30:07"},"weekday":{"type":"string","description":"English weekday name of the zone's current local date.","example":"Thursday"},"isDst":{"type":"boolean","description":"Whether daylight saving time is in effect in the zone right now.","example":true}},"additionalProperties":false},"TimezonesLookupMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["timezones"]},"params":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/lookup"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"TimezonesLookupEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/TimezonesLookupRecord"},"meta":{"$ref":"#/components/schemas/TimezonesLookupMeta"}},"required":["data","meta"],"additionalProperties":false},"TimezonesConvertRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"instant":{"type":"string","format":"date-time","description":"Canonical UTC rendering of the absolute input, preserving milliseconds.","example":"2026-01-15T12:00:00.125Z"},"epochMilliseconds":{"type":"integer","description":"The same instant as exact signed milliseconds since the Unix epoch.","example":1768478400125},"zone":{"type":"string","description":"Canonical runtime IANA timezone id.","example":"America/New_York"},"localDate":{"type":"string","format":"date","description":"Calendar date at the instant in zone; extended ISO years are preserved at parser boundaries.","example":"2026-01-15"},"localTime":{"type":"string","description":"Wall-clock time at the instant in zone, preserving milliseconds.","example":"07:00:00.125"},"weekday":{"type":"string","description":"English weekday of the local calendar date.","example":"Thursday"},"offset":{"type":"string","description":"UTC offset at the instant; historical second precision is retained when present.","example":"-05:00"},"offsetMinutes":{"type":"number","description":"The same offset in minutes; fractional only for historical second-based offsets.","example":-300},"isDst":{"type":"boolean","description":"Whether daylight saving time is in effect in zone at this exact instant.","example":false}},"additionalProperties":false},"TimezonesConvertMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["timezones"]},"params":{"type":"object","properties":{"at":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"zone":{"type":"string"}},"required":["at","zone"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/convert"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"TimezonesConvertEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/TimezonesConvertRecord"},"meta":{"$ref":"#/components/schemas/TimezonesConvertMeta"}},"required":["data","meta"],"additionalProperties":false},"TimezonesTransitionsRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"zone":{"type":"string","description":"Canonical runtime IANA timezone id.","example":"Europe/Copenhagen"},"from":{"type":"string","format":"date-time","description":"Inclusive canonical UTC range start.","example":"2026-01-01T00:00:00.000Z"},"to":{"type":"string","format":"date-time","description":"Exclusive canonical UTC range end.","example":"2027-01-01T00:00:00.000Z"},"count":{"type":"integer","description":"Number of offset transitions found in the bounded range.","example":2},"transitions":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Chronological transitions with instant, gap/fold kind, offsets before/after, deltaSeconds and exact adjacent local wall-clock values.","example":[{"instant":"2026-03-29T01:00:00.000Z","kind":"gap","offsetBefore":"+01:00","offsetAfter":"+02:00","offsetBeforeMinutes":60,"offsetAfterMinutes":120,"deltaSeconds":3600,"localBefore":"2026-03-29T01:59:59.999","localAfter":"2026-03-29T03:00:00.000"}]}},"additionalProperties":false},"TimezonesTransitionsMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["timezones"]},"params":{"type":"object","properties":{"zone":{"type":"string"},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["zone","from","to"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/transitions"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"TimezonesTransitionsEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/TimezonesTransitionsRecord"},"meta":{"$ref":"#/components/schemas/TimezonesTransitionsMeta"}},"required":["data","meta"],"additionalProperties":false},"TimezonesResolveLocalRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"zone":{"type":"string","description":"Canonical runtime IANA timezone id.","example":"Europe/Copenhagen"},"local":{"type":"string","description":"Canonical millisecond-precision naive wall-clock timestamp.","example":"2026-10-25T02:30:00.000"},"status":{"type":"string","description":"unique, ambiguous or nonexistent.","example":"ambiguous"},"candidates":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Every real matching instant, ordered earlier first, with its exact offset; length is 1, 2 or 0 by status.","example":[{"instant":"2026-10-25T00:30:00.000Z","offset":"+02:00","offsetMinutes":120},{"instant":"2026-10-25T01:30:00.000Z","offset":"+01:00","offsetMinutes":60}]},"selectedInstant":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Unique/explicitly selected actual instant, or null for rejected ambiguity/nonexistence.","example":"2026-10-25T00:30:00.000Z"},"selectedOffset":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"UTC offset of selectedInstant, or null when nothing was selected.","example":"+02:00"},"gap":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"For nonexistent local times only: transition instant, inclusive missing-local start, exclusive end and durationSeconds; otherwise null.","example":{"transitionInstant":"2026-03-29T01:00:00.000Z","localStart":"2026-03-29T02:00:00.000","localEnd":"2026-03-29T03:00:00.000","durationSeconds":3600}}},"additionalProperties":false},"TimezonesResolveLocalMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["timezones"]},"params":{"type":"object","properties":{"zone":{"type":"string"},"local":{"type":"string","minLength":19,"maxLength":23},"disambiguation":{"type":"string","enum":["reject","earlier","later"]}},"required":["zone","local","disambiguation"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/resolve-local"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"TimezonesResolveLocalEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/TimezonesResolveLocalRecord"},"meta":{"$ref":"#/components/schemas/TimezonesResolveLocalMeta"}},"required":["data","meta"],"additionalProperties":false},"TldsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"tld":{"type":"string","description":"Canonical lower-case delegated ASCII label with a leading dot.","example":".com"},"ascii":{"type":"string","description":"Canonical lower-case ASCII label without the leading dot; IDNs remain punycode A-labels.","example":"com"},"isIdn":{"type":"boolean","description":"True when the delegated ASCII label starts with the IDNA A-label prefix xn--.","example":false}},"additionalProperties":false},"TldsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["tlds"]},"params":{"type":"object","properties":{"search":{"type":"string","maxLength":64},"isIdn":{"type":"boolean"}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","count"],"additionalProperties":false},"TldsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TldsRootRecord"}},"meta":{"$ref":"#/components/schemas/TldsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"TldsLookupRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"tld":{"type":"string","description":"Canonical lower-case delegated ASCII label with a leading dot.","example":".com"},"ascii":{"type":"string","description":"Canonical lower-case ASCII label without the leading dot; IDNs remain punycode A-labels.","example":"com"},"isIdn":{"type":"boolean","description":"True when the delegated ASCII label starts with the IDNA A-label prefix xn--.","example":false}},"additionalProperties":false},"TldsLookupMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["tlds"]},"params":{"type":"object","properties":{"tld":{"type":"string","minLength":1,"maxLength":64}},"required":["tld"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/lookup"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"TldsLookupEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/TldsLookupRecord"},"meta":{"$ref":"#/components/schemas/TldsLookupMeta"}},"required":["data","meta"],"additionalProperties":false},"TokensRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"value":{"type":"string","description":"The generated credential in the requested format.","example":"sk_test_h2vTQEnAVoZkW8eFqYbJ3R7xLcM5pDgU"},"type":{"type":"string","description":"Echo of the type parameter for this record: apiKey | jwt | hex | base64.","example":"apiKey"},"claims":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"For type=jwt only: the token's decoded payload (sub, name, iat, exp) so tests can assert against it without a decoder. null for all other types.","example":{"sub":"user_4f9a2c1e8b3d","name":"Emily Carter","iat":1765800000,"exp":1765803600}}},"additionalProperties":false},"TokensRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["tokens"]},"params":{"type":"object","properties":{"type":{"type":"string","enum":["apiKey","jwt","hex","base64"]},"prefix":{"type":"string","minLength":1,"maxLength":16},"bytes":{"type":"integer","minimum":8,"maximum":64}},"required":["type"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"TokensRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TokensRootRecord"}},"meta":{"$ref":"#/components/schemas/TokensRootMeta"}},"required":["data","meta"],"additionalProperties":false},"TraceContextValidateRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"valid":{"type":"boolean","description":"Whether traceparent and any supplied tracestate are both valid.","example":true},"traceparentValid":{"type":"boolean","description":"Whether the traceparent common fields and version rules are valid.","example":true},"tracestateValid":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether supplied tracestate is valid; null when absent or skipped after bad traceparent.","example":true},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Two-character lowercase version when its prefix could be parsed.","example":"00"},"traceId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"32-character nonzero trace ID when valid.","example":"4bf92f3577b34da6a3ce929d0e0e4736"},"parentId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"16-character nonzero parent ID when valid.","example":"00f067aa0ba902b7"},"traceFlags":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Two-character received flags byte when valid.","example":"01"},"sampled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether the least-significant sampled flag is set.","example":true},"unknownFlags":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Hex mask for every received flag bit not defined by Trace Context 1.1.","example":"00"},"futureVersion":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether the parsed version is higher than 00.","example":false},"tracestateEntries":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Valid vendor entries in received order; empty when absent, invalid or skipped.","example":[{"key":"rojo","value":"00f067aa0ba902b7","index":0}]},"canonicalTraceparent":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Validated traceparent, or null when invalid.","example":"00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01"},"canonicalTracestate":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Whitespace-normalized valid tracestate, or null when absent/invalid/skipped.","example":"rojo=00f067aa0ba902b7,congo=t61rcWkgMzE"},"errors":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Ordered validation failures with code, field and message.","example":[]},"warnings":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Non-fatal notices such as unknown flag bits or skipped tracestate.","example":[]}},"additionalProperties":false},"TraceContextValidateMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["trace-context"]},"params":{"type":"object","properties":{"traceparent":{"type":"string","minLength":1,"maxLength":512},"tracestate":{"type":"string","maxLength":2048}},"required":["traceparent"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/validate"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"TraceContextValidateEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/TraceContextValidateRecord"},"meta":{"$ref":"#/components/schemas/TraceContextValidateMeta"}},"required":["data","meta"],"additionalProperties":false},"TracesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"traceId":{"type":"string","description":"Unique fictional 32-hex trace identifier.","example":"0000000076cc47a8b2caa2cf7131537a"},"name":{"type":"string","description":"Root operation name coherent with service.","example":"create checkout"},"service":{"type":"string","description":"Root service selected by the service filter or generator.","example":"checkout"},"startTime":{"type":"string","format":"date-time","description":"Trace start inside the requested window at or before resolved asOf.","example":"2026-07-10T23:14:22.031Z"},"durationMs":{"type":"integer","description":"Total duration inside the requested inclusive bounds.","example":842},"status":{"type":"string","description":"ok or error, derived coherently from nested span status.","example":"error"},"rootSpanId":{"type":"string","description":"Identifier of spans[0], whose parent is null.","example":"0000000066f327f2"},"spanCount":{"type":"integer","description":"Exact number of objects in spans.","example":4},"spans":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Bounded parent-first span tree with offsets, durations, status and nullable error codes.","example":[{"spanId":"0000000066f327f2","parentSpanId":null,"name":"create checkout","service":"checkout","kind":"server","startOffsetMs":0,"durationMs":842,"status":"ok","errorCode":null}]}},"additionalProperties":false},"TracesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["traces"]},"params":{"type":"object","properties":{"service":{"type":"string","enum":["gateway","checkout","catalog","payments","worker"]},"status":{"type":"string","enum":["ok","error"]},"minDurationMs":{"type":"integer","minimum":1,"maximum":60000},"maxDurationMs":{"type":"integer","minimum":1,"maximum":60000},"spanCount":{"type":"integer","minimum":1,"maximum":8},"windowMinutes":{"type":"integer","minimum":1,"maximum":1440},"asOf":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["minDurationMs","maxDurationMs","spanCount","windowMinutes"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"TracesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TracesRootRecord"}},"meta":{"$ref":"#/components/schemas/TracesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"TracesSpansRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"traceId":{"type":"string","description":"Unique fictional trace id for this standalone span fixture.","example":"0000000076cc47a8b2caa2cf7131537a"},"spanId":{"type":"string","description":"Unique fictional 16-hex span id.","example":"0000000066f327f2"},"parentSpanId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Null for generated server roots; otherwise a fictional parent id.","example":"00000000a2cf7131"},"name":{"type":"string","description":"Operation coherent with service.","example":"authorize payment"},"service":{"type":"string","description":"Generated or requested service.","example":"payments"},"kind":{"type":"string","description":"server, client, producer, consumer or internal.","example":"client"},"startTime":{"type":"string","format":"date-time","description":"Span start inside the requested sampling window.","example":"2026-07-10T23:42:10.002Z"},"durationMs":{"type":"integer","description":"Span duration inside requested bounds.","example":127},"status":{"type":"string","description":"ok or error.","example":"ok"},"errorCode":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Service-specific code for error spans; otherwise null.","example":null},"attributes":{"type":"object","additionalProperties":true,"description":"Small safe example attributes coherent with kind.","example":{"method":"POST","path":"/api/checkout","statusCode":201}}},"additionalProperties":false},"TracesSpansMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["traces"]},"params":{"type":"object","properties":{"service":{"type":"string","enum":["gateway","checkout","catalog","payments","worker"]},"kind":{"type":"string","enum":["server","client","producer","consumer","internal"]},"status":{"type":"string","enum":["ok","error"]},"minDurationMs":{"type":"integer","minimum":1,"maximum":60000},"maxDurationMs":{"type":"integer","minimum":1,"maximum":60000},"windowMinutes":{"type":"integer","minimum":1,"maximum":1440},"asOf":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["minDurationMs","maxDurationMs","windowMinutes"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/spans"]},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","route","count","seed"],"additionalProperties":false},"TracesSpansEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TracesSpansRecord"}},"meta":{"$ref":"#/components/schemas/TracesSpansMeta"}},"required":["data","meta"],"additionalProperties":false},"TransactionsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Processor-style transaction id: 'txn_' + 24 lowercase hex characters.","example":"txn_9f2c4b7a1e8d3f6a5c0b2e4d"},"amount":{"type":"number","description":"Amount within minAmount..maxAmount, rounded to the currency's minor unit (whole numbers for JPY/KRW).","example":129.99},"currency":{"type":"string","description":"ISO 4217 code the amount is denominated in.","example":"USD"},"type":{"type":"string","description":"payment | refund | transfer | deposit | withdrawal.","example":"payment"},"status":{"type":"string","description":"completed | pending | failed — weighted 80/12/8 when not filtered.","example":"completed"},"description":{"type":"string","description":"Human-readable line, always coherent with the type and naming the merchant.","example":"Payment to Lumen Coffee Roasters"},"merchant":{"type":"string","description":"Counterparty drawn from a pool matching the type (store, account, payer or ATM).","example":"Lumen Coffee Roasters"},"timestamp":{"type":"string","format":"date-time","description":"When the transaction happened — always within the from..to window.","example":"2026-05-14T09:23:41.512Z"},"reference":{"type":"string","description":"Bank-statement reference: 'REF-' + 6 uppercase alphanumerics.","example":"REF-7K2M9Q"}},"additionalProperties":false},"TransactionsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["transactions"]},"params":{"type":"object","properties":{"minAmount":{"type":"number","minimum":0,"maximum":10000000},"maxAmount":{"type":"number","minimum":0,"maximum":10000000},"currency":{"type":"string","minLength":3,"maxLength":3},"type":{"type":"string","enum":["payment","refund","transfer","deposit","withdrawal"]},"status":{"type":"string","enum":["completed","pending","failed"]},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["minAmount","maxAmount","currency"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"TransactionsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TransactionsRootRecord"}},"meta":{"$ref":"#/components/schemas/TransactionsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"UnicodeInspectRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"input":{"type":"string","description":"Resolved input string, including any unpaired surrogate code units.","example":"A👋"},"source":{"type":"string","description":"Input parameter used: text or utf16.","example":"utf16"},"codeUnitLength":{"type":"integer","description":"Number of UTF-16 code units in input.","example":3},"scalarValueCount":{"type":"integer","description":"Number of Unicode scalar values; unpaired surrogates are excluded.","example":2},"unpairedSurrogateCount":{"type":"integer","description":"Number of isolated UTF-16 high or low surrogate code units.","example":0},"wellFormed":{"type":"boolean","description":"True when input contains no unpaired UTF-16 surrogates.","example":true},"codePoints":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Ordered scalar values or isolated surrogates with code-point notation and UTF-16 offsets.","example":[{"character":"👋","codePoint":"U+1F44B","decimal":128075,"utf16":["D83D","DC4B"],"codeUnitStart":1,"codeUnitLength":2,"isScalar":true}]}},"additionalProperties":false},"UnicodeInspectMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["unicode"]},"params":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":512},"utf16":{"type":"string","minLength":4,"maxLength":2559}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/inspect"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"UnicodeInspectEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/UnicodeInspectRecord"},"meta":{"$ref":"#/components/schemas/UnicodeInspectMeta"}},"required":["data","meta"],"additionalProperties":false},"UnicodeNormalizeRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"input":{"type":"string","description":"Resolved original string.","example":"é"},"source":{"type":"string","description":"Input parameter used: text or utf16.","example":"text"},"form":{"type":"string","description":"Applied normalization form.","example":"NFC"},"normalized":{"type":"string","description":"Normalized output string.","example":"é"},"changed":{"type":"boolean","description":"Whether normalization changed the UTF-16 sequence.","example":true},"inputCodeUnits":{"type":"integer","description":"Original UTF-16 code-unit length.","example":2},"outputCodeUnits":{"type":"integer","description":"Normalized UTF-16 code-unit length.","example":1},"inputScalarValues":{"type":"integer","description":"Original Unicode scalar-value count.","example":2},"outputScalarValues":{"type":"integer","description":"Normalized Unicode scalar-value count.","example":1},"inputUnpairedSurrogates":{"type":"integer","description":"Original isolated-surrogate count.","example":0},"outputUnpairedSurrogates":{"type":"integer","description":"Normalized isolated-surrogate count.","example":0},"wellFormed":{"type":"boolean","description":"Whether both input and output contain no unpaired surrogates.","example":true}},"additionalProperties":false},"UnicodeNormalizeMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["unicode"]},"params":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":512},"utf16":{"type":"string","minLength":4,"maxLength":2559},"form":{"type":"string","enum":["NFC","NFD","NFKC","NFKD"]}},"required":["form"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/normalize"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"UnicodeNormalizeEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/UnicodeNormalizeRecord"},"meta":{"$ref":"#/components/schemas/UnicodeNormalizeMeta"}},"required":["data","meta"],"additionalProperties":false},"UnicodeSegmentRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"input":{"type":"string","description":"Resolved original string.","example":"Hello world!"},"source":{"type":"string","description":"Input parameter used: text or utf16.","example":"text"},"granularity":{"type":"string","description":"Requested segmentation granularity.","example":"word"},"requestedLocale":{"type":"string","description":"Locale requested through language.","example":"en"},"resolvedLocale":{"type":"string","description":"Locale selected by the JavaScript runtime.","example":"en"},"count":{"type":"integer","description":"Number of returned segments.","example":4},"segments":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Segments with UTF-16 start offsets and word-likeness where applicable.","example":[{"segment":"Hello","index":0,"isWordLike":true}]}},"additionalProperties":false},"UnicodeSegmentMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["unicode"]},"params":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":512},"utf16":{"type":"string","minLength":4,"maxLength":2559},"granularity":{"type":"string","enum":["grapheme","word","sentence"]},"language":{"type":"string","enum":["en","da","de","fr","es","it","pt","ja"]}},"required":["granularity","language"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/segment"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"UnicodeSegmentEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/UnicodeSegmentRecord"},"meta":{"$ref":"#/components/schemas/UnicodeSegmentMeta"}},"required":["data","meta"],"additionalProperties":false},"UnitsConvertRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"value":{"type":"number","description":"The input value, echoed back.","example":5},"from":{"type":"string","description":"Canonical id of the source unit.","example":"km"},"to":{"type":"string","description":"Canonical id of the target unit.","example":"mi"},"result":{"type":"number","description":"The converted value — accurate to at least 9 significant digits, and exact conversions (e.g. 1 acre → 4046.8564224 m², 1 atm → 101325 Pa) are returned exactly.","example":3.10685596},"category":{"type":"string","description":"The (shared) category of both units.","example":"length"},"formula":{"type":"string","description":"The conversion rule that was applied, e.g. '1 mi = 1.609344 km' or '°F = °C × 9/5 + 32'.","example":"1 km = 0.621371192237334 mi"}},"additionalProperties":false},"UnitsConvertMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["units"]},"params":{"type":"object","properties":{"value":{"type":"number","minimum":-1000000000000000,"maximum":1000000000000000},"from":{"type":"string"},"to":{"type":"string"}},"required":["value","from","to"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/convert"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"UnitsConvertEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/UnitsConvertRecord"},"meta":{"$ref":"#/components/schemas/UnitsConvertMeta"}},"required":["data","meta"],"additionalProperties":false},"UnitsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"The unit id to pass as 'from'/'to' on /convert.","example":"mi"},"name":{"type":"string","description":"Full human-readable name.","example":"mile"},"category":{"type":"string","description":"One of: length, mass, temperature, volume, data, speed, area, pressure, energy, power, force, angle, time, frequency.","example":"length"},"toBase":{"type":"string","description":"Relation to the category's base unit (m, kg, °C, l, b, kmh, m2, pa, j, w, n, deg, s, hz), e.g. '1 mi = 1609.344 m'. Exact wherever an exact decimal exists; where none does (1 torr, 1 rad) the text says 'rounded' and gives the exact definition.","example":"1 mi = 1609.344 m"}},"additionalProperties":false},"UnitsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["units"]},"params":{"type":"object","properties":{"category":{"type":"string","enum":["length","mass","temperature","volume","data","speed","area","pressure","energy","power","force","angle","time","frequency","any"]}},"required":["category"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","count"],"additionalProperties":false},"UnitsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/UnitsRootRecord"}},"meta":{"$ref":"#/components/schemas/UnitsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"UniversitiesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"name":{"type":"string","description":"Institution name exactly as the upstream community list publishes it. Casing and punctuation are inconsistent upstream and are never rewritten here.","example":"Massachusetts Institute of Technology"},"country":{"type":"string","description":"Canonical ISO 3166-1 English country name, joined from this project's country dataset by the upstream alpha-2 code. The upstream free-text country string is discarded.","example":"United States"},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 code as published upstream.","example":"US"},"domains":{"type":"array","items":{"type":"string"},"description":"Every domain the list registers to this institution, lowercased. Never empty; most rows have one, a few have up to five.","example":["mit.edu"]},"website":{"type":"string","description":"The first upstream web page, verbatim. Many are still http:// and some redirect or have moved — this is a copied value, not a checked one.","example":"http://web.mit.edu/"}},"additionalProperties":false},"UniversitiesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["universities"]},"params":{"type":"object","properties":{"country":{"type":"string"},"search":{"type":"string"},"sort":{"type":"string","enum":["country","name"]},"offset":{"type":"integer","minimum":0,"maximum":20000}},"required":["sort","offset"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","count"],"additionalProperties":false},"UniversitiesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/UniversitiesRootRecord"}},"meta":{"$ref":"#/components/schemas/UniversitiesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"UniversitiesByDomainRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"domain":{"type":"string","description":"The host that was looked up, lowercased (and extracted from a URL if one was given).","example":"cs.ox.ac.uk"},"matchedDomain":{"type":"string","description":"The listed domain that produced the answer — equal to domain on an exact hit.","example":"ox.ac.uk"},"matchType":{"type":"string","description":"exact = the queried host is itself listed; parent = an ancestor domain of it is listed.","example":"parent"},"institutionCount":{"type":"integer","description":"How many institutions are listed under matchedDomain — 1, except for the four shared domains.","example":1},"institutions":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Every institution registered under matchedDomain, each with name, country, countryCode, domains and website. Normally one entry; upstream registers four domains to two institutions each.","example":[{"name":"Massachusetts Institute of Technology","country":"United States","countryCode":"US","domains":["mit.edu"],"website":"http://web.mit.edu/"}]}},"additionalProperties":false},"UniversitiesByDomainMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["universities"]},"params":{"type":"object","properties":{"domain":{"type":"string"}},"required":["domain"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/by-domain"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"UniversitiesByDomainEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/UniversitiesByDomainRecord"},"meta":{"$ref":"#/components/schemas/UniversitiesByDomainMeta"}},"required":["data","meta"],"additionalProperties":false},"UniversitiesVerifyEmailRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"email":{"type":"string","description":"The address as supplied, trimmed. Nothing about the local part is verified.","example":"ada@mit.edu"},"domain":{"type":"string","description":"The address's domain, lowercased — the only part this route looks at.","example":"mit.edu"},"isUniversity":{"type":"boolean","description":"true when the domain, or a parent of it, is on the pinned community list. It does NOT mean the mailbox exists or that the institution is accredited.","example":true},"matchedDomain":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The listed domain that produced the verdict, or null when there was no match.","example":"mit.edu"},"matchType":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"exact, parent, or null when isUniversity is false.","example":"exact"},"institutionCount":{"type":"integer","description":"Institutions listed under matchedDomain; 0 when there is no match, 2 for the four shared domains.","example":1},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The institution, when exactly one is listed under matchedDomain. null when there is no match AND when the domain is shared by two institutions — use /by-domain to see both.","example":"Massachusetts Institute of Technology"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"That institution's canonical ISO 3166-1 English country name, or null.","example":"United States"},"countryCode":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"That institution's ISO 3166-1 alpha-2 code, or null.","example":"US"}},"additionalProperties":false},"UniversitiesVerifyEmailMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["universities"]},"params":{"type":"object","properties":{"email":{"type":"string"}},"required":["email"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/verify-email"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"UniversitiesVerifyEmailEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/UniversitiesVerifyEmailRecord"},"meta":{"$ref":"#/components/schemas/UniversitiesVerifyEmailMeta"}},"required":["data","meta"],"additionalProperties":false},"UnixPermissionsParseRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"octal":{"type":"string","description":"Canonical four-digit octal mode.","example":"4755"},"symbolic":{"type":"string","description":"Nine permission characters with POSIX special-bit notation.","example":"rwsr-xr-x"},"user":{"type":"string","description":"User rwx bits without special-bit substitution.","example":"rwx"},"group":{"type":"string","description":"Group rwx bits without special-bit substitution.","example":"r-x"},"other":{"type":"string","description":"Other rwx bits without special-bit substitution.","example":"r-x"},"setuid":{"type":"boolean","description":"Whether the set-user-ID bit is set.","example":true},"setgid":{"type":"boolean","description":"Whether the set-group-ID bit is set.","example":false},"sticky":{"type":"boolean","description":"Whether the sticky bit is set.","example":false}},"additionalProperties":false},"UnixPermissionsParseMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["unix-permissions"]},"params":{"type":"object","properties":{"mode":{"type":"string","minLength":3,"maxLength":4}},"required":["mode"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/parse"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"UnixPermissionsParseEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/UnixPermissionsParseRecord"},"meta":{"$ref":"#/components/schemas/UnixPermissionsParseMeta"}},"required":["data","meta"],"additionalProperties":false},"UnixPermissionsApplyRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"before":{"type":"string","description":"Canonical mode before the expression.","example":"0644"},"expression":{"type":"string","description":"Symbolic expression that was evaluated.","example":"u+x,g=u,o-rwx"},"umask":{"type":"string","description":"Canonical mask used for omitted target classes.","example":"0022"},"isDirectory":{"type":"boolean","description":"Directory condition used by X and portable sticky-bit validation.","example":false},"after":{"type":"string","description":"Canonical mode after all clauses.","example":"0770"},"symbolic":{"type":"string","description":"Nine-character representation of the result.","example":"rwxrwx---"},"changed":{"type":"boolean","description":"Whether the resulting mode differs from the input mode.","example":true}},"additionalProperties":false},"UnixPermissionsApplyMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["unix-permissions"]},"params":{"type":"object","properties":{"current":{"type":"string","minLength":3,"maxLength":4},"symbolic":{"type":"string","minLength":1,"maxLength":128},"umask":{"type":"string","minLength":3,"maxLength":4},"isDirectory":{"type":"boolean"}},"required":["current","symbolic","umask","isDirectory"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/apply"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"UnixPermissionsApplyEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/UnixPermissionsApplyRecord"},"meta":{"$ref":"#/components/schemas/UnixPermissionsApplyMeta"}},"required":["data","meta"],"additionalProperties":false},"UnixPermissionsUmaskRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"requested":{"type":"string","description":"Canonical requested permission template.","example":"0666"},"umask":{"type":"string","description":"Canonical creation mask.","example":"0022"},"result":{"type":"string","description":"Requested permissions with masked bits removed.","example":"0644"},"symbolic":{"type":"string","description":"Nine-character representation of the result.","example":"rw-r--r--"}},"additionalProperties":false},"UnixPermissionsUmaskMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["unix-permissions"]},"params":{"type":"object","properties":{"requested":{"type":"string","minLength":3,"maxLength":4},"umask":{"type":"string","minLength":3,"maxLength":4}},"required":["requested","umask"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/umask"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"UnixPermissionsUmaskEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/UnixPermissionsUmaskRecord"},"meta":{"$ref":"#/components/schemas/UnixPermissionsUmaskMeta"}},"required":["data","meta"],"additionalProperties":false},"UrlsParseRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"href":{"type":"string","format":"uri","description":"Canonical absolute URL with username and password removed.","example":"https://example.com/docs?q=one&q=two#api"},"origin":{"type":"string","description":"Serialized URL origin; 'null' for schemes without an origin.","example":"https://example.com"},"protocol":{"type":"string","description":"Lowercase scheme including its trailing colon.","example":"https:"},"hostname":{"type":"string","description":"Canonical hostname; Unicode domains use ASCII/punycode and IPv6 retains brackets.","example":"example.com"},"port":{"type":"string","description":"Explicit non-default port, or an empty string when absent/default.","example":""},"pathname":{"type":"string","description":"Serialized URL path.","example":"/docs"},"query":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Decoded `{name,value}` pairs in source order, preserving duplicate names.","example":[{"name":"q","value":"one"},{"name":"q","value":"two"}]},"hash":{"type":"string","description":"Serialized fragment including '#', or an empty string.","example":"#api"},"hasCredentials":{"type":"boolean","description":"Whether the input contained a username or password before safe removal.","example":false}},"additionalProperties":false},"UrlsParseMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["urls"]},"params":{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":2048}},"required":["url"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/parse"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"UrlsParseEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/UrlsParseRecord"},"meta":{"$ref":"#/components/schemas/UrlsParseMeta"}},"required":["data","meta"],"additionalProperties":false},"UrlsResolveRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"base":{"type":"string","format":"uri","description":"Canonical absolute base URL.","example":"https://example.com/docs/guides/start"},"relative":{"type":"string","description":"Relative reference exactly as interpreted after surrounding whitespace is trimmed.","example":"../api?format=json"},"resolved":{"type":"string","format":"uri","description":"Canonical absolute result of WHATWG URL resolution.","example":"https://example.com/docs/api?format=json"},"origin":{"type":"string","description":"Origin of the resolved URL.","example":"https://example.com"}},"additionalProperties":false},"UrlsResolveMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["urls"]},"params":{"type":"object","properties":{"base":{"type":"string","minLength":1,"maxLength":2048},"relative":{"type":"string","minLength":1,"maxLength":2048}},"required":["base","relative"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/resolve"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"UrlsResolveEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/UrlsResolveRecord"},"meta":{"$ref":"#/components/schemas/UrlsResolveMeta"}},"required":["data","meta"],"additionalProperties":false},"UserAgentsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"userAgent":{"type":"string","description":"Full User-Agent header value. Its platform and browser tokens always match the browser, os and device fields.","example":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36"},"browser":{"type":"string","description":"chrome | firefox | safari | edge.","example":"chrome"},"browserVersion":{"type":"string","description":"Version exactly as it appears in the UA's browser token (Chrome/Edge are frozen to <major>.0.0.0, Firefox is <major>.0, Safari is <major>.<minor>).","example":"138.0.0.0"},"os":{"type":"string","description":"windows | macos | linux | android | ios.","example":"windows"},"device":{"type":"string","description":"desktop | mobile | tablet.","example":"desktop"}},"additionalProperties":false},"UserAgentsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["user-agents"]},"params":{"type":"object","properties":{"browser":{"type":"string","enum":["chrome","firefox","safari","edge"]},"os":{"type":"string","enum":["windows","macos","linux","android","ios"]},"device":{"type":"string","enum":["desktop","mobile","tablet"]}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"UserAgentsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/UserAgentsRootRecord"}},"meta":{"$ref":"#/components/schemas/UserAgentsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"UsernamesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"username":{"type":"string","description":"The generated username, always ≤ maxLength.","example":"pixel.fox42"},"style":{"type":"string","description":"The style this username was built with (useful when mixing).","example":"handle"}},"additionalProperties":false},"UsernamesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["usernames"]},"params":{"type":"object","properties":{"style":{"type":"string","enum":["handle","gamer","professional","anonymous"]},"maxLength":{"type":"integer","minimum":6,"maximum":30}},"required":["maxLength"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"UsernamesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/UsernamesRootRecord"}},"meta":{"$ref":"#/components/schemas/UsernamesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"UsersRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","format":"uuid","description":"Stable per seed+index.","example":"0b9a3f2e-6d1c-4a8b-9f2e-3d1c4a8b9f2e"},"firstName":{"type":"string","description":"Given name (locale-aware).","example":"Emily"},"lastName":{"type":"string","description":"Family name (locale-aware).","example":"Carter"},"fullName":{"type":"string","description":"firstName + lastName.","example":"Emily Carter"},"gender":{"type":"string","description":"male | female — matches the name.","example":"female"},"birthDate":{"type":"string","format":"date","description":"Consistent with age (relative to request time).","example":"1994-04-12"},"age":{"type":"integer","description":"Age in whole years, within minAge..maxAge.","example":32},"email":{"type":"string","description":"Derived from the name; non-deliverable domain by default.","example":"emily.carter@example.com"},"phone":{"type":"string","description":"Locale-formatted phone number (fake).","example":"+1 555 028 4821"},"username":{"type":"string","description":"Derived from the name.","example":"emily.carter94"},"avatarUrl":{"type":"string","format":"uri","description":"Ready-to-use avatar from this platform's avatar API.","example":"https://randomapi.dev/api/avatars/image?style=initials&seed=emilycarter&name=Emily%20Carter"},"jobTitle":{"type":"string","description":"Plausible job title.","example":"Senior Product Designer"},"address":{"type":"object","additionalProperties":true,"description":"Nested address: street, city, state (nullable), zipCode, country, countryCode, latitude, longitude.","example":{"street":"883 Maple Avenue","city":"Portland","state":"Oregon","zipCode":"97205","country":"United States","countryCode":"US","latitude":45.5152,"longitude":-122.6784}}},"additionalProperties":false},"UsersRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["users"]},"params":{"type":"object","properties":{"gender":{"type":"string","enum":["male","female"]},"minAge":{"type":"integer","minimum":0,"maximum":120},"maxAge":{"type":"integer","minimum":0,"maximum":120},"domain":{"type":"string"}},"required":["minAge","maxAge"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295},"locale":{"type":"string","enum":["en","da","de","fr","es","it","pt","ja"]}},"required":["endpoint","params","generatedAt","count","seed","locale"],"additionalProperties":false},"UsersRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/UsersRootRecord"}},"meta":{"$ref":"#/components/schemas/UsersRootMeta"}},"required":["data","meta"],"additionalProperties":false},"UtmMgrsFromLatlngRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"system":{"type":"string","description":"Grid system used: utm between 80°S and 84°N, ups beyond it.","example":"utm"},"zone":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"UTM zone 1–60; null for UPS, which has no zone number (NGA.STND.0037 §3-2c).","example":33},"band":{"type":"string","description":"Latitude band letter C–X for UTM (I and O are not used), or the polar zone letter A/B in the south and Y/Z in the north.","example":"U"},"gridZoneDesignator":{"type":"string","description":"Zone number plus band letter, or the bare band letter for UPS. When extendedZone is true this names the projection the coordinate was computed in, NOT an area containing the point — see naturalZone.","example":"33U"},"hemisphere":{"type":"string","description":"north or south. Southern-hemisphere UTM northings carry the 10,000,000 m false northing.","example":"north"},"easting":{"type":"number","description":"Grid easting in metres, rounded to millimetres for display; the 100,000-metre square letters and the truncated MGRS digits are decided from the value snapped to the nearest micrometre, so a coordinate given with sub-millimetre digits can display as a round number while its letters still say which side of the grid line it lies on. Inside a natural UTM zone the easting always falls between 100,000 and 900,000; UPS eastings are measured from a 2,000,000 m false easting.","example":347090.938},"northing":{"type":"number","description":"Grid northing in metres, rounded to millimetres on the same rule as the easting. Southern-hemisphere UTM carries the 10,000,000 m false northing, so the equator is 10,000,000 there and 0 in the north.","example":6172711.786},"convergenceDegrees":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Grid convergence: the azimuth of grid north reckoned clockwise from true north (Karney 2011 Eq. 24). Exactly 0 on a UTM central meridian, positive east of it in the north and negative east of it in the south. null at a pole in UPS, where the meridian is degenerate.","example":-2.0086373},"scaleFactor":{"type":"number","description":"Point scale factor of the projection (Karney 2011 Eq. 25). Exactly 0.9996 on a UTM central meridian and 0.994 at a pole in UPS; it reaches about 1.0013 at the western edge of the widened zone 32V.","example":0.999886803},"epsg":{"type":"integer","description":"EPSG code of the (E,N)-ordered CRS: 32600+zone in the north, 32700+zone in the south, 5041 for UPS North and 5042 for UPS South. EPSG 32661/32761 are the same UPS CRSs with N,E axis order.","example":32633},"mgrs":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical MGRS reference at the requested precision, written without spaces (NGA.STND.0037 §3-4b). null when a forced zone makes the coordinate an extended-grid one, for which the standard defines no reference.","example":"33UUB4709072711"},"mgrsSpaced":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The same reference in the conventional spaced human form. A reading convenience, not the notation the standard prescribes.","example":"33U UB 47090 72711"},"mgrsPrecisionMeters":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Side length in metres of the square the reference denotes: 100000, 10000, 1000, 100, 10 or 1.","example":1},"squareId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The two-letter 100,000-metre square identification on its own (NGA.STND.0037 §3-3).","example":"UB"},"exception":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"norway when NGA.STND.0037 Table 7 set this grid zone's extent (31V, 32V), svalbard when Table 8 did (31X, 33X, 35X, 37X), else null.","example":null},"exceptionNote":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Prose naming the exception rule and stating that it changes zone extents, never central meridians. null when no exception applies.","example":null},"extendedZone":{"type":"boolean","description":"True when the zone parameter forced a projection outside the point's natural zone. The easting may then leave 100,000–900,000 and the scale factor may exceed 1.01 — honest values, not errors.","example":false},"naturalZone":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"The UTM zone the point actually falls in, equal to zone unless it was forced; null for UPS.","example":33}},"additionalProperties":false},"UtmMgrsFromLatlngMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["utm-mgrs"]},"params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180},"precision":{"type":"integer","minimum":0,"maximum":5},"zone":{"type":"integer","minimum":1,"maximum":60},"datum":{"type":"string","minLength":1,"maxLength":32}},"required":["lat","lng","precision","datum"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/from-latlng"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"UtmMgrsFromLatlngEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/UtmMgrsFromLatlngRecord"},"meta":{"$ref":"#/components/schemas/UtmMgrsFromLatlngMeta"}},"required":["data","meta"],"additionalProperties":false},"UtmMgrsToLatlngRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"input":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The value parameter exactly as received; null when the components were supplied instead.","example":"18SUJ23480647"},"inputForm":{"type":"string","description":"How the input was read: mgrs, utm-coordinate, ups-coordinate or components.","example":"mgrs"},"system":{"type":"string","description":"Grid system used: utm between 80°S and 84°N, ups beyond it.","example":"utm"},"zone":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"UTM zone 1–60; null for UPS, which has no zone number (NGA.STND.0037 §3-2c).","example":18},"band":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Latitude band letter C–X for UTM (I and O are not used), or the polar zone letter A/B in the south and Y/Z in the north. For an MGRS reference this is the letter the reference carries; for a numeric coordinate it is the band the decoded latitude falls in — NGA.STND.0037 §A-5 makes the latitude the authority, so a mismatched or hemisphere-style letter is warned about rather than echoed. null only when a numeric coordinate decodes outside the 80°S–84°N band range.","example":"S"},"gridZoneDesignator":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Zone number plus band letter, or the bare band letter for UPS. When extendedZone is true this names the projection the coordinate was computed in, NOT an area containing the point — see naturalZone. For an MGRS reference this is the letter the reference carries; for a numeric coordinate it is the band the decoded latitude falls in — NGA.STND.0037 §A-5 makes the latitude the authority, so a mismatched or hemisphere-style letter is warned about rather than echoed. null only when a numeric coordinate decodes outside the 80°S–84°N band range.","example":"18S"},"hemisphere":{"type":"string","description":"north or south. Southern-hemisphere UTM northings carry the 10,000,000 m false northing.","example":"north"},"easting":{"type":"number","description":"Grid easting in metres, rounded to millimetres for display; the 100,000-metre square letters and the truncated MGRS digits are decided from the value snapped to the nearest micrometre, so a coordinate given with sub-millimetre digits can display as a round number while its letters still say which side of the grid line it lies on. Inside a natural UTM zone the easting always falls between 100,000 and 900,000; UPS eastings are measured from a 2,000,000 m false easting. For MGRS input this is the south-west corner of the square (NGA.STND.0037 §3-4d).","example":323480},"northing":{"type":"number","description":"Grid northing in metres, rounded to millimetres on the same rule as the easting. Southern-hemisphere UTM carries the 10,000,000 m false northing, so the equator is 10,000,000 there and 0 in the north. For MGRS input this is the south-west corner of the square (NGA.STND.0037 §3-4d).","example":4306470},"convergenceDegrees":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Grid convergence: the azimuth of grid north reckoned clockwise from true north (Karney 2011 Eq. 24). Exactly 0 on a UTM central meridian, positive east of it in the north and negative east of it in the south. null at a pole in UPS, where the meridian is degenerate.","example":-1.2781132},"scaleFactor":{"type":"number","description":"Point scale factor of the projection (Karney 2011 Eq. 25). Exactly 0.9996 on a UTM central meridian and 0.994 at a pole in UPS; it reaches about 1.0013 at the western edge of the widened zone 32V.","example":0.999983701},"epsg":{"type":"integer","description":"EPSG code of the (E,N)-ordered CRS: 32600+zone in the north, 32700+zone in the south, 5041 for UPS North and 5042 for UPS South. EPSG 32661/32761 are the same UPS CRSs with N,E axis order.","example":32618},"letterRole":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"How the letter after the zone was read: latitude-band (the standard reading, §A-5), hemisphere-designator (only when a band reading is geometrically impossible, and a warning says so), or polar-zone for the UPS letters A/B/Y/Z. null when no letter was supplied.","example":"latitude-band"},"latitude":{"type":"number","description":"WGS 84 latitude of what the reference denotes: the exact point for a numeric coordinate, or the south-west corner of the square for an MGRS reference (NGA.STND.0037 §3-4d).","example":38.889381136},"longitude":{"type":"number","description":"WGS 84 longitude of the same position.","example":-77.035274279},"center":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"latitude/longitude of the square's centre, which is usually what a map should show. null for numeric input, which is already a point.","example":{"latitude":38.889427169,"longitude":-77.035217949}},"square":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"description":"eastingMin, northingMin and sizeMeters — the square exactly, in grid metres. No degree bounds are returned: a UTM/UPS square's outline is not a latitude/longitude rectangle. null for numeric input.","example":{"eastingMin":323480,"northingMin":4306470,"sizeMeters":10}},"mgrsPrecisionMeters":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Side length of the square the input denoted, for MGRS input; null for numeric input.","example":10},"mgrs":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical re-encoding of the returned position at full 1 m precision — a round-trip check the caller can see. It uses the zone the coordinate was supplied in, so for an extended-grid coordinate it names a square in that zone's grid even though the point falls outside the zone's own extent, and a warning says so. null in two cases, each warned about: when the coordinate falls outside the 100,000-metre letter grid so no square identification exists (an easting beyond the range the eight column letters cover in UTM, or a position off the lettered cap in UPS), and when a numeric coordinate decodes outside 80°S–84°N, where no latitude band and therefore no grid zone designator exists to write in front of the square — squareId is still returned in that case.","example":"18SUJ2348006470"},"squareId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The two-letter 100,000-metre square identification of the returned position.","example":"UJ"},"exception":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"norway or svalbard when the decoded position sits in a grid zone whose extent comes from NGA.STND.0037 Table 7 or 8, else null.","example":null},"exceptionNote":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Prose naming that exception rule, or null.","example":null}},"additionalProperties":false},"UtmMgrsToLatlngMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["utm-mgrs"]},"params":{"type":"object","properties":{"value":{"type":"string","minLength":1,"maxLength":64},"zone":{"type":"integer","minimum":1,"maximum":60},"band":{"type":"string","minLength":1,"maxLength":1},"hemisphere":{"type":"string","enum":["north","south"]},"easting":{"type":"number","minimum":0,"maximum":4000000},"northing":{"type":"number","minimum":0,"maximum":10000000},"datum":{"type":"string","minLength":1,"maxLength":32}},"required":["datum"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/to-latlng"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"UtmMgrsToLatlngEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/UtmMgrsToLatlngRecord"},"meta":{"$ref":"#/components/schemas/UtmMgrsToLatlngMeta"}},"required":["data","meta"],"additionalProperties":false},"UtmMgrsZoneRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"system":{"type":"string","description":"utm inside 80°S–84°N, ups beyond it.","example":"utm"},"zone":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"UTM zone 1–60 after the Table 7/8 exceptions; null for UPS.","example":33},"band":{"type":"string","description":"Latitude band letter, or the polar zone letter A/B/Y/Z.","example":"X"},"gridZoneDesignator":{"type":"string","description":"The full designation, e.g. 33X, or the bare polar letter.","example":"33X"},"hemisphere":{"type":"string","description":"north or south.","example":"north"},"centralMeridian":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Longitude of the zone's central meridian, 6·zone − 183 for every zone — the exceptions of Tables 7 and 8 change zone extents, never central meridians. null for UPS, whose longitude of origin is 0°E.","example":15},"westDegrees":{"type":"number","description":"Western longitude limit of this grid zone designation area, after the exceptions. Inclusive: a point on the boundary belongs to the zone east of it.","example":9},"eastDegrees":{"type":"number","description":"Eastern longitude limit, exclusive.","example":21},"southDegrees":{"type":"number","description":"Southern latitude limit of the band. Inclusive: a point on the boundary belongs to the band north of it.","example":72},"northDegrees":{"type":"number","description":"Northern latitude limit of the band; 84 for band X, which is 12° tall rather than 8°.","example":84},"widthDegrees":{"type":"number","description":"Longitude span in degrees: 6 normally, 3 for 31V, 9 for 32V/31X/37X and 12 for 33X/35X.","example":12},"heightDegrees":{"type":"number","description":"Latitude span in degrees: 8 for bands C–W, 12 for band X.","example":12},"epsg":{"type":"integer","description":"EPSG code of the corresponding (E,N)-ordered CRS.","example":32633},"exception":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"norway, svalbard or null.","example":"svalbard"},"exceptionNote":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Prose naming the exception rule, or null. Every field example on this route describes 33X, so this one carries the Svalbard note.","example":"NGA.STND.0037 Table 8: between 72°N and 84°N, zones 32, 34 and 36 do not exist; zone 31 covers 0°–9°E, 33 covers 9°–21°E, 35 covers 21°–33°E and 37 covers 33°–42°E. The central meridians do not move."},"naturalZoneWithoutException":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"The zone the plain 6° rule of Table 6 would have given, so the exception is auditable. Equal to zone wherever no exception moved the boundary; null for UPS.","example":33},"utmValid":{"type":"boolean","description":"Whether the point lies inside the 80°S–84°N range in which UTM is portrayed (NGA.STND.0037 §2-4-1a).","example":true}},"additionalProperties":false},"UtmMgrsZoneMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["utm-mgrs"]},"params":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/zone"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"UtmMgrsZoneEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/UtmMgrsZoneRecord"},"meta":{"$ref":"#/components/schemas/UtmMgrsZoneMeta"}},"required":["data","meta"],"additionalProperties":false},"UtmMgrsGridZonesRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"gridZoneDesignator":{"type":"string","description":"Zone number plus band letter, or the bare polar letter for the four UPS areas.","example":"33X"},"system":{"type":"string","description":"utm inside 80°S–84°N, ups beyond it.","example":"utm"},"zone":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"UTM zone 1–60 after the Table 7/8 exceptions; null for UPS.","example":33},"band":{"type":"string","description":"Latitude band letter, or the polar zone letter A/B/Y/Z.","example":"X"},"hemisphere":{"type":"string","description":"north or south.","example":"north"},"centralMeridian":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Longitude of the zone's central meridian, 6·zone − 183 for every zone — the exceptions of Tables 7 and 8 change zone extents, never central meridians. null for UPS, whose longitude of origin is 0°E.","example":15},"westDegrees":{"type":"number","description":"Western longitude limit of this grid zone designation area, after the exceptions. Inclusive: a point on the boundary belongs to the zone east of it.","example":9},"eastDegrees":{"type":"number","description":"Eastern longitude limit, exclusive.","example":21},"southDegrees":{"type":"number","description":"Southern latitude limit of the band. Inclusive: a point on the boundary belongs to the band north of it.","example":72},"northDegrees":{"type":"number","description":"Northern latitude limit of the band; 84 for band X, which is 12° tall rather than 8°.","example":84},"widthDegrees":{"type":"number","description":"Longitude span in degrees: 6 normally, 3 for 31V, 9 for 32V/31X/37X and 12 for 33X/35X.","example":12},"heightDegrees":{"type":"number","description":"Latitude span in degrees: 8 for bands C–W, 12 for band X.","example":12},"epsg":{"type":"integer","description":"EPSG code of the corresponding (E,N)-ordered CRS.","example":32633},"exception":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"norway, svalbard or null.","example":"svalbard"},"exceptionNote":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Prose naming the exception rule, or null. Every field example on this route describes 33X, so this one carries the Svalbard note.","example":"NGA.STND.0037 Table 8: between 72°N and 84°N, zones 32, 34 and 36 do not exist; zone 31 covers 0°–9°E, 33 covers 9°–21°E, 35 covers 21°–33°E and 37 covers 33°–42°E. The central meridians do not move."}},"additionalProperties":false},"UtmMgrsGridZonesMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["utm-mgrs"]},"params":{"type":"object","properties":{"zone":{"type":"integer","minimum":1,"maximum":60},"band":{"type":"string","minLength":1,"maxLength":1},"system":{"type":"string","enum":["utm","ups"]},"exceptionsOnly":{"type":"boolean"},"offset":{"type":"integer","minimum":0}},"required":["exceptionsOnly","offset"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/grid-zones"]},"count":{"type":"integer","minimum":0}},"required":["endpoint","params","generatedAt","route","count"],"additionalProperties":false},"UtmMgrsGridZonesEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/UtmMgrsGridZonesRecord"}},"meta":{"$ref":"#/components/schemas/UtmMgrsGridZonesMeta"}},"required":["data","meta"],"additionalProperties":false},"UuidsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"value":{"type":"string","description":"The generated identifier in the requested format.","example":"3f8a2c4e-9b1d-4e6f-8a2c-5d7b9e1f3a6c"},"type":{"type":"string","description":"The format of this value — echoes the type parameter.","example":"uuid4"}},"additionalProperties":false},"UuidsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["uuids"]},"params":{"type":"object","properties":{"type":{"type":"string","enum":["uuid4","uuid7","ulid","nanoid","hex"]},"length":{"type":"integer","minimum":4,"maximum":128},"uppercase":{"type":"boolean"}},"required":["type","uppercase"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"UuidsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/UuidsRootRecord"}},"meta":{"$ref":"#/components/schemas/UuidsRootMeta"}},"required":["data","meta"],"additionalProperties":false},"UuidsInspectRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"input":{"type":"string","description":"UUID text exactly as supplied.","example":"017f22e2-79b0-7cc3-98c4-dc0c0c07398f"},"canonical":{"type":"string","description":"Canonical lowercase UUID text.","example":"017f22e2-79b0-7cc3-98c4-dc0c0c07398f"},"isNil":{"type":"boolean","description":"Whether all 128 bits are zero (the Nil UUID).","example":false},"isMax":{"type":"boolean","description":"Whether all 128 bits are one (the Max UUID).","example":false},"variant":{"type":"string","description":"ncs, rfc9562, microsoft or reserved based on the variant bits.","example":"rfc9562"},"isRfc9562":{"type":"boolean","description":"Whether the variant bits are the RFC 9562 10xx layout.","example":true},"version":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"RFC variant version nibble, or null when version semantics do not apply.","example":7},"versionName":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"RFC version family name or reservation status, or null for other variants.","example":"Unix time-based"},"unixMilliseconds":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"UUIDv7's unsigned 48-bit Unix millisecond field, or null for other versions.","example":"1645557742000"},"timestamp":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"UUIDv7 timestamp rendered as UTC ISO 8601, or null for other versions.","example":"2022-02-22T19:22:22.000Z"}},"additionalProperties":false},"UuidsInspectMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["uuids"]},"params":{"type":"object","properties":{"value":{"type":"string","minLength":36,"maxLength":36}},"required":["value"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"route":{"type":"string","enum":["/inspect"]}},"required":["endpoint","params","generatedAt","route"],"additionalProperties":false},"UuidsInspectEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/UuidsInspectRecord"},"meta":{"$ref":"#/components/schemas/UuidsInspectMeta"}},"required":["data","meta"],"additionalProperties":false},"VehiclesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"make":{"type":"string","description":"Manufacturer display name (e.g. 'Toyota', 'Mercedes-Benz').","example":"Toyota"},"model":{"type":"string","description":"A real model of that make.","example":"RAV4"},"year":{"type":"integer","description":"Model year, within minYear..maxYear and never before the model's launch era.","example":2019},"type":{"type":"string","description":"Body type: sedan | suv | hatchback | estate | coupe | van | pickup.","example":"suv"},"fuel":{"type":"string","description":"petrol | diesel | hybrid | electric — always plausible for the model (Teslas are always electric).","example":"hybrid"},"vin":{"type":"string","description":"17-char VIN: real WMI prefix for the make, valid ISO 3779 check digit (position 9), standard year code (position 10), no I/O/Q.","example":"JTDKN3DU9K5866312"},"licensePlate":{"type":"string","description":"Generic fake plate in ABC-123 format (deliberately no real country's scheme).","example":"KJR-482"},"color":{"type":"string","description":"Exterior color.","example":"Silver"}},"additionalProperties":false},"VehiclesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["vehicles"]},"params":{"type":"object","properties":{"make":{"type":"string","enum":["toyota","volkswagen","ford","bmw","mercedes","audi","honda","hyundai","kia","volvo","tesla","peugeot"]},"type":{"type":"string","enum":["sedan","suv","hatchback","estate","coupe","van","pickup"]},"fuel":{"type":"string","enum":["petrol","diesel","hybrid","electric"]},"minYear":{"type":"integer","minimum":1990,"maximum":2027},"maxYear":{"type":"integer","minimum":1990,"maximum":2027}},"required":["minYear"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"VehiclesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/VehiclesRootRecord"}},"meta":{"$ref":"#/components/schemas/VehiclesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"WeatherRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"condition":{"type":"string","description":"sunny | partly-cloudy | cloudy | rain | snow | storm | fog. Obeys the physics rules (snow only below 4°C, no rain/storm in desert).","example":"partly-cloudy"},"temperatureC":{"type":"number","description":"Temperature in °C, inside the climate's band, stepping in 0.5° so the °F conversion stays exact.","example":23.5},"temperatureF":{"type":"number","description":"Exactly temperatureC × 9⁄5 + 32 — always consistent with temperatureC.","example":74.3},"humidity":{"type":"integer","description":"Relative humidity 0–100 %, inside the climate's band; ≥ 55 whenever it rains or storms.","example":68},"windKmh":{"type":"integer","description":"Wind speed 0–110 km/h; storms always ≥ 40.","example":14},"windDirection":{"type":"string","description":"8-point compass direction: N, NE, E, SE, S, SW, W or NW.","example":"SW"},"pressureHpa":{"type":"integer","description":"Air pressure 960–1045 hPa; storms sit at the low end.","example":1012},"uvIndex":{"type":"integer","description":"UV index 0–11, coupled to the condition: high when sunny, near zero in rain, storm or fog.","example":7},"climate":{"type":"string","description":"The climate profile this record was generated from (echoes ?climate when set).","example":"tropical"}},"additionalProperties":false},"WeatherRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["weather"]},"params":{"type":"object","properties":{"climate":{"type":"string","enum":["tropical","temperate","arctic","desert"]}},"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"WeatherRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WeatherRootRecord"}},"meta":{"$ref":"#/components/schemas/WeatherRootMeta"}},"required":["data","meta"],"additionalProperties":false},"WebhookDeliveriesRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"id":{"type":"string","description":"Distinct fictional delivery ID.","example":"whd_5c2f8ad001b7_00"},"eventId":{"type":"string","description":"Stable event ID shared by every attempt.","example":"evt_99f1d782d834"},"eventType":{"type":"string","description":"The selected event payload type.","example":"order.paid"},"eventAt":{"type":"string","format":"date-time","description":"Event creation time inside from/to.","example":"2026-01-12T10:15:00.000Z"},"destination":{"type":"string","format":"uri","description":"HTTPS URL under reserved example.com.","example":"https://hooks.example.com/webhooks/whd_demo"},"status":{"type":"string","description":"delivered | retrying | failed.","example":"retrying"},"attemptCount":{"type":"integer","description":"Exact length of attempts.","example":2},"retryLimit":{"type":"integer","description":"Maximum attempts before terminal failure.","example":5},"nextRetryAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Future retry time only while retrying.","example":"2026-01-12T10:20:00.000Z"},"signature":{"type":"string","description":"Test-only sha256-shaped value, not a cryptographic signature.","example":"sha256=0123456789abcdef"},"headers":{"type":"object","additionalProperties":true,"description":"Generic example delivery headers with event, delivery and test-signature IDs.","example":{"content-type":"application/json","x-example-event":"order.paid"}},"payload":{"type":"object","additionalProperties":true,"description":"Event-specific fictional JSON payload.","example":{"orderId":"ord_demo","amountMinor":4200,"currency":"USD"}},"attempts":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Chronological bounded attempts with statusCode, duration, outcome and nullable error.","example":[{"number":1,"attemptedAt":"2026-01-12T10:15:01.000Z","statusCode":503,"durationMs":245,"outcome":"failure","error":"destination returned a temporary server error"}]}},"additionalProperties":false},"WebhookDeliveriesRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["webhook-deliveries"]},"params":{"type":"object","properties":{"eventType":{"type":"string","enum":["user.created","order.paid","invoice.overdue","file.processed"]},"status":{"type":"string","enum":["delivered","retrying","failed"]},"attemptCount":{"type":"integer","minimum":1,"maximum":6},"retryLimit":{"type":"integer","minimum":1,"maximum":6},"from":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["retryLimit"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"WebhookDeliveriesRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WebhookDeliveriesRootRecord"}},"meta":{"$ref":"#/components/schemas/WebhookDeliveriesRootMeta"}},"required":["data","meta"],"additionalProperties":false},"WordsRootRecord":{"type":"object","description":"The declared top-level fields. They are all present by default, but fields/exclude projection can remove any of them. Nested object shapes remain open because FieldDef does not declare nested properties.","properties":{"word":{"type":"string","description":"The word, within minLength..maxLength characters (a few entries contain a hyphen).","example":"harvest"},"partOfSpeech":{"type":"string","description":"The part of speech actually generated: noun | verb | adjective | adverb. Varies per word when type=any.","example":"noun"}},"additionalProperties":false},"WordsRootMeta":{"type":"object","properties":{"endpoint":{"type":"string","enum":["words"]},"params":{"type":"object","properties":{"type":{"type":"string","enum":["noun","verb","adjective","adverb","any"]},"minLength":{"type":"integer","minimum":1,"maximum":30},"maxLength":{"type":"integer","minimum":1,"maximum":30}},"required":["type","minLength","maxLength"],"additionalProperties":true},"generatedAt":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","minimum":0},"seed":{"type":"integer","minimum":0,"maximum":4294967295}},"required":["endpoint","params","generatedAt","count","seed"],"additionalProperties":false},"WordsRootEnvelope":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WordsRootRecord"}},"meta":{"$ref":"#/components/schemas/WordsRootMeta"}},"required":["data","meta"],"additionalProperties":false}},"headers":{"AccessControlAllowOrigin":{"description":"CORS is open to every origin.","schema":{"type":"string","enum":["*"]}},"XRobotsTag":{"description":"Raw API responses are excluded from search indexing so they do not compete with the human documentation pages.","schema":{"type":"string","enum":["noindex"]}},"RateLimitLimit":{"description":"Request ceiling of the currently constraining fixed window (60/minute or 10,000/day per IP).","schema":{"type":"integer","minimum":1}},"RateLimitRemaining":{"description":"Requests remaining in the currently constraining fixed window after this response.","schema":{"type":"integer","minimum":0}},"RateLimitReset":{"description":"Unix timestamp in seconds when the currently constraining fixed window resets.","schema":{"type":"integer","minimum":0}},"RetryAfter":{"description":"Seconds until the rate-limited request can be retried.","schema":{"type":"integer","minimum":1}},"ImageCacheControl":{"description":"Image routes are deterministic per URL and carry the platform's long browser/shared-cache policy.","schema":{"type":"string","enum":["public, max-age=86400, s-maxage=604800"]}}},"responses":{"BadRequest":{"description":"A query parameter or parameter combination is invalid.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"error":{"code":"BAD_REQUEST","message":"A query parameter or parameter combination is invalid.","status":400}}}}},"RateLimited":{"description":"The per-IP minute or day fixed window is exhausted.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitedError"},"example":{"error":{"code":"RATE_LIMITED","message":"The per-IP minute or day fixed window is exhausted.","status":429}}}}},"Internal":{"description":"An unexpected server error occurred.","headers":{"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"X-Robots-Tag":{"$ref":"#/components/headers/XRobotsTag"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"},"example":{"error":{"code":"INTERNAL","message":"An unexpected server error occurred.","status":500}}}}}}},"externalDocs":{"description":"randomapi.dev documentation","url":"https://randomapi.dev/docs"}}
