{"openapi":"3.1.0","info":{"title":"Timezone and Schedule Guard API","version":"1.0.0","description":"Resolve local wall times, convert absolute instants, validate schedule windows, and expose IANA UTC-offset transitions without geolocation or natural-language guessing. Inputs are bounded, payloads are not stored, and DST folds and gaps are never silently resolved."},"paths":{"/marketplace/rapid/time/v1/resolve-local":{"post":{"tags":["Local Time Resolve"],"summary":"Resolve local time","description":"Resolve one explicit local wall time in an IANA zone and expose unique, repeated, or nonexistent behavior without guessing.","operationId":"resolveLocalTime","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocalTimeRequest"},"examples":{"example":{"summary":"Resolve local time","value":{"local_datetime":"2026-11-01T01:30:00","time_zone":"America/New_York","disambiguation":"EARLIER"}}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocalTimeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/marketplace/rapid/time/v1/convert":{"post":{"tags":["Timezone Convert"],"summary":"Convert an absolute instant","description":"Convert one RFC 3339 instant to as many as 20 explicit IANA zones with offsets, folds, abbreviations, and DST state.","operationId":"convertTimeZones","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimeConvertRequest"},"examples":{"example":{"summary":"Convert an absolute instant","value":{"instant":"2026-08-10T14:30:00Z","target_time_zones":["America/Denver","Europe/Paris","Asia/Tokyo"]}}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimeConvertResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/marketplace/rapid/time/v1/window-check":{"post":{"tags":["Schedule Window Check"],"summary":"Check schedule window","description":"Resolve start and end wall times, enforce exact duration bounds, and expose offset-transition or wall-duration differences.","operationId":"checkScheduleWindow","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleWindowRequest"},"examples":{"example":{"summary":"Check schedule window","value":{"start":{"local_datetime":"2026-03-08T01:30:00","time_zone":"America/New_York"},"end":{"local_datetime":"2026-03-08T03:30:00","time_zone":"America/New_York"},"require_same_time_zone":true,"minimum_duration_seconds":1800,"maximum_duration_seconds":7200}}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleWindowResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/marketplace/rapid/time/v1/transition-check":{"post":{"tags":["Offset Transition Check"],"summary":"Check offset transitions","description":"List IANA UTC-offset transitions to one-second resolution over an explicit interval of at most 366 days.","operationId":"checkTimeTransitions","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransitionCheckRequest"},"examples":{"example":{"summary":"Check offset transitions","value":{"time_zone":"America/New_York","start_instant":"2026-03-01T00:00:00Z","end_instant":"2026-03-15T00:00:00Z"}}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransitionCheckResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"ConvertedTime":{"properties":{"time_zone":{"type":"string","title":"Time Zone"},"local_datetime":{"type":"string","title":"Local Datetime"},"local_date":{"type":"string","title":"Local Date"},"local_time":{"type":"string","title":"Local Time"},"utc_offset":{"type":"string","title":"Utc Offset"},"utc_offset_seconds":{"type":"integer","title":"Utc Offset Seconds"},"abbreviation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abbreviation"},"is_dst":{"type":"boolean","title":"Is Dst"},"fold":{"type":"integer","enum":[0,1],"title":"Fold"}},"additionalProperties":false,"type":"object","required":["time_zone","local_datetime","local_date","local_time","utc_offset","utc_offset_seconds","abbreviation","is_dst","fold"],"title":"ConvertedTime"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"LocalTimeRequest":{"properties":{"local_datetime":{"type":"string","maxLength":64,"minLength":19,"title":"Local Datetime"},"time_zone":{"type":"string","maxLength":128,"minLength":1,"title":"Time Zone"},"disambiguation":{"type":"string","enum":["REJECT","EARLIER","LATER"],"title":"Disambiguation","default":"REJECT"}},"additionalProperties":false,"type":"object","required":["local_datetime","time_zone"],"title":"LocalTimeRequest"},"LocalTimeResponse":{"properties":{"status":{"type":"string","const":"COMPLETED","title":"Status","default":"COMPLETED"},"decision":{"type":"string","enum":["CLEAR","REVIEW_REQUIRED","BLOCKED"],"title":"Decision"},"resolution":{"type":"string","enum":["UNIQUE","AMBIGUOUS","NONEXISTENT"],"title":"Resolution"},"local_datetime":{"type":"string","title":"Local Datetime"},"time_zone":{"type":"string","title":"Time Zone"},"disambiguation":{"type":"string","enum":["REJECT","EARLIER","LATER"],"title":"Disambiguation"},"candidates":{"items":{"$ref":"#/components/schemas/ResolvedInstant"},"type":"array","title":"Candidates"},"chosen":{"anyOf":[{"$ref":"#/components/schemas/ResolvedInstant"},{"type":"null"}]},"gap_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Gap Seconds"},"fold_0_offset_seconds":{"type":"integer","title":"Fold 0 Offset Seconds"},"fold_1_offset_seconds":{"type":"integer","title":"Fold 1 Offset Seconds"},"tzdata_package_version":{"type":"string","title":"Tzdata Package Version"},"issues":{"items":{"$ref":"#/components/schemas/TimeIssue"},"type":"array","title":"Issues"},"input_sha256":{"type":"string","title":"Input Sha256"},"next_action":{"type":"string","title":"Next Action"}},"additionalProperties":false,"type":"object","required":["decision","resolution","local_datetime","time_zone","disambiguation","candidates","chosen","gap_seconds","fold_0_offset_seconds","fold_1_offset_seconds","tzdata_package_version","issues","input_sha256","next_action"],"title":"LocalTimeResponse"},"OffsetTransition":{"properties":{"at_utc":{"type":"string","title":"At Utc"},"kind":{"type":"string","enum":["GAP","FOLD","OFFSET_CHANGE"],"title":"Kind"},"offset_before":{"type":"string","title":"Offset Before"},"offset_after":{"type":"string","title":"Offset After"},"offset_before_seconds":{"type":"integer","title":"Offset Before Seconds"},"offset_after_seconds":{"type":"integer","title":"Offset After Seconds"},"delta_seconds":{"type":"integer","title":"Delta Seconds"},"local_before":{"type":"string","title":"Local Before"},"local_after":{"type":"string","title":"Local After"}},"additionalProperties":false,"type":"object","required":["at_utc","kind","offset_before","offset_after","offset_before_seconds","offset_after_seconds","delta_seconds","local_before","local_after"],"title":"OffsetTransition"},"ResolvedInstant":{"properties":{"fold":{"type":"integer","enum":[0,1],"title":"Fold"},"instant_utc":{"type":"string","title":"Instant Utc"},"local_datetime":{"type":"string","title":"Local Datetime"},"utc_offset":{"type":"string","title":"Utc Offset"},"utc_offset_seconds":{"type":"integer","title":"Utc Offset Seconds"},"abbreviation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abbreviation"},"is_dst":{"type":"boolean","title":"Is Dst"}},"additionalProperties":false,"type":"object","required":["fold","instant_utc","local_datetime","utc_offset","utc_offset_seconds","abbreviation","is_dst"],"title":"ResolvedInstant"},"ScheduleWindowRequest":{"properties":{"start":{"$ref":"#/components/schemas/LocalTimeRequest"},"end":{"$ref":"#/components/schemas/LocalTimeRequest"},"require_same_time_zone":{"type":"boolean","title":"Require Same Time Zone","default":false},"minimum_duration_seconds":{"anyOf":[{"type":"integer","maximum":31622400.0,"minimum":0.0},{"type":"null"}],"title":"Minimum Duration Seconds"},"maximum_duration_seconds":{"anyOf":[{"type":"integer","maximum":31622400.0,"minimum":0.0},{"type":"null"}],"title":"Maximum Duration Seconds"}},"additionalProperties":false,"type":"object","required":["start","end"],"title":"ScheduleWindowRequest"},"ScheduleWindowResponse":{"properties":{"status":{"type":"string","const":"COMPLETED","title":"Status","default":"COMPLETED"},"decision":{"type":"string","enum":["CLEAR","REVIEW_REQUIRED","BLOCKED"],"title":"Decision"},"start":{"$ref":"#/components/schemas/LocalTimeResponse"},"end":{"$ref":"#/components/schemas/LocalTimeResponse"},"exact_duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Exact Duration Seconds"},"wall_duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Wall Duration Seconds"},"crosses_offset_transition":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Crosses Offset Transition"},"transition_count":{"type":"integer","title":"Transition Count"},"issues":{"items":{"$ref":"#/components/schemas/TimeIssue"},"type":"array","title":"Issues"},"tzdata_package_version":{"type":"string","title":"Tzdata Package Version"},"input_sha256":{"type":"string","title":"Input Sha256"},"next_action":{"type":"string","title":"Next Action"}},"additionalProperties":false,"type":"object","required":["decision","start","end","exact_duration_seconds","wall_duration_seconds","crosses_offset_transition","transition_count","issues","tzdata_package_version","input_sha256","next_action"],"title":"ScheduleWindowResponse"},"TimeConvertRequest":{"properties":{"instant":{"type":"string","maxLength":64,"minLength":20,"title":"Instant"},"target_time_zones":{"items":{"type":"string"},"type":"array","maxItems":20,"minItems":1,"title":"Target Time Zones"}},"additionalProperties":false,"type":"object","required":["instant","target_time_zones"],"title":"TimeConvertRequest"},"TimeConvertResponse":{"properties":{"status":{"type":"string","const":"COMPLETED","title":"Status","default":"COMPLETED"},"decision":{"type":"string","const":"CLEAR","title":"Decision","default":"CLEAR"},"instant_utc":{"type":"string","title":"Instant Utc"},"unix_seconds":{"type":"number","title":"Unix Seconds"},"conversions":{"items":{"$ref":"#/components/schemas/ConvertedTime"},"type":"array","title":"Conversions"},"tzdata_package_version":{"type":"string","title":"Tzdata Package Version"},"input_sha256":{"type":"string","title":"Input Sha256"},"issues":{"items":{"$ref":"#/components/schemas/TimeIssue"},"type":"array","title":"Issues"},"next_action":{"type":"string","title":"Next Action"}},"additionalProperties":false,"type":"object","required":["instant_utc","unix_seconds","conversions","tzdata_package_version","input_sha256","next_action"],"title":"TimeConvertResponse"},"TimeIssue":{"properties":{"code":{"type":"string","title":"Code"},"severity":{"type":"string","enum":["INFO","LOW","MEDIUM","HIGH"],"title":"Severity"},"message":{"type":"string","title":"Message"},"next_action":{"type":"string","title":"Next Action"},"evidence":{"additionalProperties":true,"type":"object","title":"Evidence"}},"additionalProperties":false,"type":"object","required":["code","severity","message","next_action"],"title":"TimeIssue"},"TransitionCheckRequest":{"properties":{"time_zone":{"type":"string","maxLength":128,"minLength":1,"title":"Time Zone"},"start_instant":{"type":"string","maxLength":64,"minLength":20,"title":"Start Instant"},"end_instant":{"type":"string","maxLength":64,"minLength":20,"title":"End Instant"}},"additionalProperties":false,"type":"object","required":["time_zone","start_instant","end_instant"],"title":"TransitionCheckRequest"},"TransitionCheckResponse":{"properties":{"status":{"type":"string","const":"COMPLETED","title":"Status","default":"COMPLETED"},"decision":{"type":"string","enum":["CLEAR","REVIEW_REQUIRED","BLOCKED"],"title":"Decision"},"time_zone":{"type":"string","title":"Time Zone"},"start_instant_utc":{"type":"string","title":"Start Instant Utc"},"end_instant_utc":{"type":"string","title":"End Instant Utc"},"interval_seconds":{"type":"number","title":"Interval Seconds"},"transitions":{"items":{"$ref":"#/components/schemas/OffsetTransition"},"type":"array","title":"Transitions"},"tzdata_package_version":{"type":"string","title":"Tzdata Package Version"},"issues":{"items":{"$ref":"#/components/schemas/TimeIssue"},"type":"array","title":"Issues"},"input_sha256":{"type":"string","title":"Input Sha256"},"next_action":{"type":"string","title":"Next Action"}},"additionalProperties":false,"type":"object","required":["decision","time_zone","start_instant_utc","end_instant_utc","interval_seconds","transitions","tzdata_package_version","issues","input_sha256","next_action"],"title":"TransitionCheckResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"tags":[{"name":"Local Time Resolve","description":"A bounded, stateless timezone and scheduling utility for agents, calendars, logistics, and workflow automation."},{"name":"Timezone Convert","description":"A bounded, stateless timezone and scheduling utility for agents, calendars, logistics, and workflow automation."},{"name":"Schedule Window Check","description":"A bounded, stateless timezone and scheduling utility for agents, calendars, logistics, and workflow automation."},{"name":"Offset Transition Check","description":"A bounded, stateless timezone and scheduling utility for agents, calendars, logistics, and workflow automation."}],"servers":[{"url":"https://api-production-9502.up.railway.app"}]}