POST to /services/rest/record/v1/salesOrder with a JSON body representing the order header fields and a nested 'item' sublist array
Capture the 'id' from the response Location header or body to reference the record in subsequent calls
GET /services/rest/record/v1/salesOrder/{id} to retrieve the full record; append ?expandSubResources=true to inline sublist lines
PATCH /services/rest/record/v1/salesOrder/{id} with only the fields you want to change for a partial update
DELETE /services/rest/record/v1/salesOrder/{id} to remove the record, subject to any workflow or lock constraints
Handle 429 (rate-limit) and 409 (concurrency lock) responses with exponential backoff
Known gotchas
Sublist operations via REST use nested collection endpoints (e.g., /salesOrder/{id}/item/{lineId}); a full PATCH to the parent record body does not always replace sublist lines — check the current docs for sublist update semantics
Some fields are read-only or computed (status, tranid) and will be silently ignored or cause a 400 if sent on update
Transaction records that are approved or closed may be locked against modification; check the record's 'status' before attempting updates
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp