{"openapi":"3.1.0","info":{"title":"ClockZone Query API","version":"1.0.0","description":"Anonymous rule-based time and calendar queries. No official working-calendar guarantee."},"servers":[{"url":"https://clockzone.net"}],"paths":{"/api/time/now":{"get":{"summary":"Read a timezone clock snapshot. at fixes the instant for reproducibility.","responses":{"200":{"description":"Query result with normalized input, coverage and reproducible pageUrl.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"city":{"type":"string"},"timeZone":{"type":"string"},"localDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"localDateTime":{"type":"string"},"currentDate":{"type":"string"},"currentTime":{"type":"string"},"currentWeekday":{"type":"string"},"offsetMinutes":{"type":"number"},"updatedAt":{"type":"string"},"nextTransition":{"anyOf":[{"type":"object","properties":{"date":{"type":"string"},"fromOffset":{"type":"string"},"toOffset":{"type":"string"},"fromOffsetMinutes":{"type":"number"},"toOffsetMinutes":{"type":"number"}},"required":["date","fromOffset","toOffset","fromOffsetMinutes","toOffsetMinutes"],"additionalProperties":false},{"type":"null"}]},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"pageUrl":{"type":"string"},"schemaVersion":{"type":"string","const":"1"}},"required":["city","timeZone","localDate","localDateTime","currentDate","currentTime","currentWeekday","offsetMinutes","updatedAt","nextTransition","query","pageUrl","schemaVersion"],"additionalProperties":{}}}}},"400":{"description":"Invalid parameters"},"422":{"description":"Insufficient data coverage or range limit"},"429":{"description":"Rate limit; honor Retry-After"},"500":{"description":"Internal failure"}},"operationId":"current_time","parameters":[{"name":"tz","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":100}},{"name":"locale","in":"query","required":false,"schema":{"default":"en-US","type":"string","maxLength":35}},{"name":"at","in":"query","required":false,"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-]\\d{2}:\\d{2})))$"}}]},"post":{"summary":"Read a timezone clock snapshot. at fixes the instant for reproducibility.","responses":{"200":{"description":"Query result with normalized input, coverage and reproducible pageUrl.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"city":{"type":"string"},"timeZone":{"type":"string"},"localDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"localDateTime":{"type":"string"},"currentDate":{"type":"string"},"currentTime":{"type":"string"},"currentWeekday":{"type":"string"},"offsetMinutes":{"type":"number"},"updatedAt":{"type":"string"},"nextTransition":{"anyOf":[{"type":"object","properties":{"date":{"type":"string"},"fromOffset":{"type":"string"},"toOffset":{"type":"string"},"fromOffsetMinutes":{"type":"number"},"toOffsetMinutes":{"type":"number"}},"required":["date","fromOffset","toOffset","fromOffsetMinutes","toOffsetMinutes"],"additionalProperties":false},{"type":"null"}]},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"pageUrl":{"type":"string"},"schemaVersion":{"type":"string","const":"1"}},"required":["city","timeZone","localDate","localDateTime","currentDate","currentTime","currentWeekday","offsetMinutes","updatedAt","nextTransition","query","pageUrl","schemaVersion"],"additionalProperties":{}}}}},"400":{"description":"Invalid parameters"},"422":{"description":"Insufficient data coverage or range limit"},"429":{"description":"Rate limit; honor Retry-After"},"500":{"description":"Internal failure"}},"operationId":"current_time_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"tz":{"type":"string","minLength":1,"maxLength":100},"locale":{"default":"en-US","type":"string","maxLength":35},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-]\\d{2}:\\d{2})))$"}},"required":["tz"],"additionalProperties":false},"example":{"tz":"Asia/Shanghai"}}}}}},"/api/time/dst":{"get":{"summary":"Read timezone offset changes. Offset transitions do not always mean daylight saving.","responses":{"200":{"description":"Query result with normalized input, coverage and reproducible pageUrl.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"city":{"type":"string"},"timeZone":{"type":"string"},"localDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"localDateTime":{"type":"string"},"currentDate":{"type":"string"},"currentTime":{"type":"string"},"currentWeekday":{"type":"string"},"offsetMinutes":{"type":"number"},"updatedAt":{"type":"string"},"nextTransition":{"anyOf":[{"type":"object","properties":{"date":{"type":"string"},"fromOffset":{"type":"string"},"toOffset":{"type":"string"},"fromOffsetMinutes":{"type":"number"},"toOffsetMinutes":{"type":"number"}},"required":["date","fromOffset","toOffset","fromOffsetMinutes","toOffsetMinutes"],"additionalProperties":false},{"type":"null"}]},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"pageUrl":{"type":"string"},"schemaVersion":{"type":"string","const":"1"}},"required":["city","timeZone","localDate","localDateTime","currentDate","currentTime","currentWeekday","offsetMinutes","updatedAt","nextTransition","query","pageUrl","schemaVersion"],"additionalProperties":{}}}}},"400":{"description":"Invalid parameters"},"422":{"description":"Insufficient data coverage or range limit"},"429":{"description":"Rate limit; honor Retry-After"},"500":{"description":"Internal failure"}},"operationId":"dst","parameters":[{"name":"tz","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":100}},{"name":"locale","in":"query","required":false,"schema":{"default":"en-US","type":"string","maxLength":35}},{"name":"at","in":"query","required":false,"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-]\\d{2}:\\d{2})))$"}}]},"post":{"summary":"Read timezone offset changes. Offset transitions do not always mean daylight saving.","responses":{"200":{"description":"Query result with normalized input, coverage and reproducible pageUrl.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"city":{"type":"string"},"timeZone":{"type":"string"},"localDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"localDateTime":{"type":"string"},"currentDate":{"type":"string"},"currentTime":{"type":"string"},"currentWeekday":{"type":"string"},"offsetMinutes":{"type":"number"},"updatedAt":{"type":"string"},"nextTransition":{"anyOf":[{"type":"object","properties":{"date":{"type":"string"},"fromOffset":{"type":"string"},"toOffset":{"type":"string"},"fromOffsetMinutes":{"type":"number"},"toOffsetMinutes":{"type":"number"}},"required":["date","fromOffset","toOffset","fromOffsetMinutes","toOffsetMinutes"],"additionalProperties":false},{"type":"null"}]},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"pageUrl":{"type":"string"},"schemaVersion":{"type":"string","const":"1"}},"required":["city","timeZone","localDate","localDateTime","currentDate","currentTime","currentWeekday","offsetMinutes","updatedAt","nextTransition","query","pageUrl","schemaVersion"],"additionalProperties":{}}}}},"400":{"description":"Invalid parameters"},"422":{"description":"Insufficient data coverage or range limit"},"429":{"description":"Rate limit; honor Retry-After"},"500":{"description":"Internal failure"}},"operationId":"dst_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"tz":{"type":"string","minLength":1,"maxLength":100},"locale":{"default":"en-US","type":"string","maxLength":35},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-]\\d{2}:\\d{2})))$"}},"required":["tz"],"additionalProperties":false},"example":{"tz":"America/New_York"}}}}}},"/api/holidays":{"get":{"summary":"List rule-derived holidays, including provenance and coverage limitations.","responses":{"200":{"description":"Query result with normalized input, coverage and reproducible pageUrl.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"pageUrl":{"type":"string"},"schemaVersion":{"type":"string","const":"1"},"country":{"type":"string"},"countryName":{"type":"string"},"year":{"type":"number"},"state":{"anyOf":[{"type":"string"},{"type":"null"}]},"total":{"type":"number"},"holidays":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"date":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"type":{"type":"string"},"country":{"type":"string"},"state":{"anyOf":[{"type":"string"},{"type":"null"}]},"confirmation":{"type":"string"},"sourceUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"dataUpdatedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","date","type","country","state","confirmation","sourceUrl","dataUpdatedAt"],"additionalProperties":{}}},"coverage":{"type":"object","properties":{"basis":{"type":"string"},"officialWorkCalendar":{"type":"boolean"}},"required":["basis","officialWorkCalendar"],"additionalProperties":{}}},"required":["query","pageUrl","schemaVersion","country","countryName","year","state","total","holidays","coverage"],"additionalProperties":{}}}}},"400":{"description":"Invalid parameters"},"422":{"description":"Insufficient data coverage or range limit"},"429":{"description":"Rate limit; honor Retry-After"},"500":{"description":"Internal failure"}},"operationId":"holidays","parameters":[{"name":"country","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Za-z]{2}$"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","maxLength":30}},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^-?\\d+$"}]}},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["public","bank","school","optional","observance"]}}]},"post":{"summary":"List rule-derived holidays, including provenance and coverage limitations.","responses":{"200":{"description":"Query result with normalized input, coverage and reproducible pageUrl.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"pageUrl":{"type":"string"},"schemaVersion":{"type":"string","const":"1"},"country":{"type":"string"},"countryName":{"type":"string"},"year":{"type":"number"},"state":{"anyOf":[{"type":"string"},{"type":"null"}]},"total":{"type":"number"},"holidays":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"date":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"type":{"type":"string"},"country":{"type":"string"},"state":{"anyOf":[{"type":"string"},{"type":"null"}]},"confirmation":{"type":"string"},"sourceUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"dataUpdatedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","date","type","country","state","confirmation","sourceUrl","dataUpdatedAt"],"additionalProperties":{}}},"coverage":{"type":"object","properties":{"basis":{"type":"string"},"officialWorkCalendar":{"type":"boolean"}},"required":["basis","officialWorkCalendar"],"additionalProperties":{}}},"required":["query","pageUrl","schemaVersion","country","countryName","year","state","total","holidays","coverage"],"additionalProperties":{}}}}},"400":{"description":"Invalid parameters"},"422":{"description":"Insufficient data coverage or range limit"},"429":{"description":"Rate limit; honor Retry-After"},"500":{"description":"Internal failure"}},"operationId":"holidays_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"country":{"type":"string","pattern":"^[A-Za-z]{2}$"},"state":{"type":"string","maxLength":30},"year":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^-?\\d+$"}]},"type":{"type":"string","enum":["public","bank","school","optional","observance"]}},"required":["country"],"additionalProperties":false},"example":{"country":"US","year":2026}}}}}},"/api/holidays/next":{"get":{"summary":"List upcoming holidays using an explicit local date and timezone.","responses":{"200":{"description":"Query result with normalized input, coverage and reproducible pageUrl.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"pageUrl":{"type":"string"},"schemaVersion":{"type":"string","const":"1"},"country":{"type":"string"},"countryName":{"type":"string"},"state":{"anyOf":[{"type":"string"},{"type":"null"}]},"total":{"type":"number"},"holidays":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"date":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"type":{"type":"string"},"country":{"type":"string"},"state":{"anyOf":[{"type":"string"},{"type":"null"}]},"confirmation":{"type":"string"},"sourceUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"dataUpdatedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","date","type","country","state","confirmation","sourceUrl","dataUpdatedAt"],"additionalProperties":{}}},"coverage":{"type":"object","properties":{"basis":{"type":"string"},"officialWorkCalendar":{"type":"boolean"}},"required":["basis","officialWorkCalendar"],"additionalProperties":{}},"searchThrough":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"timeZone":{"type":"string"},"from":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}},"required":["query","pageUrl","schemaVersion","country","countryName","state","total","holidays","coverage","searchThrough","timeZone","from"],"additionalProperties":{}}}}},"400":{"description":"Invalid parameters"},"422":{"description":"Insufficient data coverage or range limit"},"429":{"description":"Rate limit; honor Retry-After"},"500":{"description":"Internal failure"}},"operationId":"next_holidays","parameters":[{"name":"country","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Za-z]{2}$"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","maxLength":30}},{"name":"tz","in":"query","required":false,"schema":{"default":"UTC","type":"string","minLength":1,"maxLength":100}},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^-?\\d+$"}]}},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["public","bank","school","optional","observance"]}}]},"post":{"summary":"List upcoming holidays using an explicit local date and timezone.","responses":{"200":{"description":"Query result with normalized input, coverage and reproducible pageUrl.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"pageUrl":{"type":"string"},"schemaVersion":{"type":"string","const":"1"},"country":{"type":"string"},"countryName":{"type":"string"},"state":{"anyOf":[{"type":"string"},{"type":"null"}]},"total":{"type":"number"},"holidays":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"date":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"type":{"type":"string"},"country":{"type":"string"},"state":{"anyOf":[{"type":"string"},{"type":"null"}]},"confirmation":{"type":"string"},"sourceUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"dataUpdatedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","date","type","country","state","confirmation","sourceUrl","dataUpdatedAt"],"additionalProperties":{}}},"coverage":{"type":"object","properties":{"basis":{"type":"string"},"officialWorkCalendar":{"type":"boolean"}},"required":["basis","officialWorkCalendar"],"additionalProperties":{}},"searchThrough":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"timeZone":{"type":"string"},"from":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}},"required":["query","pageUrl","schemaVersion","country","countryName","state","total","holidays","coverage","searchThrough","timeZone","from"],"additionalProperties":{}}}}},"400":{"description":"Invalid parameters"},"422":{"description":"Insufficient data coverage or range limit"},"429":{"description":"Rate limit; honor Retry-After"},"500":{"description":"Internal failure"}},"operationId":"next_holidays_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"country":{"type":"string","pattern":"^[A-Za-z]{2}$"},"state":{"type":"string","maxLength":30},"tz":{"default":"UTC","type":"string","minLength":1,"maxLength":100},"from":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"limit":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^-?\\d+$"}]},"type":{"type":"string","enum":["public","bank","school","optional","observance"]}},"required":["country"],"additionalProperties":false},"example":{"country":"US","tz":"America/New_York","limit":2}}}}}},"/api/v1/catalog":{"get":{"summary":"Discover supported countries, regions, years and timezone candidates. Ambiguous names are not resolved automatically.","responses":{"200":{"description":"Query result with normalized input, coverage and reproducible pageUrl.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"pageUrl":{"type":"string"},"schemaVersion":{"type":"string","const":"1"},"kind":{"type":"string"},"total":{"type":"number"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":{}}},"nextOffset":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["query","pageUrl","schemaVersion","kind","total","items","nextOffset"],"additionalProperties":false}}}},"400":{"description":"Invalid parameters"},"422":{"description":"Insufficient data coverage or range limit"},"429":{"description":"Rate limit; honor Retry-After"},"500":{"description":"Internal failure"}},"operationId":"catalog","parameters":[{"name":"kind","in":"query","required":false,"schema":{"default":"timezones","type":"string","enum":["countries","states","years","timezones"]}},{"name":"country","in":"query","required":false,"schema":{"type":"string","pattern":"^[A-Za-z]{2}$"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":100}},{"name":"offset","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^-?\\d+$"}]}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^-?\\d+$"}]}}]},"post":{"summary":"Discover supported countries, regions, years and timezone candidates. Ambiguous names are not resolved automatically.","responses":{"200":{"description":"Query result with normalized input, coverage and reproducible pageUrl.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"pageUrl":{"type":"string"},"schemaVersion":{"type":"string","const":"1"},"kind":{"type":"string"},"total":{"type":"number"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":{}}},"nextOffset":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["query","pageUrl","schemaVersion","kind","total","items","nextOffset"],"additionalProperties":false}}}},"400":{"description":"Invalid parameters"},"422":{"description":"Insufficient data coverage or range limit"},"429":{"description":"Rate limit; honor Retry-After"},"500":{"description":"Internal failure"}},"operationId":"catalog_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"kind":{"default":"timezones","type":"string","enum":["countries","states","years","timezones"]},"country":{"type":"string","pattern":"^[A-Za-z]{2}$"},"q":{"type":"string","maxLength":100},"offset":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^-?\\d+$"}]},"limit":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^-?\\d+$"}]}},"additionalProperties":false},"example":{"kind":"timezones","q":"Beijing"}}}}}},"/api/v1/time/convert":{"get":{"summary":"Convert a local time or explicit instant between IANA timezones. Reject ambiguous or nonexistent local times by default.","responses":{"200":{"description":"Query result with normalized input, coverage and reproducible pageUrl.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"pageUrl":{"type":"string"},"schemaVersion":{"type":"string","const":"1"},"instant":{"type":"string"},"from":{"type":"object","properties":{"city":{"type":"string"},"timeZone":{"type":"string"},"localDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"localDateTime":{"type":"string"},"currentDate":{"type":"string"},"currentTime":{"type":"string"},"currentWeekday":{"type":"string"},"offsetMinutes":{"type":"number"},"updatedAt":{"type":"string"},"nextTransition":{"anyOf":[{"type":"object","properties":{"date":{"type":"string"},"fromOffset":{"type":"string"},"toOffset":{"type":"string"},"fromOffsetMinutes":{"type":"number"},"toOffsetMinutes":{"type":"number"}},"required":["date","fromOffset","toOffset","fromOffsetMinutes","toOffsetMinutes"],"additionalProperties":false},{"type":"null"}]}},"required":["city","timeZone","localDate","localDateTime","currentDate","currentTime","currentWeekday","offsetMinutes","updatedAt","nextTransition"],"additionalProperties":{}},"to":{"type":"object","properties":{"city":{"type":"string"},"timeZone":{"type":"string"},"localDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"localDateTime":{"type":"string"},"currentDate":{"type":"string"},"currentTime":{"type":"string"},"currentWeekday":{"type":"string"},"offsetMinutes":{"type":"number"},"updatedAt":{"type":"string"},"nextTransition":{"anyOf":[{"type":"object","properties":{"date":{"type":"string"},"fromOffset":{"type":"string"},"toOffset":{"type":"string"},"fromOffsetMinutes":{"type":"number"},"toOffsetMinutes":{"type":"number"}},"required":["date","fromOffset","toOffset","fromOffsetMinutes","toOffsetMinutes"],"additionalProperties":false},{"type":"null"}]}},"required":["city","timeZone","localDate","localDateTime","currentDate","currentTime","currentWeekday","offsetMinutes","updatedAt","nextTransition"],"additionalProperties":{}},"disambiguation":{"type":"string"}},"required":["query","pageUrl","schemaVersion","instant","from","to","disambiguation"],"additionalProperties":false}}}},"400":{"description":"Invalid parameters"},"422":{"description":"Insufficient data coverage or range limit"},"429":{"description":"Rate limit; honor Retry-After"},"500":{"description":"Internal failure"}},"operationId":"convert_time","parameters":[{"name":"from","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":100}},{"name":"to","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":100}},{"name":"datetime","in":"query","required":true,"schema":{"type":"string","minLength":10,"maxLength":50}},{"name":"disambiguation","in":"query","required":false,"schema":{"default":"reject","type":"string","enum":["reject","earlier","later"]}}]},"post":{"summary":"Convert a local time or explicit instant between IANA timezones. Reject ambiguous or nonexistent local times by default.","responses":{"200":{"description":"Query result with normalized input, coverage and reproducible pageUrl.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"pageUrl":{"type":"string"},"schemaVersion":{"type":"string","const":"1"},"instant":{"type":"string"},"from":{"type":"object","properties":{"city":{"type":"string"},"timeZone":{"type":"string"},"localDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"localDateTime":{"type":"string"},"currentDate":{"type":"string"},"currentTime":{"type":"string"},"currentWeekday":{"type":"string"},"offsetMinutes":{"type":"number"},"updatedAt":{"type":"string"},"nextTransition":{"anyOf":[{"type":"object","properties":{"date":{"type":"string"},"fromOffset":{"type":"string"},"toOffset":{"type":"string"},"fromOffsetMinutes":{"type":"number"},"toOffsetMinutes":{"type":"number"}},"required":["date","fromOffset","toOffset","fromOffsetMinutes","toOffsetMinutes"],"additionalProperties":false},{"type":"null"}]}},"required":["city","timeZone","localDate","localDateTime","currentDate","currentTime","currentWeekday","offsetMinutes","updatedAt","nextTransition"],"additionalProperties":{}},"to":{"type":"object","properties":{"city":{"type":"string"},"timeZone":{"type":"string"},"localDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"localDateTime":{"type":"string"},"currentDate":{"type":"string"},"currentTime":{"type":"string"},"currentWeekday":{"type":"string"},"offsetMinutes":{"type":"number"},"updatedAt":{"type":"string"},"nextTransition":{"anyOf":[{"type":"object","properties":{"date":{"type":"string"},"fromOffset":{"type":"string"},"toOffset":{"type":"string"},"fromOffsetMinutes":{"type":"number"},"toOffsetMinutes":{"type":"number"}},"required":["date","fromOffset","toOffset","fromOffsetMinutes","toOffsetMinutes"],"additionalProperties":false},{"type":"null"}]}},"required":["city","timeZone","localDate","localDateTime","currentDate","currentTime","currentWeekday","offsetMinutes","updatedAt","nextTransition"],"additionalProperties":{}},"disambiguation":{"type":"string"}},"required":["query","pageUrl","schemaVersion","instant","from","to","disambiguation"],"additionalProperties":false}}}},"400":{"description":"Invalid parameters"},"422":{"description":"Insufficient data coverage or range limit"},"429":{"description":"Rate limit; honor Retry-After"},"500":{"description":"Internal failure"}},"operationId":"convert_time_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"from":{"type":"string","minLength":1,"maxLength":100},"to":{"type":"string","minLength":1,"maxLength":100},"datetime":{"type":"string","minLength":10,"maxLength":50},"disambiguation":{"default":"reject","type":"string","enum":["reject","earlier","later"]}},"required":["from","to","datetime"],"additionalProperties":false},"example":{"from":"America/New_York","to":"Asia/Shanghai","datetime":"2026-11-09T09:00:00"}}}}}},"/api/v1/business-days":{"get":{"summary":"Count a date interval or add signed working days under explicit rules. This is not an authoritative employment calendar.","responses":{"200":{"description":"Query result with normalized input, coverage and reproducible pageUrl.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"pageUrl":{"type":"string"},"schemaVersion":{"type":"string","const":"1"},"start":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"end":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"businessDays":{"type":"number"},"rules":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"coverage":{"type":"object","properties":{"basis":{"type":"string"},"officialWorkCalendar":{"type":"boolean"}},"required":["basis","officialWorkCalendar"],"additionalProperties":{}},"limitations":{"type":"array","items":{"type":"string"}}},"required":["query","pageUrl","schemaVersion","start","end","businessDays","rules","coverage","limitations"],"additionalProperties":false}}}},"400":{"description":"Invalid parameters"},"422":{"description":"Insufficient data coverage or range limit"},"429":{"description":"Rate limit; honor Retry-After"},"500":{"description":"Internal failure"}},"operationId":"business_days","parameters":[{"name":"country","in":"query","required":false,"schema":{"type":"string","pattern":"^[A-Za-z]{2}$"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","maxLength":30}},{"name":"start","in":"query","required":true,"schema":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}},{"name":"end","in":"query","required":false,"schema":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}},{"name":"days","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^-?\\d+$"}]}},{"name":"includeStart","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"includeEnd","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"weekend","in":"query","required":false,"content":{"application/json":{"schema":{"maxItems":6,"type":"array","items":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^-?\\d+$"}]}}}},"description":"JSON-encoded array"},{"name":"extraHolidays","in":"query","required":false,"content":{"application/json":{"schema":{"default":[],"maxItems":366,"type":"array","items":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}}}},"description":"JSON-encoded array"},{"name":"extraWorkdays","in":"query","required":false,"content":{"application/json":{"schema":{"default":[],"maxItems":366,"type":"array","items":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}}}},"description":"JSON-encoded array"},{"name":"strict","in":"query","required":false,"schema":{"type":"boolean"}}]},"post":{"summary":"Count a date interval or add signed working days under explicit rules. This is not an authoritative employment calendar.","responses":{"200":{"description":"Query result with normalized input, coverage and reproducible pageUrl.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"pageUrl":{"type":"string"},"schemaVersion":{"type":"string","const":"1"},"start":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"end":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"businessDays":{"type":"number"},"rules":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"coverage":{"type":"object","properties":{"basis":{"type":"string"},"officialWorkCalendar":{"type":"boolean"}},"required":["basis","officialWorkCalendar"],"additionalProperties":{}},"limitations":{"type":"array","items":{"type":"string"}}},"required":["query","pageUrl","schemaVersion","start","end","businessDays","rules","coverage","limitations"],"additionalProperties":false}}}},"400":{"description":"Invalid parameters"},"422":{"description":"Insufficient data coverage or range limit"},"429":{"description":"Rate limit; honor Retry-After"},"500":{"description":"Internal failure"}},"operationId":"business_days_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"country":{"type":"string","pattern":"^[A-Za-z]{2}$"},"state":{"type":"string","maxLength":30},"start":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"end":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"days":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^-?\\d+$"}]},"includeStart":{"type":"boolean"},"includeEnd":{"type":"boolean"},"weekend":{"maxItems":6,"type":"array","items":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^-?\\d+$"}]}},"extraHolidays":{"default":[],"maxItems":366,"type":"array","items":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}},"extraWorkdays":{"default":[],"maxItems":366,"type":"array","items":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}},"strict":{"type":"boolean"}},"required":["start"],"additionalProperties":false},"example":{"start":"2026-11-05","days":10}}}}}},"/api/v1/meeting-slots":{"post":{"summary":"Find 15-minute-grid meeting starts inside all participants local working windows.","responses":{"200":{"description":"Query result with normalized input, coverage and reproducible pageUrl.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"pageUrl":{"type":"string"},"schemaVersion":{"type":"string","const":"1"},"slots":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string"},"end":{"type":"string"},"local":{"type":"array","items":{"type":"object","properties":{"timeZone":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"}},"required":["timeZone","start","end"],"additionalProperties":false}}},"required":["start","end","local"],"additionalProperties":false}},"total":{"type":"number"},"rangeTimeZone":{"type":"string","const":"UTC"},"rules":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"coverage":{"anyOf":[{"type":"object","properties":{"basis":{"type":"string"},"officialWorkCalendar":{"type":"boolean"}},"required":["basis","officialWorkCalendar"],"additionalProperties":{}},{"type":"null"}]}},"required":["query","pageUrl","schemaVersion","slots","total","rangeTimeZone","rules","coverage"],"additionalProperties":false}}}},"400":{"description":"Invalid parameters"},"422":{"description":"Insufficient data coverage or range limit"},"429":{"description":"Rate limit; honor Retry-After"},"500":{"description":"Internal failure"}},"operationId":"meeting_slots_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"start":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"end":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"participants":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"object","properties":{"tz":{"type":"string","minLength":1,"maxLength":100},"workStart":{"default":"09:00","type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},"workEnd":{"default":"17:00","type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},"weekend":{"maxItems":6,"type":"array","items":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^-?\\d+$"}]}},"country":{"type":"string","pattern":"^[A-Za-z]{2}$"},"state":{"type":"string","maxLength":30}},"required":["tz"],"additionalProperties":false}},"durationMinutes":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^-?\\d+$"}]},"excludeHolidays":{"type":"boolean"},"strict":{"type":"boolean"},"limit":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^-?\\d+$"}]}},"required":["start","end","participants"],"additionalProperties":false},"example":{"start":"2026-11-09","end":"2026-11-09","participants":[{"tz":"Asia/Shanghai"},{"tz":"Europe/London"}]}}}}}},"/api/v1/batch":{"post":{"operationId":"batch","summary":"Up to 20 independent queries; charged by total cost. No nested batches.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"requests":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"operation":{"type":"string","enum":["current_time","dst","holidays","next_holidays","catalog","convert_time","business_days","meeting_slots"]},"input":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["operation","input"],"additionalProperties":false}}},"required":["requests"],"additionalProperties":false}}}},"responses":{"200":{"description":"Per-item ok and data or error"},"400":{"description":"Invalid batch"},"429":{"description":"Insufficient quota"}}}},"/api/holidays/ics":{"get":{"operationId":"holiday_calendar","summary":"Download a rule-derived all-day holiday calendar","parameters":[{"name":"country","in":"query","required":true,"schema":{"type":"string"}},{"name":"year","in":"query","schema":{"type":"integer"}},{"name":"state","in":"query","schema":{"type":"string"}},{"name":"types","in":"query","schema":{"type":"string"},"description":"Comma-separated public, bank, school, optional or observance"}],"responses":{"200":{"description":"iCalendar download","content":{"text/calendar":{"schema":{"type":"string"}}}},"400":{"description":"Invalid parameters"},"422":{"description":"Coverage unavailable"},"429":{"description":"Quota exceeded"}}}}}}