contractorOps.terms.hours.preview
Preview a focused hour-limit update, preserving every other current agreement term. hours is a patch in minutes; null removes a cap. For 5 hours weekly with flexible days, use dailyMaxMinutes:null, weeklyMaxMinutes:300. mode record_existing corrects terms already agreed; send_amendment changes the agreement through signatures. Returns current and proposed terms, guidance, basisTermsId, expectedBasisRevision, basisDate, effectiveFrom, blockers and next action. Weekly caps run Monday–Sunday, never pool across pay periods. No records change.
/api/v1/accounting/contractorOps.terms.hours.previewPermissions
Who can call it
Retries
MCP
accounting_contractor_ops_terms_hours_previewFields
contractorIdstring (ID)RequiredThe ID of a contractor, from contractors.list.
hoursobjectRequiredNo other fields
effectiveFromstring (date)modeenumRequiredrecord_existingsend_amendmentcompanySignerobjectNo other fields
Example
curl https://app.getoatmilk.com/api/v1/accounting/contractorOps.terms.hours.preview \
-H "Authorization: Bearer $OATMILK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contractorId": "4d5e6f7a-8b9c-4d0e-8f1a-2b3c4d5e6f7a",
"hours": {
"dailyMaxMinutes": 90
},
"mode": "record_existing"
}'{
"data": { … }
}Try it
Try it
Checks your input with this action’s real schema and answers like the API, with synthetic data. No key needed, and nothing changes.
curl https://app.getoatmilk.com/api/v1/accounting/contractorOps.terms.hours.preview \
-H "Authorization: Bearer $OATMILK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contractorId": "4d5e6f7a-8b9c-4d0e-8f1a-2b3c4d5e6f7a",
"hours": {
"dailyMaxMinutes": 90
},
"mode": "record_existing"
}'More in Contractors.