{"openapi":"3.1.0","info":{"title":"Work Time Calc","version":"1.0.0","description":"Business days, working hours, durations, overtime, timesheets, pay periods, ISO weeks and tenure arithmetic. One call, one computed answer, no accounts or API keys. Machine-payable over x402.","x-guidance":"Work Time Calc: Business days, working hours, durations, overtime, timesheets, pay periods, ISO weeks and tenure arithmetic. Use /business-days to count working days between dates with your holiday list, /add-business-days to move a date by N working days, /working-hours for hours between timestamps under a weekly schedule, /duration to parse, sum and format ISO 8601 durations, /overtime to split hours at daily and weekly thresholds, /timesheet to total in/out pairs, /pay-periods for period boundaries, /iso-week for ISO 8601 week numbers and /tenure for years-months-days between dates. Each paid GET returns a computed verdict with the reasons, the source and what was NOT checked. A verdict of UNVERIFIED means a lookup failed: treat it as unknown. No account or key: pay per call in USDC over x402."},"servers":[{"url":"https://work-time-calc.x402tookit.com"}],"paths":{"/add-business-days":{"get":{"operationId":"add_business_days","summary":"Add or subtract N business days from a date, skipping weekends and your holiday list, WORKDAY style.","description":"Add or subtract N business days from a date, skipping weekends and your holiday list, WORKDAY style.","tags":["business-days","workday","deadline","dates"],"parameters":[{"name":"date","in":"query","required":true,"description":"Start date YYYY-MM-DD","schema":{"type":"string"}},{"name":"days","in":"query","required":true,"description":"Business days to add (negative goes back), -20000 to 20000","schema":{"type":"integer"}},{"name":"holidays","in":"query","required":false,"description":"Comma-separated holiday dates YYYY-MM-DD (up to 500)","schema":{"type":"string"}},{"name":"weekend","in":"query","required":false,"description":"Comma-separated weekend days, default sat,sun; none for a 7-day week","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"result":{"type":["null","string"]},"weekday":{"type":["null","string"]},"calendarDaysMoved":{"type":["null","number"]},"startIsBusinessDay":{"type":["boolean","null"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"Adding 3 business day(s) to 2026-12-23 gives 2026-12-29 (Tuesday).","reasons":["The start day is not counted; each following working day counts once.","6 calendar day(s) elapse."],"result":"2026-12-29","weekday":"Tuesday","calendarDaysMoved":6,"startIsBusinessDay":true,"degraded":false,"notChecked":["whether your holiday list is complete","that the start date itself is a working day (it is not counted either way)","…1 more"],"source":"calendar arithmetic computed locally; holidays and weekend are the caller's","asOf":"2026-10-11T23:39:13.241Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/add-business-days"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/add-business-days"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/add-business-days"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/add-business-days"}}]}}},"/business-days":{"get":{"operationId":"business_days","summary":"Count business days between two dates, skipping weekends and your holiday list, NETWORKDAYS style.","description":"Count business days between two dates, skipping weekends and your holiday list, NETWORKDAYS style.","tags":["business-days","workdays","holidays","dates"],"parameters":[{"name":"start","in":"query","required":true,"description":"First date YYYY-MM-DD","schema":{"type":"string"}},{"name":"end","in":"query","required":true,"description":"Last date YYYY-MM-DD (before start gives a negative count)","schema":{"type":"string"}},{"name":"holidays","in":"query","required":false,"description":"Comma-separated holiday dates YYYY-MM-DD (up to 500)","schema":{"type":"string"}},{"name":"weekend","in":"query","required":false,"description":"Comma-separated weekend days, default sat,sun; none for a 7-day week","schema":{"type":"string"}},{"name":"inclusive","in":"query","required":false,"description":"true (default) counts both ends; false counts start but not end","schema":{"type":"boolean"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"businessDays":{"type":["null","number"]},"calendarDays":{"type":["null","number"]},"weekendDays":{"type":["null","number"]},"holidaysOnWorkingDays":{"type":["null","number"]},"holidaysApplied":{"type":["array","null"],"items":{"type":"string"}},"inclusive":{"type":["boolean","null"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"9 business day(s) from 2026-12-21 to 2027-01-04.","reasons":["Counted both dates: 2026-12-21 to 2027-01-04 is 15 calendar day(s).","Skipped 4 weekend day(s) (Saturday, Sunday) and 2 holiday(s) that fell on working days."],"businessDays":9,"calendarDays":15,"weekendDays":4,"holidaysOnWorkingDays":2,"holidaysApplied":["2026-12-25","2027-01-01"],"inclusive":true,"degraded":false,"notChecked":["whether your holiday list is complete or correct for your jurisdiction","half days, bridge days and company shutdowns","…1 more"],"source":"calendar arithmetic computed locally; holidays and weekend are the caller's","asOf":"2026-10-11T23:39:13.502Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/business-days"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/business-days"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/business-days"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/business-days"}}]}}},"/duration":{"get":{"operationId":"duration","summary":"Parse, sum and format ISO 8601 durations (PT36H, P1Y2M10DT2H30M), or turn seconds into ISO and clock form.","description":"Parse, sum and format ISO 8601 durations (PT36H, P1Y2M10DT2H30M), or turn seconds into ISO and clock form.","tags":["duration","iso-8601","time","format"],"parameters":[{"name":"durations","in":"query","required":false,"description":"Comma-separated ISO 8601 durations to parse and sum, e.g. PT36H,PT45M","schema":{"type":"string"}},{"name":"seconds","in":"query","required":false,"description":"Alternative: a number of seconds to format (use instead of durations)","schema":{"type":"number"}},{"name":"carryDays","in":"query","required":false,"description":"true carries 24 hours into 1 day in the formatted result (default false)","schema":{"type":"boolean"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"sumIso":{"type":["null","string"]},"sum":{"type":["null","object"],"properties":{"years":{"type":["null","number"]},"months":{"type":["null","number"]},"days":{"type":["null","number"]},"hours":{"type":["null","number"]},"minutes":{"type":["null","number"]},"seconds":{"type":["null","number"]},"iso":{"type":["null","string"]},"totalSeconds":{}}},"totalSeconds":{},"totalHours":{},"hasCalendarComponents":{"type":["boolean","null"]},"items":{"type":["array","null"],"items":{"type":"object","properties":{"input":{"type":["null","string"]},"years":{"type":["null","number"]},"months":{"type":["null","number"]},"days":{"type":["null","number"]},"hours":{"type":["null","number"]},"minutes":{"type":["null","number"]},"seconds":{"type":["null","number"]},"iso":{"type":["null","string"]},"totalSeconds":{"type":["null","number"]}}}},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"3 duration(s) sum to P1Y2M10DT39H15M.","reasons":["Components are added field by field: years with years, months with months, days with days, and the time part as exact milliseconds.","Weeks are converted to 7 days.","…1 more"],"sumIso":"P1Y2M10DT39H15M","sum":{"years":1,"months":2,"days":10,"hours":39,"minutes":15,"seconds":0,"iso":"P1Y2M10DT39H15M","totalSeconds":null},"totalSeconds":null,"totalHours":null,"hasCalendarComponents":true,"items":[{"input":"PT36H","years":0,"months":0,"days":0,"hours":36,"minutes":0,"seconds":0,"iso":"PT36H","totalSeconds":129600},{"input":"P1Y2M10DT2H30M","years":1,"months":2,"days":10,"hours":2,"minutes":30,"seconds":0,"iso":"P1Y2M10DT2H30M","totalSeconds":null}],"degraded":false,"notChecked":["the length of a year or month: totalSeconds is null whenever years or months are present, because they have no fixed length","daylight saving: a day is taken as 24 hours","…1 more"],"source":"ISO 8601 duration grammar, computed locally","asOf":"2026-10-11T23:39:13.755Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/duration"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/duration"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/duration"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/duration"}}]}}},"/iso-week":{"get":{"operationId":"iso_week","summary":"ISO 8601 week number and week-year for a date (2021-01-03 is 2020-W53), reverse lookup and sprint numbering.","description":"ISO 8601 week number and week-year for a date (2021-01-03 is 2020-W53), reverse lookup and sprint numbering.","tags":["iso-week","week-number","sprint","calendar"],"parameters":[{"name":"date","in":"query","required":false,"description":"Date YYYY-MM-DD (give this, or weekYear with week)","schema":{"type":"string"}},{"name":"weekYear","in":"query","required":false,"description":"ISO week-year for the reverse lookup, 1 to 9998","schema":{"type":"integer"}},{"name":"week","in":"query","required":false,"description":"ISO week 1 to 53 for the reverse lookup","schema":{"type":"integer"}},{"name":"sprintStart","in":"query","required":false,"description":"With date: first day of sprint 1, YYYY-MM-DD","schema":{"type":"string"}},{"name":"sprintWeeks","in":"query","required":false,"description":"Sprint length in weeks, 1 to 8 (default 2)","schema":{"type":"integer"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"isoWeekDate":{"type":["null","string"]},"weekYear":{"type":["null","number"]},"week":{"type":["null","number"]},"weekday":{"type":["null","number"]},"weekdayName":{"type":["null","string"]},"weeksInWeekYear":{"type":["null","number"]},"calendarYear":{"type":["null","number"]},"dayOfYear":{"type":["null","number"]},"weekMonday":{"type":["null","string"]},"weekSunday":{"type":["null","string"]},"weekYearDiffersFromYear":{"type":["boolean","null"]},"sprint":{"type":["null","object"],"properties":{"number":{"type":["null","number"]},"start":{"type":["null","string"]},"end":{"type":["null","string"]},"dayOfSprint":{"type":["null","number"]},"lengthDays":{"type":["null","number"]},"beforeSprintOne":{"type":["boolean","null"]}}},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"2021-01-03 is 2020-W53-7 (Sunday).","reasons":["Week 1 is the week containing the first Thursday of the year; weeks run Monday to Sunday.","The date belongs to week-year 2020, not calendar year 2021, because its Thursday falls in 2020.","…1 more"],"isoWeekDate":"2020-W53-7","weekYear":2020,"week":53,"weekday":7,"weekdayName":"Sunday","weeksInWeekYear":53,"calendarYear":2021,"dayOfYear":3,"weekMonday":"2020-12-28","weekSunday":"2021-01-03","weekYearDiffersFromYear":true,"sprint":{"number":2,"start":"2020-12-28","end":"2021-01-10","dayOfSprint":7,"lengthDays":14,"beforeSprintOne":false},"degraded":false,"notChecked":["US, Middle East or other week-numbering systems (weeks starting Sunday or Saturday)","company fiscal calendars and 4-4-5 retail calendars","…1 more"],"source":"ISO 8601 week-date rules (weeks start Monday, week 1 holds the first Thursday), computed locally","asOf":"2026-10-11T23:39:14.006Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/iso-week"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/iso-week"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/iso-week"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/iso-week"}}]}}},"/overtime":{"get":{"operationId":"overtime","summary":"Split a week of daily hours into regular, overtime and double time using your daily and weekly thresholds.","description":"Split a week of daily hours into regular, overtime and double time using your daily and weekly thresholds.","tags":["overtime","payroll","hours","timesheet"],"parameters":[{"name":"daily","in":"query","required":true,"description":"Comma-separated hours worked per day for one workweek, 1 to 7 values, e.g. 9,10,8,8,12","schema":{"type":"string"}},{"name":"dailyThreshold","in":"query","required":false,"description":"Hours per day after which overtime starts (omit for none)","schema":{"type":"number"}},{"name":"doubleThreshold","in":"query","required":false,"description":"Hours per day after which double time starts (omit for none)","schema":{"type":"number"}},{"name":"weeklyThreshold","in":"query","required":false,"description":"Regular hours per week after which overtime starts (omit for none)","schema":{"type":"number"}},{"name":"rate","in":"query","required":false,"description":"Hourly rate, to compute pay","schema":{"type":"number"}},{"name":"otMultiplier","in":"query","required":false,"description":"Overtime pay multiplier (default 1.5, used only with rate)","schema":{"type":"number"}},{"name":"doubleMultiplier","in":"query","required":false,"description":"Double-time pay multiplier (default 2, used only with rate)","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"totalHours":{"type":["null","number"]},"regularHours":{"type":["null","number"]},"overtimeHours":{"type":["null","number"]},"doubleTimeHours":{"type":["null","number"]},"weeklyOvertimeAdded":{"type":["null","number"]},"perDay":{"type":["array","null"],"items":{"type":"object","properties":{"hours":{"type":["null","number"]},"regular":{"type":["null","number"]},"overtime":{"type":["null","number"]},"double":{"type":["null","number"]}}}},"regularPay":{"type":["null","number"]},"overtimePay":{"type":["null","number"]},"doubleTimePay":{"type":["null","number"]},"totalPay":{"type":["null","number"]},"otMultiplierUsed":{"type":["null","number"]},"doubleMultiplierUsed":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"47 hours: 40 regular, 7 overtime, 0 double time.","reasons":["Daily rule first: hours over the daily threshold are overtime, hours over the double threshold are double time.","Weekly rule second: regular hours beyond 40 become overtime, taken from the latest days, so no hour is counted as overtime twice."],"totalHours":47,"regularHours":40,"overtimeHours":7,"doubleTimeHours":0,"weeklyOvertimeAdded":0,"perDay":[{"hours":9,"regular":8,"overtime":1,"double":0},{"hours":10,"regular":8,"overtime":2,"double":0}],"regularPay":800,"overtimePay":210,"doubleTimePay":0,"totalPay":1010,"otMultiplierUsed":1.5,"doubleMultiplierUsed":2,"degraded":false,"notChecked":["whether the thresholds match any law, union agreement or contract (none are built in)","seventh-day rules, meal-break rules and exempt status","…1 more"],"source":"threshold arithmetic computed locally; every threshold and multiplier is the caller's","asOf":"2026-10-11T23:39:14.258Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/overtime"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/overtime"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/overtime"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/overtime"}}]}}},"/pay-periods":{"get":{"operationId":"pay_periods","summary":"Pay-period start and end dates for weekly, biweekly, semi-monthly or monthly payroll, from any reference date.","description":"Pay-period start and end dates for weekly, biweekly, semi-monthly or monthly payroll, from any reference date.","tags":["payroll","pay-period","calendar","dates"],"parameters":[{"name":"type","in":"query","required":true,"description":"weekly, biweekly, semi-monthly or monthly","schema":{"type":"string"}},{"name":"from","in":"query","required":false,"description":"Date YYYY-MM-DD; the list starts at the period containing it (default today UTC)","schema":{"type":"string"}},{"name":"anchor","in":"query","required":false,"description":"Required for weekly and biweekly: the first day of any known period, YYYY-MM-DD","schema":{"type":"string"}},{"name":"splitDay","in":"query","required":false,"description":"Semi-monthly only: day the second period starts, 2 to 28 (default 16: periods 1-15 and 16-end)","schema":{"type":"integer"}},{"name":"count","in":"query","required":false,"description":"Number of periods, 1 to 60 (default 6)","schema":{"type":"integer"}},{"name":"payDateLagDays","in":"query","required":false,"description":"Days after a period ends that pay is issued, 0 to 60 (adds payDate)","schema":{"type":"integer"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"type":{"type":["null","string"]},"containingPeriodStart":{"type":["null","string"]},"containingPeriodEnd":{"type":["null","string"]},"periods":{"type":["array","null"],"items":{"type":"object","properties":{"number":{"type":["null","number"]},"start":{"type":["null","string"]},"end":{"type":["null","string"]},"days":{"type":["null","number"]},"startWeekday":{"type":["null","string"]},"endWeekday":{"type":["null","string"]},"payDate":{"type":["null","string"]}}}},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"4 biweekly pay period(s) starting with the one containing 2026-10-11: 2026-09-28 to 2026-10-11.","reasons":["Periods are 14 days long, aligned to the anchor date.","End dates are inclusive."],"type":"biweekly","containingPeriodStart":"2026-09-28","containingPeriodEnd":"2026-10-11","periods":[{"number":1,"start":"2026-09-28","end":"2026-10-11","days":14,"startWeekday":"Monday","endWeekday":"Sunday","payDate":"2026-10-16"},{"number":2,"start":"2026-10-12","end":"2026-10-25","days":14,"startWeekday":"Monday","endWeekday":"Sunday","payDate":"2026-10-30"}],"degraded":false,"notChecked":["weekend or holiday adjustments to pay dates","your employer's actual cut-off rules","…1 more"],"source":"calendar arithmetic computed locally","asOf":"2026-10-11T23:39:14.523Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/pay-periods"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/pay-periods"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/pay-periods"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/pay-periods"}}]}}},"/tenure":{"get":{"operationId":"tenure","summary":"Age or tenure between two dates in years, months and days, plus total days, next anniversary and decimal years.","description":"Age or tenure between two dates in years, months and days, plus total days, next anniversary and decimal years.","tags":["tenure","age","dates","anniversary"],"parameters":[{"name":"from","in":"query","required":true,"description":"Start date (birth or hire date) YYYY-MM-DD","schema":{"type":"string"}},{"name":"to","in":"query","required":false,"description":"End date YYYY-MM-DD (default today UTC), not before from","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"years":{"type":["null","number"]},"months":{"type":["null","number"]},"days":{"type":["null","number"]},"totalMonths":{"type":["null","number"]},"totalDays":{"type":["null","number"]},"decimalYears":{"type":["null","number"]},"nextAnniversary":{"type":["null","string"]},"daysToNextAnniversary":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"7 year(s), 1 month(s), 11 day(s) from 2019-08-31 to 2026-10-11 (2598 days).","reasons":["Whole months are counted first; a start day missing from the target month clamps to its last day (31 Jan plus 1 month is 28 Feb, 29 Feb 2000 plus 26 years is 28 Feb 2026), then the leftover days are c…"],"years":7,"months":1,"days":11,"totalMonths":85,"totalDays":2598,"decimalYears":7.1131,"nextAnniversary":"2027-08-31","daysToNextAnniversary":324,"degraded":false,"notChecked":["time of day and time zone (dates are taken as written)","legal age conventions such as how a leap-day birthday is treated by a given law","…1 more"],"source":"calendar arithmetic computed locally (largest whole-month step whose month-end-clamped date does not pass the end date)","asOf":"2026-10-11T23:39:14.789Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/tenure"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/tenure"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/tenure"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/tenure"}}]}}},"/timesheet":{"get":{"operationId":"timesheet","summary":"Total hours from clock-in/out pairs with unpaid break deduction, optional rounding, per-day totals and overlap flags.","description":"Total hours from clock-in/out pairs with unpaid break deduction, optional rounding, per-day totals and overlap flags.","tags":["timesheet","hours","clock-in","payroll"],"parameters":[{"name":"entries","in":"query","required":true,"description":"Semicolon-separated in/out pairs, e.g. 2026-03-02T09:00/2026-03-02T17:30;2026-03-03T08:45/2026-03-03T17:00 (up to 200)","schema":{"type":"string"}},{"name":"breakMinutes","in":"query","required":false,"description":"Unpaid minutes deducted from every entry (default 0)","schema":{"type":"integer"}},{"name":"roundMinutes","in":"query","required":false,"description":"Round each entry's paid time to a multiple of this many minutes: 1, 5, 6, 10, 15, 30 or 60 (default 0 = exact)","schema":{"type":"integer"}},{"name":"roundMode","in":"query","required":false,"description":"nearest (default, halves round up), up or down","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"totalPaidMinutes":{"type":["null","number"]},"totalPaidHours":{"type":["null","number"]},"clock":{"type":["null","string"]},"entryCount":{"type":["null","number"]},"byDay":{"type":["null","object"],"properties":{"2026-03-02":{"type":["null","number"]},"2026-03-03":{"type":["null","number"]}}},"entries":{"type":["array","null"],"items":{"type":"object","properties":{"in":{"type":["null","string"]},"out":{"type":["null","string"]},"grossMinutes":{"type":["null","number"]},"paidMinutes":{"type":["null","number"]}}}},"warnings":{"type":["array","null"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"2 entries total 15.75 paid hours (15:45).","reasons":["Each entry's unpaid 30-minute break is deducted, then paid time is rounded nearest to 15 minutes.","Days are keyed by the clock-in date, so overnight shifts count toward the day they began."],"totalPaidMinutes":945,"totalPaidHours":15.75,"clock":"15:45","entryCount":2,"byDay":{"2026-03-02":8,"2026-03-03":7.75},"entries":[{"in":"2026-03-02T09:00","out":"2026-03-02T17:30","grossMinutes":510,"paidMinutes":480},{"in":"2026-03-03T08:45","out":"2026-03-03T17:00","grossMinutes":495,"paidMinutes":465}],"warnings":[],"degraded":false,"notChecked":["daylight saving changes (timestamps are local wall-clock time, every day is 24 hours)","whether the break and rounding rules match your policy or law","…1 more"],"source":"interval arithmetic computed locally","asOf":"2026-10-11T23:39:15.041Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/timesheet"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/timesheet"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/timesheet"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/timesheet"}}]}}},"/working-hours":{"get":{"operationId":"working_hours","summary":"Working hours between two timestamps under a weekly schedule with breaks and a holiday list.","description":"Working hours between two timestamps under a weekly schedule with breaks and a holiday list.","tags":["working-hours","schedule","sla","duration"],"parameters":[{"name":"start","in":"query","required":true,"description":"Local start YYYY-MM-DDTHH:MM (no zone)","schema":{"type":"string"}},{"name":"end","in":"query","required":true,"description":"Local end YYYY-MM-DDTHH:MM (no zone), not before start","schema":{"type":"string"}},{"name":"schedule","in":"query","required":true,"description":"Weekly windows, e.g. mon-fri 09:00-12:00 13:00-17:00; sat 09:00-13:00","schema":{"type":"string"}},{"name":"holidays","in":"query","required":false,"description":"Comma-separated holiday dates YYYY-MM-DD (no working time)","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"workingHours":{"type":["null","number"]},"workingMinutes":{"type":["null","number"]},"workingSeconds":{"type":["null","number"]},"clock":{"type":["null","string"]},"wallClockHours":{"type":["null","number"]},"perDay":{"type":["array","null"],"items":{"type":"object","properties":{"date":{"type":["null","string"]},"weekday":{"type":["null","string"]},"hours":{"type":["null","number"]},"note":{"type":["null","string"]}}}},"perDayTruncated":{"type":["boolean","null"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"3.5 working hour(s) (3:30) fall between the two timestamps.","reasons":["The wall-clock span is 43.5 hours; only time inside the scheduled windows counts.","1 holiday date(s) supplied; those days contribute no working time."],"workingHours":3.5,"workingMinutes":210,"workingSeconds":12600,"clock":"3:30:00","wallClockHours":43.5,"perDay":[{"date":"2026-03-02","weekday":"Monday","hours":2},{"date":"2026-03-03","weekday":"Tuesday","hours":0,"note":"holiday"}],"perDayTruncated":false,"degraded":false,"notChecked":["time zones and daylight saving changes (timestamps are local wall-clock time, every day is 24 hours)","whether your holiday list is complete","…1 more"],"source":"schedule intersection arithmetic computed locally","asOf":"2026-10-11T23:39:15.293Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/working-hours"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/working-hours"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/working-hours"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://work-time-calc.x402tookit.com/working-hours"}}]}}}}}