---
title: "Update an existing unassigned stop"
method: PATCH
path: "/unassignedStops/{unassignedStopId}"
tags: ["Unassigned Stops"]
---

# Update an existing unassigned stop

`PATCH /unassignedStops/{unassignedStopId}`

## Request

- Base URL: `https://api.spoke.com/public/v1`
- URL: `https://api.spoke.com/public/v1/unassignedStops/{unassignedStopId}`
- Auth: HTTP basic
- TypeScript: <https://skmtc.dev/spoke/apis/spoke-api/docs/unassignedStops/:unassignedStopId/patch.ts> (a function with typed inputs; its response is checked against the schema)

Does not support updating a unassigned stop's location, nor the `clientId`. To do so, delete the unassignedStop and create a new one.

## Path parameters

- `unassignedStopId` string, required

## Request body

- object: The request body for updating an unassigned stop. All the values present in the request will update the unassigned stop value. If you wish to update only certain fields, only set those and do not set the others. Any fields not set will not be updated.
  - `recipient` object, nullable: Recipient information for this stop
    - `externalId` string, nullable: External ID of the recipient, as defined by the API user
    - `email` string, email, nullable: The email address of the recipient. Multiple emails are not supported.
    - `phone` string, nullable: Phone number of the recipient
    - `name` string, nullable: Name of the recipient
  - `orderInfo` object, nullable: Order information for this stop
    - `products` string[]: Products in this stop
    - `invoiceNumber` string, nullable: Invoice number
    - `sellerOrderId` string, nullable: Seller order ID
    - `sellerName` string, nullable: Seller name
    - `sellerWebsite` string, nullable: Seller website
  - `paymentOnDelivery` object, nullable: Payment on delivery (also known as "Cash on Delivery") data for this stop
    - `amount` integer, nullable: Amount *in minor units* (e.g. cents) to be collected upon delivery
    - `currency` 'AED' | 'ARS' | 'AUD' | 'BRL' | 'CAD' | 'CHF' | 'CLP' | 'CNY' | 'COP' | 'DKK' | 'EGP' | 'EUR' | 'GBP' | 'HKD' | 'HUF' | 'ILS' | 'INR' | 'JPY' | 'KRW' | 'MYR' | 'MXN' | 'NOK' | 'NZD' | 'PEN' | 'RON' | 'RUB' | 'SAR' | 'SEK' | 'SGD' | 'TRY' | 'USD' | 'UYU' | 'ZAR', nullable: Currency of the payment. Defaults to the team's currency.
  - `proofOfAttemptRequirements` object, nullable: Proof of attempt requirement settings for this stop
    - `enabled` boolean, nullable: Whether proof of attempt is required for this stop
  - `allowedDrivers` string[], nullable: Driver IDs that are allowed to be assigned to this stop. If not provided, the stop will be assigned to any available driver during optimization.
  - `activity` 'delivery' | 'pickup', nullable: Activity type
  - `optimizationOrder` 'first' | 'last' | 'default', nullable: The preferred order of this stop in the optimized route. If not provided or `"default"`, the stop will be placed in the optimal order, decided by the optimization algorithm. Otherwise it will be placed either `"first"` or `"last"`.
  - `packageCount` number, nullable: Number of packages in the stop
  - `weight` object, nullable: Weight information for this stop.
    - `amount` number, required: The weight amount for this stop.
    - `unit` 'kilogram' | 'pound' | 'metric-ton', required: The weight unit in which the amount is specified.
  - `notes` string, nullable: Notes for the stop
  - `barcodes` string[]: List of barcode IDs associated with this stop
  - `customProperties` object, nullable: Key-value pairs of custom stop properties for this stop. The keys must be unique and match a custom stop property defined in your team.
  - `timing` object, nullable
    - `timeWindows` object[]: Up to two ordered arrival windows for this stop. An empty array clears the windows. A single window may have one null bound; two windows must have both bounds set. Windows must not overlap or touch, and their total span must not exceed 24 hours.
      - `earliestAttemptTime` object, nullable, required: Time of day in hours and minutes. Use a 24 hour clock.
        - `hour` integer, required: Hour of the day
        - `minute` integer, required: Minute of the hour
      - `latestAttemptTime` object, nullable, required: Time of day in hours and minutes. Use a 24 hour clock.
        - `hour` integer, required: Hour of the day
        - `minute` integer, required: Minute of the hour
    - `earliestAttemptTime` object, nullable: Time of day in hours and minutes. Use a 24 hour clock.
      - `hour` integer, required: Hour of the day
      - `minute` integer, required: Minute of the hour
    - `latestAttemptTime` object, nullable: Time of day in hours and minutes. Use a 24 hour clock.
      - `hour` integer, required: Hour of the day
      - `minute` integer, required: Minute of the hour
    - `estimatedAttemptDuration` integer, nullable: Duration in seconds of the activity in this stop, only set if you want to override the default. This can be set up to 8 hours.
  - `depot` string, nullable: The Depot ID that this unassigned stop belongs to, in the format `depot/<id>`. If null, it will default to the team's main depot. If not provided, it will not be updated.

