EasyRoutes API

Update route stop

PATCH
/routes/{routeId}/stops/{stopId}

Updates an imported stop on a route by route ID and stop ID. Only stops that were previously imported via ImportStops (i.e. stops with an importedStopId) can be updated through this endpoint; stops created from Shopify orders, saved stops, or manually created stops cannot. This is a partial update: provide the fields to change in routeStop and list their paths in updateMask. Only the paths listed in updateMask are applied; omitted fields are left unchanged. The route must not be archived, though it may be in progress or completed, so it is up to the caller to decide when it is appropriate to update a stop.

Authorization

bearerAuth
AuthorizationBearer <token>

Access token from /authenticate

In: header

Path Parameters

routeId*string

The ID of the route to update the stop on.

stopId*string

The ID of the stop to update.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X PATCH "https://example.com/routes/rte-123e4567-e89b-12d3-a456-426614174000/stops/rst-123e4567-e89b-12d3-a456-426614174000" \  -H "Content-Type: application/json" \  -d '{    "routeStop": {},    "updateMask": "string"  }'
{  "id": "rst-123e4567-e89b-12d3-a456-426614174000",  "type": "DELIVERY",  "deliveryStatus": "ATTEMPTED_DELIVERY",  "breakStatus": "COMPLETED",  "updatedAt": "2019-08-24T14:15:22Z",  "duration": "string",  "plannedArrival": "2019-08-24T14:15:22Z",  "note": "Leave at door.",  "address": {    "address1": "123 Main St",    "address2": "Apt 3B",    "city": "New York",    "provinceCode": "NY",    "countryCode": "US",    "zip": "10001"  },  "contact": {    "firstName": "John",    "lastName": "Doe",    "company": "Roundtrip Systems Inc",    "phone": "+14265551000",    "email": "john.doe@roundtrip.ai"  },  "plannedCoordinates": {    "latitude": 0.1,    "longitude": 0.1  },  "items": [    {      "name": "Bananas",      "quantity": 5,      "grams": 500,      "sku": "BANANA-001"    }  ],  "source": "IMPORTED_STOP",  "shopifyOrderId": "6229749334323",  "savedStopId": "sst-123e4567-e89b-12d3-a456-426614174000",  "deliveredCoordinates": {    "latitude": 0.1,    "longitude": 0.1  },  "proofOfDeliveryNote": "Left at door.",  "proofOfDeliveryPhotos": [    {      "id": "att-123e4567-e89b-12d3-a456-426614174000",      "createdAt": "2019-08-24T14:15:22Z",      "url": "https://example.com/stop-attachment/attachment-2025-06-03-1"    }  ],  "proofOfDeliverySignatures": [    {      "id": "att-123e4567-e89b-12d3-a456-426614174000",      "createdAt": "2019-08-24T14:15:22Z",      "url": "https://example.com/stop-attachment/attachment-2025-06-03-1"    }  ],  "tasks": [    {      "id": "tsk-123e4567-e89b-12d3-a456-426614174000",      "title": "Delivery checklist",      "type": "TEXT_INPUT",      "items": [],      "input": {        "value": "020123456789",        "updatedAt": "2019-08-24T14:15:22Z",        "inputMethod": "SCANNED"      },      "requiredToMarkStopAsDelivered": true,      "requiredToMarkStopAsAttempted": true    }  ],  "priority": 8,  "importedStopId": "ist-123e4567-e89b-12d3-a456-426614174000",  "orderName": "#1234",  "distanceMeters": 123.45,  "updatedArrival": "2019-08-24T14:15:22Z",  "timeWindows": [    {      "start": {        "hours": 13,        "minutes": 37,        "seconds": 16      },      "end": {        "hours": 13,        "minutes": 37,        "seconds": 16      }    }  ],  "deliveryDate": {    "year": 2019,    "month": 11,    "day": 15  },  "attributes": [    {      "key": "delivery_date",      "value": "2025-12-16"    }  ],  "clientStopId": "test-order-1234",  "tags": [    "foo",    "bar"  ],  "attemptedReason": "NOT_AVAILABLE",  "attemptedNote": "Customer did not answer the door.",  "customerRating": {    "rating": 5,    "comment": "Excellent delivery",    "createdAt": "2019-08-24T14:15:22Z"  },  "customSignatureDisclosure": "I acknowledge that I have received this delivery.",  "shopifyOrder": {    "orderNote": "Customer has paid.",    "customerNote": "Leave at door."  },  "proofOfDeliveryBarcodes": [    {      "value": "string",      "createdAt": "2019-08-24T14:15:22Z"    }  ],  "proofOfDeliveryBarcodeIssues": [    {      "reason": "ITEM_MISSING",      "note": "Item was not packed.",      "createdAt": "2019-08-24T14:15:22Z"    }  ]}
{  "code": 0,  "message": "string",  "details": [    {      "@type": "string"    }  ]}