EasyRoutes API

Update route end tasks

PUT
/routes/{routeId}/end/tasks

Updates the tasks required to complete a route by route ID. This is a full replacement: the entire list of tasks on the route end is replaced with the task templates provided in the request body, so existing tasks not included in the request will be removed. Task and item IDs are always regenerated by the server, and any existing completion state, input, or timestamps are cleared, since only the driver (via the driver app) can mark a task or item complete or provide input. The route must have an end location and must not be archived. The response returns the full updated route.

Authorization

bearerAuth
AuthorizationBearer <token>

Access token from /authenticate

In: header

Path Parameters

routeId*string

The ID of the route to update end tasks.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

[index: integer]?

A template for creating tasks at a stop. Task templates may have one or more items for CHECKBOXES or RADIO_BUTTONS. Imported stops may have task templates that are used to create tasks when the stop is added to a route.

Response Body

application/json

application/json

curl -X PUT "https://example.com/routes/rte-123e4567-e89b-12d3-a456-426614174000/end/tasks" \  -H "Content-Type: application/json" \  -d '[    {}  ]'
{  "id": "rte-123e4567-e89b-12d3-a456-426614174000",  "name": "Morning route",  "driver": {    "id": "drv-123e4567-e89b-12d3-a456-426614174000",    "firstName": "John",    "lastName": "Doe",    "phone": "+14265551000",    "status": "ACTIVE"  },  "start": {    "address": {      "address1": "123 Main St",      "address2": "Apt 3B",      "city": "New York",      "provinceCode": "NY",      "countryCode": "US",      "zip": "10001"    },    "tasks": [      {        "id": "tsk-123e4567-e89b-12d3-a456-426614174000",        "title": "Delivery checklist",        "type": "TEXT_INPUT",        "items": [],        "input": {          "value": "020123456789",          "updatedAt": "2026-03-30T13:00:00Z",          "inputMethod": "SCANNED"        },        "requiredToMarkStopAsDelivered": true,        "requiredToMarkStopAsAttempted": true      }    ],    "status": "STARTED",    "updatedStart": "2026-03-30T09:05:00Z",    "scheduledStart": "2026-03-30T09:00:00Z",    "photos": [      {        "id": "att-123e4567-e89b-12d3-a456-426614174000",        "createdAt": "2026-03-30T09:05:00Z",        "url": "https://example.com/stop-attachment/attachment-2025-06-03-1"      }    ]  },  "end": {    "address": {      "address1": "123 Main St",      "address2": "Apt 3B",      "city": "New York",      "provinceCode": "NY",      "countryCode": "US",      "zip": "10001"    },    "tasks": [      {        "id": "tsk-123e4567-e89b-12d3-a456-426614174000",        "title": "Delivery checklist",        "type": "TEXT_INPUT",        "items": [],        "input": {          "value": "020123456789",          "updatedAt": "2026-03-30T13:00:00Z",          "inputMethod": "SCANNED"        },        "requiredToMarkStopAsDelivered": true,        "requiredToMarkStopAsAttempted": true      }    ],    "plannedArrival": "2026-03-30T17:00:00Z",    "distanceMeters": 1234.56,    "updatedArrival": "2026-03-30T17:05:00Z",    "status": "COMPLETED",    "photos": [      {        "id": "att-123e4567-e89b-12d3-a456-426614174000",        "createdAt": "2026-03-30T09:05:00Z",        "url": "https://example.com/stop-attachment/attachment-2025-06-03-1"      }    ]  },  "stops": [    {      "id": "rst-123e4567-e89b-12d3-a456-426614174000",      "type": "DELIVERY",      "deliveryStatus": "ATTEMPTED_DELIVERY",      "breakStatus": "COMPLETED",      "updatedAt": "2026-03-30T13:15:00Z",      "duration": "300s",      "plannedArrival": "2026-03-30T13:00:00Z",      "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": 40.7128,        "longitude": -74.006      },      "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": "2026-03-30T09:05:00Z",          "url": "https://example.com/stop-attachment/attachment-2025-06-03-1"        }      ],      "proofOfDeliverySignatures": [        {          "id": "att-123e4567-e89b-12d3-a456-426614174000",          "createdAt": "2026-03-30T09:05:00Z",          "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": "2026-03-30T13:00:00Z",            "inputMethod": "SCANNED"          },          "requiredToMarkStopAsDelivered": true,          "requiredToMarkStopAsAttempted": true        }      ],      "priority": 8,      "importedStopId": "ist-123e4567-e89b-12d3-a456-426614174000",      "orderName": "#1234",      "distanceMeters": 123.45,      "updatedArrival": "2026-03-30T13:05:00Z",      "timeWindows": [        {          "start": {            "hours": 9          },          "end": {            "hours": 17          }        }      ],      "deliveryDate": {        "year": 2025,        "month": 12,        "day": 16      },      "attributes": [        {          "key": "color",          "value": "blue"        }      ],      "clientStopId": "test-order-1234",      "tags": [        "foo",        "bar"      ],      "attemptedReason": "NOT_AVAILABLE",      "attemptedNote": "Customer did not answer the door.",      "customerRating": {        "rating": 5,        "comment": "Excellent delivery",        "createdAt": "2026-03-30T18:00:00Z"      },      "customSignatureDisclosure": "I acknowledge that I have received this delivery.",      "shopifyOrder": {        "orderNote": "Customer has paid.",        "customerNote": "Leave at door."      },      "proofOfDeliveryBarcodes": [        {          "value": "123456789012",          "createdAt": "2026-03-30T13:10:00Z"        }      ],      "proofOfDeliveryBarcodeIssues": [        {          "reason": "ITEM_MISSING",          "note": "Item was not packed.",          "createdAt": "2026-03-30T13:10:00Z"        }      ]    }  ],  "createdAt": "2026-03-29T08:00:00Z",  "updatedAt": "2026-03-30T13:15:00Z",  "archivedAt": "2026-04-05T00:00:00Z",  "scheduledFor": "2026-03-30T09:00:00Z",  "totalDistanceMeters": 2387.2,  "totalItemQuantity": 50,  "totalItemGrams": "6000",  "optimized": true,  "dispatchedUntil": "2026-03-30T20:00:00Z",  "note": "Fragile items.",  "tags": [    "foo",    "bar"  ],  "defaultStopDuration": "300s",  "maxDuration": "28800s",  "maxStops": 50,  "maxItemCount": 200,  "maxKilograms": 500,  "avoidTolls": true,  "avoidUTurns": true,  "speedFactor": 0.8,  "vehicle": {    "id": "veh-123e4567-e89b-12d3-a456-426614174000",    "name": "Delivery Van 1",    "make": "Ford",    "model": "Transit",    "year": 2023,    "type": "CARGO_VAN",    "vin": "1FTBW2CM5NKA12345",    "license": "ABC-1234",    "isArchived": false,    "createdTimestamp": "2026-07-30T12:00:00Z"  }}
{  "code": 0,  "message": "string",  "details": [    {      "@type": "string"    }  ]}