Skip to main content

Move Object

A successful POST to a moves endpoint will return a modified request object, including additional information about the move or pair of moves.

For unsuccessful requests, please refer to Error Handling and Error Codes.

Additional Fields

For each individual move, the following new fields are included in the response:

  • move_uri - A URI string referencing the /moves resource for the associated move created

  • lane_uri - A URI string referencing the /lanes resource for the lane (pickup and delivery location pair) associated with the move created

  • status - The current status of the move

  • rooftop - The rooftop the move was created for

  • settled - A move will be marked as settled 7 days after being completed. This means that the move's charge (see charge object) has been finalized and the move is ready to be invoiced.

  • cancel_status - If a cancellation has been requested, the current status will be reflected here

  • pickup_started - Timestamp for when the pickup portion of the move was started

  • pickup_arrived - Timestamp for when the driver arrived at the pickup location

  • pickup_successful - Timestamp for when the pickup portion of the move was completed

  • delivery_started - Timestamp for when the delivery portion of the move was started

  • delivery_arrived - Timestamp for when the driver arrived at the delivery location

  • delivery_successful - Timestamp for when the delivery portion of the move was completed

  • tracking_link - URL to a live tracking map of the move

  • workflowset - The workflow set used to define pickup and delivery workflows to use on the move

  • earliest_available_time - The earliest time the move can be started based on the location's availability (Business hours, holidays, etc.)

  • message - If the earliest_available_time is affected by a holiday or other closure, a description of the closure will be included here

  • driver_name - The name of the driver assigned to the move, if one has been assigned

  • usecase_key - The use-case key describing the type of workflow this move is part of. See Usecase Keys below for possible values.

  • scenario_key - The scenario key from the dispatch scenario associated with this move. See Scenario Types below for possible values.

  • consumer_at_pickup - Boolean indicating whether the consumer is at the pickup location. true means the consumer's vehicle is being picked up from the consumer's location; false means the vehicle is at the dealership/service location. Set during move creation in the move planner. Defaults to false.

  • parent_scenario - Object containing the dispatch scenario this move belongs to, including all sibling moves in the scenario. See Parent Scenario Object below for details.

When a request is sent, the individual location fields are parsed, combined, and sent through Google's Places API in order to cleanse and retrieve a known, standardized location. For each location object within a move, the following new fields are included in the response for comparison:

  • lat - The latitude associated with the found location
  • lon - The longitude associated with the found location
  • google_place_id - The ID used by Google to identify the found location
  • location_id - The ID assigned to the location by HopDrive that can be used to retrieve information through the /locations resource
  • full_address - The full address as returned by the Google Places API, this can be compared to the fields on the request object to ensure accuracy

Usecase Keys

The usecase_key field indicates the type of workflow the move is part of.

KeyDescription
round-tripRound Trip
one-wayOne way
concierge-puConcierge Pickup
concierge-retConcierge Return
concierge-loaner-puConcierge + Loaner pickup
concierge-loaner-retConcierge + Loaner return
one-way-hangtagOne way with hangtag staged indicator
concierge-hangtagOne way concierge with hangtag return ready indicator
concierge-loaner-hangtagConcierge + loaner with hangtag return ready indicator
one-way-shuttleOne way move with a customer provided shuttle
one-way-hangtag-shuttleOne Way Shuttle with hangtag staged indicator

Parent Scenario Object

The parent_scenario object describes the dispatch scenario that the current move belongs to. A scenario is a planned sequence of moves that together accomplish a single unit of work (e.g., a concierge pickup with a loaner swap, or a round trip). Each move in a webhook payload is one step in that sequence.

Use parent_scenario to understand:

  • Where this move fits in the overall sequence (via cardinality, a zero-based index)
  • What the other moves in the scenario are and their roles (via the moves array)
  • Which move is the loaner vs the consumer vehicle in concierge-loaner scenarios (via consumer_type)

Fields

FieldTypeDescription
cardinalityintegerZero-based position of the current move within the scenario sequence
scenario_keystringThe scenario type key (see Scenario Execution Plans below)
movesarrayAll moves in the scenario, ordered by their position in the execution plan

Each entry in the moves array contains:

FieldTypeDescription
cardinalityintegerZero-based position of this move in the sequence
idintegerThe move ID
move_typestring"drive" or "ride"
usecase_keystringThe use case key for this move
pickup_timestring/nullTimestamp when pickup was started, or null if not yet started
consumer_at_pickupbooleanWhether the consumer is at the pickup location
consumer_typestring/null"loaner", "customer", or null for non-concierge moves

How to read the execution plan

The cardinality value (0, 1, 2) maps directly to the move's position in the scenario's execution plan. For example, in a concierge-loaner-pu scenario:

  • Cardinality 0 = Move 1 in the execution plan = Loaner vehicle move
  • Cardinality 1 = Move 2 in the execution plan = Concierge (consumer vehicle) move

By combining cardinality with the scenario_key, you can determine exactly what role each move plays. The consumer_type field ("loaner" or "customer") on concierge-loaner moves provides an additional explicit signal.

