Update a rate calculation

Update mutable fields on a rate calculation. Omitted fields are left unchanged. Currently, supplying calculationGroups writes the requested groups and rows over the stored ones, matched by position. Stored groups or rows beyond the end of the supplied set remain in place. Whole-set replacement remains an unresolved behavior gap. Every group and row must include its caller-assigned id (422 if missing; no server-generated fallback). The single group must also include its selectionStrategy and carry at least one calculation row (422 if empty). Changing calculationGroups is blocked (409) while any engagement's WorkDefinition still references this rate calculation — name/metadata/externalId stay editable regardless.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Path Params
string
required
Body Params

Partial update — omitted fields are left unchanged. Currently, supplying calculationGroups writes the requested groups and rows over the stored ones, matched by position. Stored groups or rows beyond the end of the supplied set remain in place. Whole-set replacement remains an unresolved behavior gap. Every group and row must include its caller-assigned id (422 if missing; no server-generated fallback). New groups and rows must still carry their other required fields (server-validated; 422 otherwise). Explicit null clears externalId. Nullable fields on groups and rows are written as part of the supplied group; setting them to null is treated as omission and does not individually clear stored values.

string
length ≥ 1
string
enum

How the final amount is selected across calculationGroups[]. SingleGroup requires exactly one group. GreaterOf compares every group's candidate amount (for example commission vs minimum-wage floor) and chooses the greatest value — server-validated against calculationGroups.length, not a separate candidate list.

Allowed:
calculationGroups
array of objects
length ≤ 10
calculationGroups
string | null
metadata
object

Free-form key-value pairs. Max 50 keys; key length at most 40 characters; value length at most 500 characters. Where a list endpoint declares metadata filtering, it uses the QueryQL namespace via filter[metadata.{key}][eq]=value or filter[metadata.{key}][in][]=value. Endpoints that do not declare the dynamic Metadata filter do not support Metadata filtering.

Headers
string
length between 1 and 255
^[\x21-\x7e]{1,255}$

Optional idempotency token for authenticated POST and PATCH requests. Reusing the same key and body returns the cached response for 24 hours, except credential operations that explicitly document a 409 because one-time secret material is never cached; reusing it with a different body returns 409 IdempotencyKeyConflict. Use 1-255 printable ASCII characters.

string
^(?:[A-Za-z0-9_.]{22}|[a-f0-9]{24})$

Select the Account for an Account-scoped operation. A direct ServiceAccount API key MUST supply this header, and the target must be within the ServiceAccount owner's or Authorization grant's Account boundary. A Person bearer may select an Account on which it has an active Stakeholder, and an Account session may select its bound Account (or a descendant only when the session explicitly includes descendants).

string
enum
Defaults to application/json

Generated from available response content types

Allowed:
Responses

Language
Credentials
Bearer
JWT
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json
application/problem+json