{"id":"working-hours-contains","version":"1.0.0","description":"Test whether an exact UTC instant is inside a versioned expanded working-hours calendar.","supported_operations":["check instant in working hours","is timestamp during office hours","test UTC instant against shifts","working calendar membership","check split shift membership","apply closures to instant","DST-aware work time check"],"unsupported_operations":["find the next opening time","parse human date text","infer holidays"],"semantics":["Membership uses half-open intervals: the start is included and the end is excluded.","Expansion follows RFC 9557 and ISO 8601-1:2019 under explicit DST policies.","Pinned IANA tzdb 2025b subset only; caller_rule_version is echoed without asserting legal currency."],"limits":{"max_input_bytes":200000,"max_days":366,"max_intervals_per_day":16,"max_overrides":366,"max_closures":366,"max_output_intervals":12000},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["calendar","range_start_date","range_end_date","instant_epoch_second"],"properties":{"calendar":{"type":"object","additionalProperties":false,"required":["time_zone","caller_rule_version","weekly","overrides","closures","gap_policy","overlap_policy"],"properties":{"time_zone":{"type":"string","minLength":1,"maxLength":64},"caller_rule_version":{"type":"string","minLength":1,"maxLength":100},"weekly":{"type":"object","additionalProperties":false,"properties":{"sun":{"type":"array","maxItems":16,"items":{"type":"object","additionalProperties":false,"required":["start","end"],"properties":{"start":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$"},"end":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$|^24:00$"}}}},"mon":{"type":"array","maxItems":16,"items":{"type":"object","additionalProperties":false,"required":["start","end"],"properties":{"start":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$"},"end":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$|^24:00$"}}}},"tue":{"type":"array","maxItems":16,"items":{"type":"object","additionalProperties":false,"required":["start","end"],"properties":{"start":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$"},"end":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$|^24:00$"}}}},"wed":{"type":"array","maxItems":16,"items":{"type":"object","additionalProperties":false,"required":["start","end"],"properties":{"start":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$"},"end":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$|^24:00$"}}}},"thu":{"type":"array","maxItems":16,"items":{"type":"object","additionalProperties":false,"required":["start","end"],"properties":{"start":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$"},"end":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$|^24:00$"}}}},"fri":{"type":"array","maxItems":16,"items":{"type":"object","additionalProperties":false,"required":["start","end"],"properties":{"start":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$"},"end":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$|^24:00$"}}}},"sat":{"type":"array","maxItems":16,"items":{"type":"object","additionalProperties":false,"required":["start","end"],"properties":{"start":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$"},"end":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$|^24:00$"}}}}}},"overrides":{"type":"array","maxItems":366,"items":{"type":"object","additionalProperties":false,"required":["date","intervals"],"properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"intervals":{"type":"array","maxItems":16,"items":{"type":"object","additionalProperties":false,"required":["start","end"],"properties":{"start":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$"},"end":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$|^24:00$"}}}}}}},"closures":{"type":"array","maxItems":366,"uniqueItems":true,"items":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"gap_policy":{"type":"string","enum":["reject","shift_forward"]},"overlap_policy":{"type":"string","enum":["earlier","later","both"]}}},"range_start_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"range_end_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"instant_epoch_second":{"type":"integer"}}},"output_schema":{"type":"object","additionalProperties":false,"required":["standard_version","data_version","caller_rule_version","canonical_time_zone","contains"],"properties":{"standard_version":{"type":"string"},"data_version":{"type":"string"},"caller_rule_version":{"type":"string"},"canonical_time_zone":{"type":"string"},"contains":{"type":"boolean"}}},"examples":[{"input":{"calendar":{"time_zone":"UTC","caller_rule_version":"example-v1","weekly":{"mon":[{"start":"09:00","end":"17:00"}]},"overrides":[],"closures":[],"gap_policy":"reject","overlap_policy":"earlier"},"range_start_date":"2025-01-06","range_end_date":"2025-01-07","instant_epoch_second":1736154000},"output":{"standard_version":"RFC 9557; ISO 8601-1:2019","data_version":"iana-tzdb-2025b","caller_rule_version":"example-v1","canonical_time_zone":"UTC","contains":true}},{"input":{"calendar":{"time_zone":"UTC","caller_rule_version":"example-v1","weekly":{"mon":[{"start":"09:00","end":"17:00"}]},"overrides":[],"closures":[],"gap_policy":"reject","overlap_policy":"earlier"},"range_start_date":"2025-01-06","range_end_date":"2025-01-07","instant_epoch_second":1736182800},"output":{"standard_version":"RFC 9557; ISO 8601-1:2019","data_version":"iana-tzdb-2025b","caller_rule_version":"example-v1","canonical_time_zone":"UTC","contains":false}}],"execute_url":"/v1/tools/working-hours-contains/versions/1.0.0/execute"}