Example: Concierge + Loaner Pickup

In this scenario, a loaner vehicle is delivered to the consumer first, then the consumer's vehicle is picked up and driven to the dealership.

"parent_scenario": {
"cardinality": 0,
"scenario_key": "concierge-loaner-pu",
"moves": [
{
"cardinality": 0,
"id": 73637,
"move_type": "drive",
"usecase_key": "concierge-loaner-pu",
"pickup_time": "2026-03-28T00:14:00+00:00",
"consumer_at_pickup": false,
"consumer_type": "loaner"
},
{
"cardinality": 1,
"id": 73638,
"move_type": "drive",
"usecase_key": "concierge-loaner-pu",
"pickup_time": "2026-03-27T23:35:57+00:00",
"consumer_at_pickup": true,
"consumer_type": "customer"
}
]
}

In this example, the webhook is for move 73637 (cardinality 0), which is the loaner vehicle being delivered. Move 73638 (cardinality 1) is the consumer's vehicle being picked up.


Scenario Execution Plans

Each scenario defines an ordered execution plan of moves. The cardinality value in parent_scenario maps to the move's position in this plan (0 = Move 1, 1 = Move 2, etc.).

Move type legend:

  • Drive A — The primary drive move (the vehicle being transported for the customer)
  • Drive B — The secondary/return drive move in a round trip
  • Drive A/B — Either drive in a flexible-sequence round trip (can be performed in any order)
  • Ride — A rideshare for the driver to get to or from a location
  • Concierge — A drive of the consumer's vehicle
  • Loaner — A drive of the dealership's loaner vehicle
  • Shuttle — A shuttle ride (internal or customer-provided)

Concierge and Loaner Scenarios

Scenario KeyNameMove 1Move 2Notes
concierge-puConcierge with Vehicle at ConsumerRideConciergeSequenced so driver always starts at the dealership
concierge-retConcierge with Vehicle at DealershipConciergeRideSequenced so driver always starts at the dealership
concierge-pu-no-rideshareConcierge with Vehicle at Consumer with no RideshareConciergeNo rideshare before; driver goes directly to consumer location
concierge-ret-no-rideshareConcierge with Vehicle at Service with No RideshareConciergeNo rideshare after; driver returns independently
concierge-loaner-puConcierge + Loaner with Vehicle at ConsumerLoanerConciergeSequenced so driver always starts at the dealership
concierge-loaner-retConcierge + Loaner with Vehicle at DealershipConciergeLoanerSequenced so driver always starts at the dealership

One-Way Scenarios

Scenario KeyNameMove 1Move 2Move 3Notes
baseBase move (no ride needed)Drive A
stranded-no-rideshareStranded with no ridesDrive ADriver arranges their own return independently
stranded-rideshare-beforeRide before strandedRideDrive A
stranded-rideshare-afterStranded with ride afterDrive ARide
stranded-rideshare-bothStranded with ride on both sidesRideDrive ARide
stranded-shuttle-afterStranded with shuttle afterDrive AShuttleHopDrive internal shuttle
triangleTriangleRideDrive ARideRequires customer config enablement

Hangtag Scenarios

Hangtag scenarios are triggered when a hangtag is scanned, indicating a vehicle is staged or a concierge is ready for return.

Scenario KeyNameMove 1Move 2Notes
stranded-rideshare-afterOne-way hangtag with ride afterDrive ARideHangtag scanned indicating staged
stranded-rideshare-beforeOne-way hangtag ride beforeRideDrive AHangtag scanned indicating staged
concierge-puConcierge hangtagRideConciergeHangtag scanned indicating concierge ready for return
concierge-loaner-puConcierge + loaner hangtagLoanerConciergeHangtag scanned indicating concierge ready for return

Round Trip Scenarios

Scenario KeyNameMove 1Move 2Notes
round-tripRound trip (strict order)Drive ADrive BMoves must be performed in sequence
round-trip-flexRound trip (flexible order)Drive A/BDrive A/BMoves can be performed in any order
round-trip-rideshare-beforeRound trip with ride beforeRideDrive A
round-trip-rideshare-afterRound trip with ride afterDrive ARide
round-trip-rideshare-bothRound trip with rides on both sidesRideDrive ARide
round-trip-flex-rideshare-beforeFlexible round trip with ride beforeRideDrive A
round-trip-flex-rideshare-afterFlexible round trip with ride afterDrive ARide
round-trip-flex-rideshare-bothFlexible round trip with rides on both sidesRideDrive ARide

Shuttle and Internal Scenarios

Scenario KeyNameMove 1Move 2Notes
shuttle-linkerShuttle linkerDrive ALinks drivers between lanes to optimize group plans
shuttle-driveShuttle driver providing ridesDrive ADrive B
shuttle-runShuttle runMulti-stopShuttle driver executing a multi-stop passenger route
mobile-service-runMobile service runMulti-stopMobile technician executing a multi-stop service route
parts-delivery-routeParts delivery routeMulti-stopDelivery driver executing a multi-stop parts delivery route