Contractors

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.

GETPOST/api/v1/accounting/contractorOps.terms.hours.preview

Permissions

accounting:read

Who can call it

admin, finance

Retries

Safe to retry: it only reads

MCP

accounting_contractor_ops_terms_hours_preview

Fields

  • contractorIdstring (ID)Required

    The ID of a contractor, from contractors.list.

  • hoursobjectRequired

    No other fields

  • effectiveFromstring (date)
  • modeenumRequired
    record_existingsend_amendment
  • companySignerobject

    No 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"
}'
Response
{
  "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.

POST/api/v1/accounting/contractorOps.terms.hours.preview
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.