contractorOps.history.rateBackfill.apply
Save agreement-derived hourly rate snapshots for explicitly selected imported timesheets after reviewing the preview. Supply each history row id and expectedRevision plus idempotencyKey. Rechecks the agreement and source row atomically; a changed, split-rate or ambiguous week fails without saving any row. Does not mark paid, prepare, approve or send a payout.
/api/v1/accounting/contractorOps.history.rateBackfill.applyPermissions
Who can call it
Retries
MCP
accounting_contractor_ops_history_rate_backfill_applyFields
rowsarray of objectsRequired1–500 items
idempotencyKeystringRequiredAny unique text you generate once per intended change, so a retried request only happens once. Send it as the Idempotency-Key header instead if you prefer; if you send both they must match.
8–200 characters
Example
curl https://app.getoatmilk.com/api/v1/accounting/contractorOps.history.rateBackfill.apply \
-H "Authorization: Bearer $OATMILK_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"rows": [
{
"id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"expectedRevision": 3
}
]
}'{
"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.history.rateBackfill.apply \
-H "Authorization: Bearer $OATMILK_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"rows": [
{
"id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"expectedRevision": 3
}
]
}'More in Contractors.