Saves stop and product updates for one or more stops on a route. Handles stop status, product counts, OSD entries, overage items, driver comments, and signatures.
Endpoint: PUT /api/route/stop
Authentication: Required — headers: employee_id, api_token
Note (Autoclose): If stop id: 999 is submitted with arrived: true, a 10-minute server-side timer starts. When it fires, stop 999 is marked complete (PDSTATUS = 'C'), signaling the route is done.
Note (Overage items): Items in overage_items use OSD codes 85 or 86 and carry a barcode field for the unexpected product's scanned barcode. Standard OSD entries in osd_data (non-85/86 codes) are keyed to the product by its id and do not require a separate barcode field.
Request body:
{
"id": "17140",
"facility": "011",
"week_end": "20251031",
"stops": [
{
"id": 258,
"arrived": false,
"updates": {
"status": "C",
"followup_reason_code": "",
"start_delivery_time": "2025-10-31T10:00:00Z",
"end_delivery_time": "2025-10-31T10:15:00Z",
"delivery_latitude": "41.8781",
"delivery_longitude": "-87.6298",
"delivered_by_driver_id": "T0048",
"store_emp_id": "EMP001",
"store_emp_name": "JOHN DOE",
"driver_comments": "Left at dock",
"skip_refuse_reason_code": "",
"skip_refuse_timestamp": "",
"skip_refuse_driver_comment": "",
"signature_id": "",
"osd_emails": [],
"overage_items": [
{ "barcode": "012345678901", "osd_code": "85", "quantity": 1, "comment": "", "images_id": "" }
]
},
"products": [
{
"id": "ITEM001",
"invoice": "0806591",
"updates": {
"accounting_complete": true,
"delivered": 5,
"returned": 0,
"delivered_pallets": null,
"osd_data": [],
"image_ids": null
},
"action": {
"updates": { "delivered": 5, "osd_data": [] },
"type": "collect",
"open": false,
"open_action": null,
"item_name": null,
"quantity": 5
}
}
],
"collections": []
}
]
}
Result:
...
Marks a stop as skipped or refused.
Endpoint: PUT /api/route/stop/skip-refuse
Authentication: Required — headers: employee_id, api_token
Required body fields: route_id, stop_id
Result:
...