{"id":"cron-previous-runs","version":"1.0.0","description":"Compute the previous requested UTC fire times for a five-field cron schedule and echo the supplied reference instant.","supported_operations":["previous cron runs","calculate earlier cron fire times","when did this cron run before","find past schedule executions","cron times before an instant","evaluate cron backward in UTC"],"unsupported_operations":["six-field cron with seconds","named months or weekdays","IANA time zone daylight-saving rules"],"semantics":["Vixie wildcard status is true when a field starts with *, including */n; if either day field starts with *, both day value sets must match; otherwise day matching uses OR.","Uses POSIX.1-2024 crontab utility INPUT FILES section five-field ordering; two restricted day fields use OR matching.","Supports Vixie cron 3.0pl1 list, inclusive range, and step extensions.","Runs are strictly before reference_instant, returned as UTC minute instants; offset defaults to Z.","The supplied reference_instant is echoed unchanged and the host clock is never read."],"limits":{"max_input_bytes":512,"max_expression_bytes":128,"max_results":32,"max_search_minutes":527040,"max_output_bytes":4096},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["expression","reference_instant","count"],"properties":{"expression":{"type":"string","minLength":1,"maxLength":128},"reference_instant":{"type":"string","minLength":20,"maxLength":20,"pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"},"count":{"type":"integer","minimum":1,"maximum":32},"offset":{"type":"string","minLength":1,"maxLength":6,"pattern":"^(Z|[+-]\\d{2}:\\d{2})$"}}},"output_schema":{"type":"object","additionalProperties":false,"required":["expression","reference_instant","offset","runs","standard_version"],"properties":{"expression":{"type":"string","minLength":1,"maxLength":128},"reference_instant":{"type":"string","minLength":20,"maxLength":20,"pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"},"offset":{"type":"string","minLength":1,"maxLength":6,"pattern":"^(Z|[+-]\\d{2}:\\d{2})$"},"runs":{"type":"array","minItems":1,"maxItems":32,"items":{"type":"string","minLength":20,"maxLength":20,"pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"}},"standard_version":{"type":"string","const":"POSIX.1-2024 crontab utility, INPUT FILES"}}},"examples":[{"input":{"expression":"15 * * * *","reference_instant":"2026-01-01T00:00:00Z","count":2},"output":{"expression":"15 * * * *","reference_instant":"2026-01-01T00:00:00Z","offset":"Z","runs":["2025-12-31T23:15:00Z","2025-12-31T22:15:00Z"],"standard_version":"POSIX.1-2024 crontab utility, INPUT FILES"}},{"input":{"expression":"0 0 * * *","reference_instant":"2026-01-01T00:00:00Z","count":1},"output":{"expression":"0 0 * * *","reference_instant":"2026-01-01T00:00:00Z","offset":"Z","runs":["2025-12-31T00:00:00Z"],"standard_version":"POSIX.1-2024 crontab utility, INPUT FILES"}}],"execute_url":"/v1/tools/cron-previous-runs/versions/1.0.0/execute"}