{"openapi":"3.0.3","info":{"title":"rfc3339.date — Time API","version":"1.2.0","description":"A precise, developer-centric time API. Defaults to canonical RFC3339 UTC for /now, supports IANA time zones, strict RFC3339 validation, ISO8601 validation, and conversions across common + exotic representations (NTP, GPS, TAI, JD/MJD, Excel, HTTP-date, RFC5322). Plain text is first-class; JSON is optional via Accept header or ?json=1.\n","license":{"name":"NOASSERTION","url":"https://spdx.org/licenses/NOASSERTION.html"}},"servers":[{"url":"https://rfc3339.date","description":"Production"}],"tags":[{"name":"Time","description":"Current-time endpoints rendered in UTC or a requested zone."},{"name":"Validation","description":"Timestamp validation endpoints for single values and batches."},{"name":"Conversion","description":"Canonicalization, conversion, and rounding operations across supported encodings."},{"name":"Timezones","description":"IANA zone discovery, offset inspection, transition lookup, and human-time conversion."},{"name":"Developer UX","description":"Parsing, formatting, duration, spreadsheet, and calendar helpers for developer workflows."},{"name":"Datasets","description":"Versioned supporting datasets used by conversion endpoints."}],"security":[],"paths":{"/now":{"get":{"operationId":"getNowUtc","tags":["Time"],"summary":"Current time as RFC3339 (UTC)","description":"Returns the current instant serialized as RFC3339 in UTC (canonical Z). Default response is text/plain.\n","parameters":[{"name":"precision","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":9,"default":3},"description":"Fractional second digits to emit (0..9)."},{"name":"format","in":"query","required":false,"schema":{"type":"string","enum":["rfc3339","rfc3339sec","rfc3339nano"],"default":"rfc3339"},"description":"Convenience output format alias."},{"name":"json","in":"query","required":false,"schema":{"type":"integer","enum":[0,1],"default":0},"description":"If 1, forces JSON output regardless of Accept header."}],"responses":{"200":{"description":"RFC3339 timestamp","headers":{"Cache-Control":{"schema":{"type":"string"},"example":"no-store"}},"content":{"text/plain":{"schema":{"type":"string"},"examples":{"utc":{"value":"2026-02-25T19:17:03.482Z"}}},"application/json":{"schema":{"type":"object","required":["now","tz","offset","precision"],"properties":{"now":{"type":"string","description":"Timestamp string in selected representation (RFC3339)"},"tz":{"type":"string","description":"Rendering time zone (UTC or requested IANA)"},"offset":{"type":"string","description":"Numeric offset at that instant (e.g. Z, +01:00)"},"precision":{"type":"integer"},"unix":{"type":"integer","description":"Unix seconds"},"unixms":{"type":"integer","description":"Unix milliseconds"}}}}}},"400":{"description":"Bad request (invalid input, ambiguity, or unsupported combination)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}}}}},"/now/{tz}":{"get":{"operationId":"getNowInZone","tags":["Time","Timezones"],"summary":"Current time rendered in an IANA time zone","description":"Returns the current instant rendered in the requested IANA time zone, including numeric offset. Same instant as /now, different representation.\n","parameters":[{"name":"tz","in":"path","required":true,"schema":{"type":"string"},"description":"IANA time zone ID (URL-encoded), e.g. Europe%2FBerlin"},{"name":"precision","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":9,"default":3},"description":"Fractional second digits to emit (0..9)."},{"name":"format","in":"query","required":false,"schema":{"type":"string","enum":["rfc3339","rfc3339sec","rfc3339nano"],"default":"rfc3339"},"description":"Convenience output format alias."},{"name":"json","in":"query","required":false,"schema":{"type":"integer","enum":[0,1],"default":0},"description":"If 1, forces JSON output regardless of Accept header."}],"responses":{"200":{"description":"RFC3339 timestamp in requested zone (includes offset)","headers":{"Cache-Control":{"schema":{"type":"string"},"example":"no-store"}},"content":{"text/plain":{"schema":{"type":"string"},"examples":{"berlin":{"value":"2026-02-25T20:17:03.482+01:00"}}},"application/json":{"schema":{"type":"object","required":["now","tz","offset","precision"],"properties":{"now":{"type":"string","description":"Timestamp string in selected representation (RFC3339)"},"tz":{"type":"string","description":"Rendering time zone (UTC or requested IANA)"},"offset":{"type":"string","description":"Numeric offset at that instant (e.g. Z, +01:00)"},"precision":{"type":"integer"},"unix":{"type":"integer","description":"Unix seconds"},"unixms":{"type":"integer","description":"Unix milliseconds"}}}}}},"400":{"description":"Bad request (invalid input, ambiguity, or unsupported combination)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}},"404":{"description":"Not found (unknown time zone or resource)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}}}}},"/validate":{"get":{"operationId":"validateTimestamp","tags":["Validation"],"summary":"Validate a timestamp string","description":"Validates the given value against a specified profile. In strict mode, rejects non-canonical/grammar-violating inputs. In lenient mode, may accept parseable inputs with warnings and provide canonical output when possible.\n","parameters":[{"name":"value","in":"query","required":true,"schema":{"type":"string"},"description":"Input timestamp string to validate."},{"name":"profile","in":"query","required":false,"schema":{"type":"string","enum":["rfc3339","iso8601","iso8601:strict","iso8601:extended","iso8601:basic"],"default":"rfc3339"},"description":"Validation profile."},{"name":"mode","in":"query","required":false,"schema":{"type":"string","enum":["strict","lenient"],"default":"strict"},"description":"Strict rejects non-compliant inputs; lenient may accept with warnings."},{"name":"json","in":"query","required":false,"schema":{"type":"integer","enum":[0,1],"default":0},"description":"If 1, forces JSON output regardless of Accept header."}],"responses":{"200":{"description":"Validation result","content":{"application/json":{"schema":{"type":"object","required":["valid","profile","mode","errors","warnings"],"properties":{"valid":{"type":"boolean"},"profile":{"type":"string"},"mode":{"type":"string"},"canonical":{"type":"string","description":"Canonical RFC3339 UTC if derivable.","nullable":true},"parsed":{"type":"object","properties":{"year":{"type":"integer"},"month":{"type":"integer"},"day":{"type":"integer"},"hour":{"type":"integer"},"minute":{"type":"integer"},"second":{"type":"integer"},"fraction":{"type":"string","description":"Fractional seconds as digits (no dot), up to 9."},"offset":{"type":"string","description":"Z or ±HH:MM"}}},"errors":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}},"warnings":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}},"text/plain":{"schema":{"type":"string","description":"If Accept=text/plain (or ?json=0), returns either \"VALID\" or \"INVALID\" plus optional single-line reason.\n"}}}},"400":{"description":"Bad request (invalid input, ambiguity, or unsupported combination)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}}}},"post":{"operationId":"validateTimestampBatch","tags":["Validation"],"summary":"Batch validate timestamp strings","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["items"],"properties":{"profile":{"type":"string","nullable":true},"mode":{"type":"string","nullable":true},"items":{"type":"array","minItems":1,"items":{"type":"object","required":["value"],"properties":{"value":{"type":"string"},"profile":{"type":"string","nullable":true},"mode":{"type":"string","nullable":true}}}}}}}}},"responses":{"200":{"description":"Batch validation result","content":{"application/json":{"schema":{"type":"object","required":["results"],"properties":{"results":{"type":"array","items":{"type":"object","required":["valid","profile","mode","errors","warnings"],"properties":{"valid":{"type":"boolean"},"profile":{"type":"string"},"mode":{"type":"string"},"canonical":{"type":"string","description":"Canonical RFC3339 UTC if derivable.","nullable":true},"parsed":{"type":"object","properties":{"year":{"type":"integer"},"month":{"type":"integer"},"day":{"type":"integer"},"hour":{"type":"integer"},"minute":{"type":"integer"},"second":{"type":"integer"},"fraction":{"type":"string","description":"Fractional seconds as digits (no dot), up to 9."},"offset":{"type":"string","description":"Z or ±HH:MM"}}},"errors":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}},"warnings":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}}}}},"400":{"description":"Bad request (invalid input, ambiguity, or unsupported combination)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}}}}},"/canonical":{"get":{"operationId":"canonicalizeTimestamp","tags":["Conversion","Validation"],"summary":"Canonicalize a timestamp representation","description":"Parses the given value under the selected profile and returns canonical RFC3339 UTC by default. If out is set, returns canonical output for that target format.\n","parameters":[{"name":"value","in":"query","required":true,"schema":{"type":"string"}},{"name":"profile","in":"query","required":false,"schema":{"type":"string","enum":["rfc3339","iso8601","iso8601:strict","iso8601:extended","iso8601:basic"],"default":"rfc3339"},"description":"Validation profile."},{"name":"out","in":"query","required":false,"schema":{"type":"string","enum":["rfc3339","iso8601","unix","unixms","ntp","httpdate","emaildate","gps","tai","jd","mjd","excel1900","excel1904","weekdate","ordinal","doy"],"default":"rfc3339"},"description":"Output encoding."},{"name":"precision","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":9,"default":3},"description":"Fractional second digits to emit (0..9)."},{"name":"tz","in":"query","required":false,"schema":{"type":"string"},"description":"IANA time zone for rendering outputs that are zone-dependent."},{"name":"json","in":"query","required":false,"schema":{"type":"integer","enum":[0,1],"default":0},"description":"If 1, forces JSON output regardless of Accept header."}],"responses":{"200":{"description":"Canonical output","content":{"text/plain":{"schema":{"type":"string"},"examples":{"canon":{"value":"2026-02-25T19:17:03Z"}}},"application/json":{"schema":{"type":"object","required":["in","out","value_in","value_out"],"properties":{"in":{"type":"string"},"out":{"type":"string"},"value_in":{"type":"string"},"value_out":{"type":"string"},"tz":{"type":"string","nullable":true},"precision":{"type":"integer"},"instant":{"type":"object","description":"Canonical internal instant representation.","properties":{"rfc3339z":{"type":"string"},"unix":{"type":"integer"},"unixms":{"type":"integer"}}},"notes":{"type":"array","items":{"type":"string"}},"candidates":{"type":"array","description":"Present when in=auto is ambiguous.","items":{"type":"string"}}}}}}},"400":{"description":"Bad request (invalid input, ambiguity, or unsupported combination)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}},"404":{"description":"Not found (unknown time zone or resource)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}}}}},"/convert":{"get":{"operationId":"convertTimestamp","tags":["Conversion"],"summary":"Convert between time encodings","description":"Converts an input value from an input encoding to an output encoding. If in=auto, ambiguity results in 400 with candidates. For timezone-dependent output formats, supply tz=IANA. For standards requiring leap-second tables (TAI/GPS), supply leapdata=latest or a known version.\n","parameters":[{"name":"value","in":"query","required":true,"schema":{"type":"string"}},{"name":"in","in":"query","required":false,"schema":{"type":"string","enum":["auto","rfc3339","iso8601","unix","unixms","ntp","httpdate","emaildate","gps","tai","jd","mjd","excel1900","excel1904","weekdate","ordinal","doy"],"default":"auto"},"description":"Input encoding."},{"name":"out","in":"query","required":false,"schema":{"type":"string","enum":["rfc3339","iso8601","unix","unixms","ntp","httpdate","emaildate","gps","tai","jd","mjd","excel1900","excel1904","weekdate","ordinal","doy"],"default":"rfc3339"},"description":"Output encoding."},{"name":"precision","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":9,"default":3},"description":"Fractional second digits to emit (0..9)."},{"name":"tz","in":"query","required":false,"schema":{"type":"string"},"description":"IANA time zone for rendering outputs that are zone-dependent."},{"name":"leapdata","in":"query","required":false,"schema":{"type":"string","default":"latest"},"description":"Leap-second dataset version identifier, or \"latest\"."},{"name":"json","in":"query","required":false,"schema":{"type":"integer","enum":[0,1],"default":0},"description":"If 1, forces JSON output regardless of Accept header."}],"responses":{"200":{"description":"Converted output","content":{"text/plain":{"schema":{"type":"string"},"examples":{"rfc3339":{"value":"2023-11-14T22:13:20Z"}}},"application/json":{"schema":{"type":"object","required":["in","out","value_in","value_out"],"properties":{"in":{"type":"string"},"out":{"type":"string"},"value_in":{"type":"string"},"value_out":{"type":"string"},"tz":{"type":"string","nullable":true},"precision":{"type":"integer"},"instant":{"type":"object","description":"Canonical internal instant representation.","properties":{"rfc3339z":{"type":"string"},"unix":{"type":"integer"},"unixms":{"type":"integer"}}},"notes":{"type":"array","items":{"type":"string"}},"candidates":{"type":"array","description":"Present when in=auto is ambiguous.","items":{"type":"string"}}}}}}},"400":{"description":"Bad request (invalid input, ambiguity, or unsupported combination)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}},"404":{"description":"Not found (unknown time zone or resource)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}}}}},"/round":{"get":{"operationId":"roundTimestamp","tags":["Conversion"],"summary":"Round a timestamp to a unit","parameters":[{"name":"value","in":"query","required":true,"schema":{"type":"string"}},{"name":"in","in":"query","required":false,"schema":{"type":"string","enum":["auto","rfc3339","iso8601","unix","unixms","ntp","httpdate","emaildate","gps","tai","jd","mjd","excel1900","excel1904","weekdate","ordinal","doy"],"default":"auto"},"description":"Input encoding."},{"name":"unit","in":"query","required":true,"schema":{"type":"string","enum":["ns","us","ms","s","min","hour","day"]}},{"name":"mode","in":"query","required":false,"schema":{"type":"string","enum":["floor","ceil","nearest"],"default":"nearest"}},{"name":"out","in":"query","required":false,"schema":{"type":"string","enum":["rfc3339","iso8601","unix","unixms","ntp","httpdate","emaildate","gps","tai","jd","mjd","excel1900","excel1904","weekdate","ordinal","doy"],"default":"rfc3339"},"description":"Output encoding."},{"name":"precision","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":9,"default":3},"description":"Fractional second digits to emit (0..9)."},{"name":"tz","in":"query","required":false,"schema":{"type":"string"},"description":"IANA time zone for rendering outputs that are zone-dependent."},{"name":"json","in":"query","required":false,"schema":{"type":"integer","enum":[0,1],"default":0},"description":"If 1, forces JSON output regardless of Accept header."}],"responses":{"200":{"description":"Rounded output","content":{"text/plain":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object","required":["in","out","value_in","value_out"],"properties":{"in":{"type":"string"},"out":{"type":"string"},"value_in":{"type":"string"},"value_out":{"type":"string"},"tz":{"type":"string","nullable":true},"precision":{"type":"integer"},"instant":{"type":"object","description":"Canonical internal instant representation.","properties":{"rfc3339z":{"type":"string"},"unix":{"type":"integer"},"unixms":{"type":"integer"}}},"notes":{"type":"array","items":{"type":"string"}},"candidates":{"type":"array","description":"Present when in=auto is ambiguous.","items":{"type":"string"}}}}}}},"400":{"description":"Bad request (invalid input, ambiguity, or unsupported combination)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}}}}},"/parse":{"get":{"operationId":"parseDeveloperTimeInput","tags":["Developer UX"],"summary":"Parse a timestamp or human time expression","description":"Parses either a direct timestamp or a human-style expression such as `tomorrow 17:00`. If `tz` is provided, it is used as the local interpretation zone for human expressions and for rendering the `local` field in the response.\n","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"},"description":"Timestamp or human time expression to parse."},{"name":"tz","in":"query","required":false,"schema":{"type":"string","default":"UTC"},"description":"IANA time zone used to interpret human-style inputs."},{"name":"json","in":"query","required":false,"schema":{"type":"integer","enum":[0,1],"default":0},"description":"If 1, forces JSON output regardless of Accept header."}],"responses":{"200":{"description":"Parsed instant and localized rendering","content":{"text/plain":{"schema":{"type":"string"},"examples":{"local":{"value":"2026-04-06T17:00:00+02:00"}}},"application/json":{"schema":{"type":"object","required":["input","timezone","instant","local","confidence","notes"],"properties":{"input":{"type":"string"},"timezone":{"type":"string"},"instant":{"type":"string"},"local":{"type":"string"},"confidence":{"type":"number"},"notes":{"type":"array","items":{"type":"string"}}}}}}},"400":{"description":"Bad request (invalid input, ambiguity, or unsupported combination)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}},"404":{"description":"Not found (unknown time zone or resource)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}}}}},"/format":{"get":{"operationId":"formatTimestampHelper","tags":["Developer UX","Conversion"],"summary":"Format a timestamp for common developer targets","description":"Formats a parseable timestamp into one of the dedicated helper styles: ISO, HTTP-date, cron, or a filesystem-safe UTC stamp. Plain text returns the selected output; JSON returns the selected output plus all variants.\n","parameters":[{"name":"value","in":"query","required":true,"schema":{"type":"string"},"description":"Parseable timestamp value."},{"name":"style","in":"query","required":false,"schema":{"type":"string","enum":["iso","http","cron","fileSafe"],"default":"iso"}},{"name":"json","in":"query","required":false,"schema":{"type":"integer","enum":[0,1],"default":0},"description":"If 1, forces JSON output regardless of Accept header."}],"responses":{"200":{"description":"Formatted output","content":{"text/plain":{"schema":{"type":"string"},"examples":{"http":{"value":"Sat, 04 Apr 2026 12:00:00 GMT"}}},"application/json":{"schema":{"type":"object","required":["input","style","output","outputs"],"properties":{"input":{"type":"string"},"style":{"type":"string","enum":["iso","http","cron","fileSafe"]},"output":{"type":"string"},"outputs":{"type":"object","required":["iso","http","cron","fileSafe"],"properties":{"iso":{"type":"string"},"http":{"type":"string"},"cron":{"type":"string"},"fileSafe":{"type":"string"}}}}}}}},"400":{"description":"Bad request (invalid input, ambiguity, or unsupported combination)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}}}}},"/diff":{"get":{"operationId":"diffTimestamps","tags":["Developer UX","Conversion"],"summary":"Compute the difference between two timestamps","parameters":[{"name":"from","in":"query","required":true,"schema":{"type":"string"},"description":"Start timestamp."},{"name":"to","in":"query","required":true,"schema":{"type":"string"},"description":"End timestamp."},{"name":"unit","in":"query","required":false,"schema":{"type":"string","enum":["ms","s","min","h","d","iso"],"default":"ms"},"description":"Output unit for the computed delta."},{"name":"json","in":"query","required":false,"schema":{"type":"integer","enum":[0,1],"default":0},"description":"If 1, forces JSON output regardless of Accept header."}],"responses":{"200":{"description":"Timestamp difference","content":{"text/plain":{"schema":{"type":"string"},"examples":{"minutes":{"value":"90"}}},"application/json":{"schema":{"type":"object","required":["from","to","unit","value","isoDuration"],"properties":{"from":{"type":"string"},"to":{"type":"string"},"unit":{"type":"string","enum":["ms","s","min","h","d","iso"]},"value":{"oneOf":[{"type":"number"},{"type":"string"}]},"isoDuration":{"type":"string","description":"Signed ISO-8601-style duration derived from the millisecond delta."}}}}}},"400":{"description":"Bad request (invalid input, ambiguity, or unsupported combination)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}}}}},"/add":{"get":{"operationId":"addIsoDuration","tags":["Developer UX","Conversion","Timezones"],"summary":"Add an ISO-8601 duration to a timestamp","description":"Adds an ISO-8601 duration to a parseable timestamp. `mode=absolute` adds elapsed time to the underlying instant and rejects calendar units (`years` / `months`). `mode=wall` applies calendar/wall-clock arithmetic in the supplied IANA time zone and can surface ambiguous or nonexistent local results near DST changes.\n","parameters":[{"name":"ts","in":"query","required":true,"schema":{"type":"string"},"description":"Base timestamp."},{"name":"duration","in":"query","required":true,"schema":{"type":"string"},"description":"ISO-8601 duration such as `PT1H`, `P3D`, or `P1DT30M`."},{"name":"mode","in":"query","required":false,"schema":{"type":"string","enum":["absolute","wall"],"default":"absolute"}},{"name":"tz","in":"query","required":false,"schema":{"type":"string","default":"UTC"},"description":"IANA time zone used for local rendering in both modes. When omitted, the endpoint falls back to `UTC`; for `mode=wall`, DST behavior is evaluated in that zone.\n"},{"name":"json","in":"query","required":false,"schema":{"type":"integer","enum":[0,1],"default":0},"description":"If 1, forces JSON output regardless of Accept header."}],"responses":{"200":{"description":"Duration-add result","content":{"text/plain":{"schema":{"type":"string"},"examples":{"local":{"value":"2026-03-29T04:30:00+02:00"}}},"application/json":{"schema":{"type":"object","required":["mode","input","duration","result","local"],"properties":{"mode":{"type":"string","enum":["absolute","wall"]},"input":{"type":"string"},"duration":{"type":"string"},"tz":{"type":"string","nullable":true},"result":{"type":"string","description":"Resulting instant in RFC3339 UTC."},"local":{"type":"string","description":"Result rendered in the requested time zone."},"ambiguity":{"type":"string","description":"Present when a wall-clock result maps to multiple valid instants.","nullable":true},"ambiguity_resolution":{"type":"string","description":"Strategy used when an ambiguous wall-clock result yields multiple candidates, currently `closest_to_input_instant`.","nullable":true},"chosen_candidate_index":{"type":"integer","description":"Index into `candidates` for the candidate chosen as the response result.","nullable":true},"candidates":{"type":"array","items":{"type":"string"}}}}}}},"400":{"description":"Bad request (invalid input, ambiguity, or unsupported combination)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}},"404":{"description":"Not found (unknown time zone or resource)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}}}}},"/tz":{"get":{"operationId":"listTimezones","tags":["Timezones"],"summary":"Time zone search / listing","description":"Returns a list of IANA time zone IDs matching q (substring match). If q is omitted, returns a curated list (or an implementation-defined subset).\n","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":50}}],"responses":{"200":{"description":"Zone matches","content":{"application/json":{"schema":{"type":"object","required":["zones"],"properties":{"zones":{"type":"array","items":{"type":"object","required":["id"],"properties":{"id":{"type":"string"},"exampleCity":{"type":"string","nullable":true}}}}}}}}},"400":{"description":"Bad request (invalid input, ambiguity, or unsupported combination)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}}}}},"/tz/convert":{"get":{"operationId":"convertHumanTimeBetweenZones","tags":["Timezones","Conversion"],"summary":"Convert a human-style local time into another time-zone token","description":"Parses human-oriented local times such as `5pm DST`, `tomorrow 3am CET`, or `2026-05-22 17:35 CEST`, resolves them to an instant, and renders that instant in the target zone token. Supported source/target zone tokens include IANA zones, `UTC`, numeric offsets, and a curated abbreviation set (for example CET/CEST/EST/EDT/PST/PDT). `DST` and `STD` require `from=<IANA zone>` so the worker can resolve the regional rules. Plain text returns the target local RFC3339 value; JSON adds parsed source/target details.\n","parameters":[{"name":"value","in":"query","required":true,"schema":{"type":"string"},"description":"Human-style local time. Examples: `5pm DST`, `tomorrow 3am CET`, `2026-05-22 17:35 CEST`.\n"},{"name":"to","in":"query","required":true,"schema":{"type":"string"},"description":"Target zone token. Accepts IANA zones, `UTC`, curated abbreviations, or numeric offsets."},{"name":"from","in":"query","required":false,"schema":{"type":"string"},"description":"Source IANA time zone used when the value omits a zone or uses DST/STD or an abbreviation hint that should be validated against a real region.\n"},{"name":"base","in":"query","required":false,"schema":{"type":"string"},"description":"RFC3339 base instant used to resolve relative values such as `tomorrow` and time-only inputs.\n"},{"name":"precision","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":9,"default":0},"description":"Fractional second digits to emit in rendered source/target values."},{"name":"json","in":"query","required":false,"schema":{"type":"integer","enum":[0,1],"default":0},"description":"If 1, forces JSON output regardless of Accept header."}],"responses":{"200":{"description":"Converted target local time plus optional source/target metadata","content":{"text/plain":{"schema":{"type":"string"},"examples":{"target":{"value":"2026-05-22T11:35:00-04:00"}}},"application/json":{"schema":{"type":"object","required":["value_in","value_out","from","to","source","target","instant","notes"],"properties":{"value_in":{"type":"string"},"value_out":{"type":"string"},"from":{"type":"object","required":["raw","kind","tz","offset","abbreviation","dst"],"properties":{"raw":{"type":"string","nullable":true},"kind":{"type":"string","enum":["iana","offset","abbreviation"]},"tz":{"type":"string","nullable":true},"offset":{"type":"string"},"abbreviation":{"type":"string","nullable":true},"dst":{"type":"boolean","nullable":true}}},"to":{"type":"object","required":["raw","kind","tz","offset","abbreviation","dst"],"properties":{"raw":{"type":"string"},"kind":{"type":"string","enum":["iana","offset","abbreviation"]},"tz":{"type":"string","nullable":true},"offset":{"type":"string"},"abbreviation":{"type":"string","nullable":true},"dst":{"type":"boolean","nullable":true}}},"source":{"type":"object","required":["local","date","time","date_source","base"],"properties":{"local":{"type":"string"},"date":{"type":"string"},"time":{"type":"string"},"date_source":{"type":"string","enum":["explicit","relative","base"]},"base":{"type":"string","description":"RFC3339 instant used for resolving relative or time-only inputs."}}},"target":{"type":"object","required":["local","date","time"],"properties":{"local":{"type":"string"},"date":{"type":"string"},"time":{"type":"string"}}},"instant":{"type":"object","required":["rfc3339z","unix","unixms"],"properties":{"rfc3339z":{"type":"string"},"unix":{"type":"integer"},"unixms":{"type":"integer"}}},"notes":{"type":"array","items":{"type":"string"}}}}}}},"400":{"description":"Bad request (invalid input, ambiguity, or unsupported combination)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}},"404":{"description":"Not found (unknown time zone or resource)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}}}}},"/tz/{zone}/offset":{"get":{"operationId":"getTimezoneOffset","tags":["Timezones"],"summary":"Offset/DST information for a zone at a given instant","parameters":[{"name":"zone","in":"path","required":true,"schema":{"type":"string"},"description":"IANA time zone ID (URL-encoded), e.g. Europe%2FBerlin"},{"name":"at","in":"query","required":false,"schema":{"type":"string"},"description":"RFC3339 instant to evaluate; default is now."},{"name":"json","in":"query","required":false,"schema":{"type":"integer","enum":[0,1],"default":0},"description":"If 1, forces JSON output regardless of Accept header."}],"responses":{"200":{"description":"Offset and DST status","content":{"application/json":{"schema":{"type":"object","required":["zone","at","offset","dst"],"properties":{"zone":{"type":"string"},"at":{"type":"string"},"offset":{"type":"string"},"dst":{"type":"boolean"},"abbreviation":{"type":"string","description":"Best-effort (may be null; abbreviations are not stable/portable).","nullable":true}}}},"text/plain":{"schema":{"type":"string","description":"Single-line summary: <offset> <dstFlag>"}}}},"400":{"description":"Bad request (invalid input, ambiguity, or unsupported combination)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}},"404":{"description":"Not found (unknown time zone or resource)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}}}}},"/tz/{zone}/transitions":{"get":{"operationId":"listTimezoneTransitions","tags":["Timezones"],"summary":"DST/offset transitions for a zone in a time range","description":"Returns boundaries where the numeric offset changes within the requested range. Implementation can compute transitions by scanning offsets and refining boundary instants.\n","parameters":[{"name":"zone","in":"path","required":true,"schema":{"type":"string"}},{"name":"start","in":"query","required":true,"schema":{"type":"string"},"description":"RFC3339 instant (inclusive)"},{"name":"end","in":"query","required":true,"schema":{"type":"string"},"description":"RFC3339 instant (exclusive)"},{"name":"granularity","in":"query","required":false,"schema":{"type":"string","enum":["day","hour","minute"],"default":"hour"},"description":"Scan step used to detect transitions before boundary refinement."},{"name":"refine","in":"query","required":false,"schema":{"type":"string","enum":["s","ms"],"default":"s"},"description":"Refinement resolution for transition instant."}],"responses":{"200":{"description":"Transition list","content":{"application/json":{"schema":{"type":"object","required":["zone","start","end","transitions"],"properties":{"zone":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"},"transitions":{"type":"array","items":{"type":"object","required":["at","offsetBefore","offsetAfter"],"properties":{"at":{"type":"string","description":"RFC3339 instant where the new offset takes effect (best-effort resolution)"},"offsetBefore":{"type":"string"},"offsetAfter":{"type":"string"}}}}}}}}},"400":{"description":"Bad request (invalid input, ambiguity, or unsupported combination)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}},"404":{"description":"Not found (unknown time zone or resource)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}}}}},"/excel/serial-to-iso":{"get":{"operationId":"excelSerialToIso","tags":["Developer UX","Conversion"],"summary":"Convert an Excel serial value to RFC3339 UTC","parameters":[{"name":"value","in":"query","required":true,"schema":{"type":"string"},"description":"Excel serial value."},{"name":"system","in":"query","required":false,"schema":{"type":"string","enum":["1900","1904"],"default":"1900"},"description":"Excel date system to use."},{"name":"json","in":"query","required":false,"schema":{"type":"integer","enum":[0,1],"default":0},"description":"If 1, forces JSON output regardless of Accept header."}],"responses":{"200":{"description":"Excel serial converted to RFC3339 UTC","content":{"text/plain":{"schema":{"type":"string"},"examples":{"iso":{"value":"2023-11-16T12:00:00.000Z"}}},"application/json":{"schema":{"type":"object","required":["value","system","iso"],"properties":{"value":{"type":"string"},"system":{"type":"string","enum":["excel1900","excel1904"]},"iso":{"type":"string"}}}}}},"400":{"description":"Bad request (invalid input, ambiguity, or unsupported combination)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}}}}},"/excel/iso-to-serial":{"get":{"operationId":"isoToExcelSerial","tags":["Developer UX","Conversion"],"summary":"Convert an RFC3339 timestamp to an Excel serial value","parameters":[{"name":"ts","in":"query","required":true,"schema":{"type":"string"},"description":"RFC3339 timestamp."},{"name":"system","in":"query","required":false,"schema":{"type":"string","enum":["1900","1904"],"default":"1900"},"description":"Excel date system to use."},{"name":"json","in":"query","required":false,"schema":{"type":"integer","enum":[0,1],"default":0},"description":"If 1, forces JSON output regardless of Accept header."}],"responses":{"200":{"description":"RFC3339 timestamp converted to an Excel serial value","content":{"text/plain":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object","required":["ts","system","serial"],"properties":{"ts":{"type":"string"},"system":{"type":"string","enum":["excel1900","excel1904"]},"serial":{"type":"string"}}}}}},"400":{"description":"Bad request (invalid input, ambiguity, or unsupported combination)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}}}}},"/iso-week":{"get":{"operationId":"getIsoWeekInfo","tags":["Developer UX"],"summary":"Return ISO week metadata for a timestamp","parameters":[{"name":"ts","in":"query","required":true,"schema":{"type":"string"},"description":"Parseable timestamp value."},{"name":"json","in":"query","required":false,"schema":{"type":"integer","enum":[0,1],"default":0},"description":"If 1, forces JSON output regardless of Accept header."}],"responses":{"200":{"description":"ISO week breakdown","content":{"text/plain":{"schema":{"type":"string"},"examples":{"week":{"value":"2026-W14"}}},"application/json":{"schema":{"type":"object","required":["yearWeek","year","week","weekday"],"properties":{"yearWeek":{"type":"string"},"year":{"type":"integer"},"week":{"type":"integer"},"weekday":{"type":"integer","minimum":1,"maximum":7}}}}}},"400":{"description":"Bad request (invalid input, ambiguity, or unsupported combination)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}}}}},"/iso-week/start-end":{"get":{"operationId":"getIsoWeekRange","tags":["Developer UX"],"summary":"Return the UTC start and end boundaries for an ISO week","parameters":[{"name":"year","in":"query","required":true,"schema":{"type":"integer"}},{"name":"week","in":"query","required":true,"schema":{"type":"integer","minimum":1,"maximum":53}}],"responses":{"200":{"description":"ISO week UTC range","content":{"application/json":{"schema":{"type":"object","required":["yearWeek","start","end"],"properties":{"yearWeek":{"type":"string"},"start":{"type":"string"},"end":{"type":"string","description":"Inclusive end of the ISO week range, including millisecond precision."}}}}}},"400":{"description":"Bad request (invalid input, ambiguity, or unsupported combination)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}}}}},"/http-date":{"get":{"operationId":"renderHttpDate","tags":["Developer UX","Conversion"],"summary":"Render a timestamp as an HTTP-date","parameters":[{"name":"ts","in":"query","required":true,"schema":{"type":"string"},"description":"Parseable timestamp value."},{"name":"json","in":"query","required":false,"schema":{"type":"integer","enum":[0,1],"default":0},"description":"If 1, forces JSON output regardless of Accept header."}],"responses":{"200":{"description":"HTTP-date rendering","content":{"text/plain":{"schema":{"type":"string"},"examples":{"http":{"value":"Sat, 04 Apr 2026 12:00:00 GMT"}}},"application/json":{"schema":{"type":"object","required":["ts","httpDate"],"properties":{"ts":{"type":"string"},"httpDate":{"type":"string"}}}}}},"400":{"description":"Bad request (invalid input, ambiguity, or unsupported combination)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}}}}},"/lint/iso":{"get":{"operationId":"lintIsoTimestamp","tags":["Developer UX","Validation"],"summary":"Lint and normalize an ISO-like timestamp","description":"Performs a lenient parse-oriented check for an ISO-like timestamp. If it can be normalized, the response includes the normalized RFC3339 UTC value; otherwise it returns reasons gathered from validation.\n","parameters":[{"name":"value","in":"query","required":true,"schema":{"type":"string"}},{"name":"json","in":"query","required":false,"schema":{"type":"integer","enum":[0,1],"default":0},"description":"If 1, forces JSON output regardless of Accept header."}],"responses":{"200":{"description":"Lint result","content":{"text/plain":{"schema":{"type":"string","description":"Normalized RFC3339 UTC when valid, otherwise `INVALID: <reason>`."}},"application/json":{"schema":{"type":"object","required":["valid","normalized","reasons"],"properties":{"valid":{"type":"boolean"},"normalized":{"type":"string","nullable":true},"reasons":{"type":"array","items":{"type":"string"}}}}}}},"400":{"description":"Bad request (invalid input, ambiguity, or unsupported combination)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}}}}},"/validate-local":{"get":{"operationId":"validateLocalTime","tags":["Developer UX","Timezones"],"summary":"Validate a local wall-clock time in an IANA zone","description":"Checks whether a local timestamp is valid, ambiguous, or nonexistent in the requested IANA time zone and returns matching instant candidates when they exist.\n","parameters":[{"name":"local","in":"query","required":true,"schema":{"type":"string"},"description":"Local timestamp in `YYYY-MM-DDTHH:mm[:ss]` format."},{"name":"tz","in":"query","required":true,"schema":{"type":"string"},"description":"IANA time zone ID."}],"responses":{"200":{"description":"Local time validation result","content":{"application/json":{"schema":{"type":"object","required":["local","tz","status","candidates"],"properties":{"local":{"type":"string"},"tz":{"type":"string"},"status":{"type":"string","enum":["invalid","ambiguous","ok"]},"candidates":{"type":"array","items":{"type":"object","required":["instant","local"],"properties":{"instant":{"type":"string"},"local":{"type":"string"}}}}}}}}},"400":{"description":"Bad request (invalid input, ambiguity, or unsupported combination)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}},"404":{"description":"Not found (unknown time zone or resource)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}}}}},"/tz/resolve":{"get":{"operationId":"resolveTimezoneAlias","tags":["Developer UX","Timezones"],"summary":"Resolve a timezone alias to an IANA zone","description":"Resolves a supported timezone alias, such as a curated set of Windows timezone labels, to an IANA zone ID. Passing an IANA zone returns it unchanged.\n","parameters":[{"name":"name","in":"query","required":true,"schema":{"type":"string"}},{"name":"json","in":"query","required":false,"schema":{"type":"integer","enum":[0,1],"default":0},"description":"If 1, forces JSON output regardless of Accept header."}],"responses":{"200":{"description":"Resolved timezone alias","content":{"text/plain":{"schema":{"type":"string"},"examples":{"resolved":{"value":"Europe/Berlin"}}},"application/json":{"schema":{"type":"object","required":["input","resolved","source"],"properties":{"input":{"type":"string"},"resolved":{"type":"string"},"source":{"type":"string","enum":["windows-alias","iana"]}}}}}},"400":{"description":"Bad request (invalid input, ambiguity, or unsupported combination)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}},"404":{"description":"Not found (unknown time zone or resource)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}}}}},"/leapseconds":{"get":{"operationId":"getLeapSeconds","tags":["Datasets"],"summary":"Leap second dataset + current TAI-UTC offset","description":"Provides leap second table used for UTC<->TAI and GPS conversions. Versioning allows reproducible results.\n","parameters":[{"name":"version","in":"query","required":false,"schema":{"type":"string","default":"latest"}}],"responses":{"200":{"description":"Leap second dataset","headers":{"Cache-Control":{"schema":{"type":"string"},"example":"public, max-age=86400"}},"content":{"application/json":{"schema":{"type":"object","required":["version","taiMinusUtc","entries","source"],"properties":{"version":{"type":"string"},"taiMinusUtc":{"type":"integer","description":"Current TAI-UTC seconds offset per dataset."},"source":{"type":"string","description":"Dataset provenance (e.g., IERS bulletin identifier and publication date)."},"entries":{"type":"array","items":{"type":"object","required":["effective","taiMinusUtc"],"properties":{"effective":{"type":"string","description":"RFC3339 date-time at which the offset becomes effective (UTC)."},"taiMinusUtc":{"type":"integer"}}}}}}}}},"404":{"description":"Not found (unknown time zone or resource)","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"at":{"type":"integer","description":"Character index (if applicable)"}}}}}}}}}}}}}}