## Response `200`

The updated unassigned stop

- UnassignedStopSchema: An unassigned stop.
  - `id` string, required
  - `depot` string, required: The depot that this unassigned stop belongs to.
  - `address` object, required: The address of the stop.
    - `address` string, required: The address of the stop.
    - `addressLineOne` string, required: The first line of the address.
    - `addressLineTwo` string, required: The second line of the address.
    - `latitude` number, nullable, required: The latitude of the address in decimal degrees.
    - `longitude` number, nullable, required: The longitude of the address in decimal degrees.
    - `placeId` string, nullable, required: The identifier of the place corresponding to this stop on Google Places
    - `placeTypes` string[], required: Array of strings that is provided by the Google AutoCompleteAPI
  - `barcodes` string[], required: List of Barcode IDs associated with the stop.
  - `allowedDrivers` string[], required: The driver IDs that can be assigned to this stop.
  - `notes` string, nullable, required: Notes for the stop.
  - `packageCount` number, nullable, required: The number of packages.
  - `weight` object, nullable, required: Weight information for the stop.
    - `amount` number, required: The weight amount for this stop.
    - `unit` 'kilogram' | 'pound' | 'metric-ton', required: The weight unit in which the amount is specified (defined at team's capacity unit).
  - `orderInfo` object, required: The order information of the stop.
    - `products` string[], required: The products of the stop.
    - `invoiceNumber` string, nullable, required: Invoice number associated with the order.
    - `sellerName` string, nullable, required: Name of the seller where the order is from.
    - `sellerOrderId` string, nullable, required: Id of the seller where the order is from.
    - `sellerWebsite` string, nullable, required: Website of the seller where the order is from.
  - `recipient` object, required: The recipient of the stop.
    - `name` string, nullable, required: The name of the recipient.
    - `email` string, nullable, required: The email of the recipient.
    - `phone` string, nullable, required: The phone of the recipient.
    - `externalId` string, nullable, required: The external id of the recipient.
  - `activity` 'delivery' | 'pickup'
  - `trackingLink` string, nullable, required: The recipient tracking link.
  - `timing` object, required: The timing data of the stop.
    - `timeWindows` object[], required: Ordered arrival windows for this stop.
      - `earliestAttemptTime` TimeOfDaySchema, required: Time of day in hours and minutes. Uses a 24 hour clock.
        - `hour` integer, required: Hour of the day
        - `minute` integer, required: Minute of the hour
      - `latestAttemptTime` TimeOfDaySchema, required: Time of day in hours and minutes. Uses a 24 hour clock.
        - `hour` integer, required: Hour of the day
        - `minute` integer, required: Minute of the hour
    - `estimatedAttemptDuration` number, nullable, required: Time that the driver estimates to spend on the stop to do his job (deliver a parcel, visit a client, etc) in seconds.
    - `earliestAttemptTime` TimeOfDaySchema, required: Time of day in hours and minutes. Uses a 24 hour clock.
      - `hour` integer, required: Hour of the day
      - `minute` integer, required: Minute of the hour
    - `latestAttemptTime` TimeOfDaySchema, required: Time of day in hours and minutes. Uses a 24 hour clock.
      - `hour` integer, required: Hour of the day
      - `minute` integer, required: Minute of the hour
  - `optimizationOrder` 'first' | 'last' | 'default'
  - `paymentOnDelivery` object, nullable, required: The payment due upon delivery also known as "Cash on Delivery".
    - `amount` integer, nullable, required: The amount *in minor units* (e.g. cents) to be collected upon delivery.
    - `currency` string, required: The payment's currency in ISO 4217 standard.
  - `proofOfAttemptRequirements` object, required: The proof of attempt requirements of the stop.
    - `enabled` boolean, nullable, required: Whether the proof of attempt is enabled.This only works if the team subscription has access to proof of delivery
  - `customProperties` object, nullable, required: Custom properties of the stop, can be used to store additional information.
  - `clientId` string, nullable, required: The associated Client ID of the Spoke Connect

## Other responses

- `400`: The request has errors. Either syntactic or semantic
- `401`: Unauthorized
- `403`: The request contains fields that are not supported by your team subscription.
- `404`: Not Found
- `422`: Vehicle capacity mode is disabled in the team's settings
- `500`: An internal server error occurred
- `default`: The default error model

---

[API](https://skmtc.dev/spoke/apis/spoke-api.md) - [All operations](https://skmtc.dev/spoke/apis/spoke-api/llms.txt) - [OpenAPI document](https://skmtc.dev/spoke/apis/spoke-api/revisions/a09d9194ae1c?raw)
