Load Management

Patch a load

Apply one or more patch operations to an existing load using a JSON Patch-inspired format (RFC 6902).

Each operation targets a specific field by JSON Pointer path and specifies how to change it.

Operations are applied to the stored load and the merged result is then validated as a whole. A patch can therefore be rejected because of fields it did not touch. Most commonly, replacing /status with CUSTOMER_CONFIRMED or a later status fails when the stored route stops have no appointment windows — see Load Status Validation.

Supported operations

opDescription
addSet a value or insert into an array at a specific index.
removeRemove a value or array element.
replaceReplace an existing value.
append(Custom) Append an item to the end of an array.
upsert(Custom) Update an existing array element matching the where condition, or insert a new one if no match is found.

Allowed paths

Operations are validated against an allowlist of supported paths. Attempts to modify other paths will be rejected.

pathSupported operationsValue example
/statusadd, replace"DISPATCHED"
/modeadd, replace"FTL"
/loadTypeadd, replace"SPOT"
/equipmentadd, replace"DRY_VAN"
/equipmentDescriptionadd, replace"53ft Dry Van"
/commodityadd, replace"Electronics"
/serviceadd, replace"STANDARD"
/targetRateadd, replace1250.00
/maxRateadd, replace3000.00
/totalRateadd, replace2750.00
/highValueAmountadd, replace50000
/totalMilesadd, replace1200
/tarpSizeadd, replace"40x48"
/customerNameadd, replace"Acme Corp"
/customerContactadd, replace"Jane Smith"
/customerNotesadd, replace"Call before delivery"
/customerIdadd, replace"ACME-001"
/isPostedToDATadd, replacetrue
/bidExpirationadd, replace"2025-08-21T12:34:56Z"
/lastLocationUpdateadd, replace"2025-10-15T20:20:00Z"
/weightadd, replace{"value": 45000, "unit": "LB"}
/dimensionsadd, replace{"lengthInches": 600, "widthInches": 96, "heightInches": 108}
/minimumTemperatureadd, replace{"value": 32, "unit": "F"}
/maximumTemperatureadd, replace{"value": 68, "unit": "F"}
/minimumBulkHeadTemperatureadd, replace{"value": 35, "unit": "F"}
/maximumBulkHeadTemperatureadd, replace{"value": 65, "unit": "F"}
/externalTrackingStatusadd, replace{"source": "MACROPOINT", "code": "READY"}
/customDataadd, replace{"key": "value"}
/notesadd, remove, append, upsert{"text": "Driver is 30 min out"}
/accessorialsadd, remove, append, upsert"HAZMAT"
/referenceNumbersadd, remove, append, upsert{"name": "PO_NUMBER", "value": "PO-12345"}
/trackingEventsadd, remove, append, upsert{"eventType": "PICKED_UP", "eventSource": "CARRIER_API", "eventUtc": "2025-08-21T12:34:56Z"}
/bidCustomValuesadd, remove, append, upsert{"name": "rush", "value": "true"}
/commodityItemsadd, remove, append, upsert{"quantity": 10, "description": "boxes"}
/routeadd, remove, append, upsert{"sequence": 1, "stopActivity": "PICKUP"}
/carrieradd, remove, replaceadd: assign a carrier when the load has none.<br>replace: replace the carrier already on the load.<br>Both use value shaped as LoadPatchCarrier.<br>remove: unassign the carrier (omit value).
/carrier/driversappend, replaceappend: one LoadPatchCarrierDriver.<br>replace: array of the same schema (replaces the full drivers list).
/carrier/contactsappend, replaceappend: one LoadPatchCarrierContact.<br>replace: array of the same schema (replaces the full contacts list).

Examples

Replace a simple field:

{ "op": "replace", "path": "/status", "value": "IN_TRANSIT" }

Append to an array:

{ "op": "append", "path": "/notes", "value": { "text": "Driver is 30 min out" } }

Upsert an array element (update stop 1 if it exists, insert if not):

{ "op": "upsert", "path": "/route", "value": { "sequence": 1, "stopActivity": "PICKUP" }, "where": { "sequence": 1 } }

Assign carrier on load:

{
  "op": "add",
  "path": "/carrier",
  "value": {
    "carrierId": "tms-carrier-42",
    "name": "Acme Trucking",
    "dotNumber": 1234567,
    "drivers": [{ "id": "drv-1", "name": "Driver One", "phone": "+12081234567" }],
    "contacts": [
      { "role": "DISPATCHER", "name": "Dispatch", "email": "dispatch@example.com" },
      { "role": "AP_REP", "name": "AP", "email": "ap@example.com" }
    ]
  }
}

Clear carrier from load:

{ "op": "remove", "path": "/carrier" }

Append a driver:

{
  "op": "append",
  "path": "/carrier/drivers",
  "value": {
    "id": "drv-2",
    "name": "Jane Driver",
    "phone": "+12081234568",
    "phoneExtension": "101"
  }
}

Replace carrier contacts:

{
  "loadReference": "LOAD-12345",
  "operations": [
    {
      "op": "replace",
      "path": "/carrier/contacts",
      "value": [
        {
          "id": "contact-dispatch-1",
          "role": "DISPATCHER",
          "name": "Night dispatch",
          "email": "dispatch@example.com",
          "phone": "+12081234569",
          "phoneExtension": "202"
        },
        {
          "id": "contact-ap-1",
          "role": "AP_REP",
          "name": "Accounts payable",
          "email": "ap@example.com",
          "phone": "+12081234570",
          "phoneExtension": "303"
        }
      ]
    }
  ]
}
patch/v2/loads

Request

Request body

loadReferencestring required

The load number (brokerage load ID) of the load to patch.

Example request

{
  "loadReference": "LOAD-12345",
  "operations": [
    {
      "path": "/status"
    }
  ]
}

Response

Load patched successfully

Changes

No recorded changes to this operation across all 1 revision of this API.