---
title: "Compare an optimization run with the previous run"
method: GET
path: "/v1/activities/{id}/unassigned-comparison"
tags: ["Optimization Run Comparison"]
---

# Compare an optimization run with the previous run

`GET /v1/activities/{id}/unassigned-comparison`

## Request

- Base URL: `https://api.sandbox.usenash.com`
- URL: `https://api.sandbox.usenash.com/v1/activities/{id}/unassigned-comparison`
- Auth: none declared

Compares a completed route optimization run that left orders unassigned with the previous applied run of the same store, pick shift and target day. Returns the field-level difference of the solver input, the dropped orders, and the cause classes that match. An expected non-result (no dropped orders, no previous run, no stored solver input) is a 200 with its own `outcome`.

## Path parameters

- `id` string, required: Activity id

## Response `200`

OK

- UnassignedComparison
  - `schema_version` 'unassigned-comparison/v1'
  - `outcome` 'compared' | 'no_dropped_orders' | 'no_previous_run' | 'input_missing', required
  - `current_run` RunRef, required
    - `activity_id` string, required
    - `completed_at` string, date-time, nullable, required
    - `solver` string, nullable, required
    - `result_cached` boolean, nullable, required
    - `trigger` 'scheduled' | 'ad_hoc' | 'shift_change' | 'not_recorded': How a run was started, read from the stored `input_data` and the activity's schedule column.
    - `timezone` string, nullable
    - `time_anchor` string, date-time, nullable
    - `time_anchor_local` string, date-time, nullable
    - `units` object, nullable
    - `capacity_dimensions` string[], nullable
    - `capacity_dimensions_source` 'recorded' | 'inferred_from_current_preferences' | 'unknown': Where the names of the capacity and quantity positions of a run come from.
  - `previous_run` RunRef, required
    - `activity_id` string, required
    - `completed_at` string, date-time, nullable, required
    - `solver` string, nullable, required
    - `result_cached` boolean, nullable, required
    - `trigger` 'scheduled' | 'ad_hoc' | 'shift_change' | 'not_recorded': How a run was started, read from the stored `input_data` and the activity's schedule column.
    - `timezone` string, nullable
    - `time_anchor` string, date-time, nullable
    - `time_anchor_local` string, date-time, nullable
    - `units` object, nullable
    - `capacity_dimensions` string[], nullable
    - `capacity_dimensions_source` 'recorded' | 'inferred_from_current_preferences' | 'unknown': Where the names of the capacity and quantity positions of a run come from.
  - `dropped_orders` DroppedOrder[], required
    - `order_id` string, required
    - `leg_ids` string[], required
    - `reasons` string[], required
    - `detail_codes` integer[], required
    - `nash_diagnosis` unknown
    - `previous_state` 'routed' | 'unassigned' | 'absent', required: What the previous run did with an order that the current run dropped.
    - `causes` UnassignedCause[], required
    - `primary_cause` 'capabilities_violation_only' | 'fewer_vans' | 'vehicle_constraint_tightened' | 'configuration_changed' | 'dropped_order_changed' | 'demand_added' | 'other_orders_changed' | 'demand_removed' | 'vehicle_constraint_loosened' | 'more_vans' | 'no_input_change', required: Cause classes. Declaration order is the order in which the rules apply, except that for an order the previous run routed, a matching fleet rule (`fewer_vans`, `vehicle_constraint_tightened`) ranks above `capabilities_violation_only`.
    - `quantities` DimensionLoad[]
      - `position` integer, required
      - `dimension` string, nullable, required
      - `unit` string, nullable, required
      - `quantity` number, nullable, required
      - `largest_van_capacity` number, nullable, required
      - `exceeds_every_van` boolean, nullable, required
    - `exceeds_every_van_in` string[]
    - `delivery_window` LocalWindow: A time window as the solver's hour offsets and, when the anchor and zone are known, the store's clock time.
      - `start_hours` number, nullable, required
      - `end_hours` number, nullable, required
      - `start_local` string, date-time, nullable, required
      - `end_local` string, date-time, nullable, required
    - `assignment_priority` integer, nullable
    - `assignment_priority_label` 'highest' | 'high' | 'medium' | 'low': The `AssignmentPriority` names: priority 0 is the highest and 3 the lowest.
    - `overlapping_routed_orders` OverlappingRoutedOrders: Orders the current run routed whose drop-off window overlaps the dropped order's. A routed order's window is the one its route serves, which is an alternative window when the solver routed one. The priority counts compare each routed order with the dropped one and leave out an order whose priority or the dropped order's is unknown, so they can sum to less than `count`.
      - `count` integer, required
      - `higher_priority` integer, required
      - `same_priority` integer, required
      - `lower_priority` integer, required
      - `examples` OverlapExample[], required
        - `order_id` string, required
        - `assignment_priority` integer, nullable, required
        - `delivery_window` LocalWindow, required: A time window as the solver's hour offsets and, when the anchor and zone are known, the store's clock time.
          - `start_hours` number, nullable, required
          - `end_hours` number, nullable, required
          - `start_local` string, date-time, nullable, required
          - `end_local` string, date-time, nullable, required
  - `newly_dropped_order_ids` string[], required
  - `carried_over_order_ids` string[], required
  - `orders` OrdersDiff, required
    - `previous_order_count` integer, required
    - `current_order_count` integer, required
    - `added_order_ids` string[], required
    - `removed_order_ids` string[], required
    - `changed` OrderChange[], required
      - `order_id` string, required
      - `categories` OrderFieldCategory[], required
      - `changes` FieldChange[], required
        - `path` string, required
        - `before` unknown
        - `after` unknown
        - `dimension` string, nullable
        - `unit` string, nullable
        - `before_local` string, date-time, nullable
        - `after_local` string, date-time, nullable
        - `before_orders` number, nullable
        - `after_orders` number, nullable
      - `assignment_priority` integer, nullable
      - `delivery_window` LocalWindow: A time window as the solver's hour offsets and, when the anchor and zone are known, the store's clock time.
        - `start_hours` number, nullable, required
        - `end_hours` number, nullable, required
        - `start_local` string, date-time, nullable, required
        - `end_local` string, date-time, nullable, required
  - `vehicles` VehiclesDiff, required
    - `previous_vans` integer, required
    - `current_vans` integer, required
    - `previous_order_slots` integer, nullable, required
    - `current_order_slots` integer, nullable, required
    - `previous_retained_order_slots` integer, nullable, required
    - `current_retained_order_slots` integer, nullable, required
    - `order_slots_unit` string, nullable
    - `previous_order_slots_orders` number, nullable
    - `current_order_slots_orders` number, nullable
    - `added_type_ids` string[], required
    - `removed_type_ids` string[], required
    - `changed` VehicleTypeChange[], required
      - `vehicle_type_id` string, required
      - `changes` VehicleFieldChange[], required
        - `path` string, required
        - `before` unknown
        - `after` unknown
        - `dimension` string, nullable
        - `unit` string, nullable
        - `before_local` string, date-time, nullable
        - `after_local` string, date-time, nullable
        - `before_orders` number, nullable
        - `after_orders` number, nullable
        - `direction` 'tightened' | 'loosened' | 'not_assessed', required
    - `current_fleet` VanFacts[]
      - `vehicle_type_id` string, required
      - `count` integer, required
      - `capacity` DimensionValue[], required
        - `position` integer, required
        - `dimension` string, nullable, required
        - `unit` string, nullable, required
        - `value` number, nullable, required
      - `max_orders_per_route` number, nullable, required
      - `orders_per_route` number, nullable
      - `shift_start_local` string, date-time, nullable, required
      - `shift_end_local` string, date-time, nullable, required
  - `breaks` BreakChange[], required
    - `break_id` string, required
    - `kind` 'added' | 'removed' | 'changed', required
    - `owner_vehicle_type_ids` string[], required
    - `owned_by_retained_type` boolean, required
    - `changes` FieldChange[], required
      - `path` string, required
      - `before` unknown
      - `after` unknown
      - `dimension` string, nullable
      - `unit` string, nullable
      - `before_local` string, date-time, nullable
      - `after_local` string, date-time, nullable
      - `before_orders` number, nullable
      - `after_orders` number, nullable
  - `configuration` ConfigurationDiff, required
    - `solver_parameters` FieldChange[], required
      - `path` string, required
      - `before` unknown
      - `after` unknown
      - `dimension` string, nullable
      - `unit` string, nullable
      - `before_local` string, date-time, nullable
      - `after_local` string, date-time, nullable
      - `before_orders` number, nullable
      - `after_orders` number, nullable
    - `units` FieldChange[], required
      - `path` string, required
      - `before` unknown
      - `after` unknown
      - `dimension` string, nullable
      - `unit` string, nullable
      - `before_local` string, date-time, nullable
      - `after_local` string, date-time, nullable
      - `before_orders` number, nullable
      - `after_orders` number, nullable
    - `start_depots` KeyedChange[], required
      - `id` string, required
      - `kind` 'added' | 'removed' | 'changed', required
      - `changes` FieldChange[], required
        - `path` string, required
        - `before` unknown
        - `after` unknown
        - `dimension` string, nullable
        - `unit` string, nullable
        - `before_local` string, date-time, nullable
        - `after_local` string, date-time, nullable
        - `before_orders` number, nullable
        - `after_orders` number, nullable
    - `end_depots` KeyedChange[], required
      - `id` string, required
      - `kind` 'added' | 'removed' | 'changed', required
      - `changes` FieldChange[], required
        - `path` string, required
        - `before` unknown
        - `after` unknown
        - `dimension` string, nullable
        - `unit` string, nullable
        - `before_local` string, date-time, nullable
        - `after_local` string, date-time, nullable
        - `before_orders` number, nullable
        - `after_orders` number, nullable
    - `route_restrictions` KeyedChange[], required
      - `id` string, required
      - `kind` 'added' | 'removed' | 'changed', required
      - `changes` FieldChange[], required
        - `path` string, required
        - `before` unknown
        - `after` unknown
        - `dimension` string, nullable
        - `unit` string, nullable
        - `before_local` string, date-time, nullable
        - `after_local` string, date-time, nullable
        - `before_orders` number, nullable
        - `after_orders` number, nullable
    - `user_tags_added` string[], required
    - `user_tags_removed` string[], required
    - `time_anchor_changed` boolean, required
    - `other_keys` FieldChange[], required
      - `path` string, required
      - `before` unknown
      - `after` unknown
      - `dimension` string, nullable
      - `unit` string, nullable
      - `before_local` string, date-time, nullable
      - `after_local` string, date-time, nullable
      - `before_orders` number, nullable
      - `after_orders` number, nullable
    - `previous_solver` string, nullable, required
    - `current_solver` string, nullable, required
  - `loosening_changes` FieldChange[], required
    - `path` string, required
    - `before` unknown
    - `after` unknown
    - `dimension` string, nullable
    - `unit` string, nullable
    - `before_local` string, date-time, nullable
    - `after_local` string, date-time, nullable
    - `before_orders` number, nullable
    - `after_orders` number, nullable
  - `causes` CauseMatch[], required
    - `cause` 'capabilities_violation_only' | 'fewer_vans' | 'vehicle_constraint_tightened' | 'configuration_changed' | 'dropped_order_changed' | 'demand_added' | 'other_orders_changed' | 'demand_removed' | 'vehicle_constraint_loosened' | 'more_vans' | 'no_input_change', required: Cause classes. Declaration order is the order in which the rules apply, except that for an order the previous run routed, a matching fleet rule (`fewer_vans`, `vehicle_constraint_tightened`) ranks above `capabilities_violation_only`.
    - `order_ids` string[], required
    - `summary` string, required
  - `primary_cause` 'capabilities_violation_only' | 'fewer_vans' | 'vehicle_constraint_tightened' | 'configuration_changed' | 'dropped_order_changed' | 'demand_added' | 'other_orders_changed' | 'demand_removed' | 'vehicle_constraint_loosened' | 'more_vans' | 'no_input_change', required: Cause classes. Declaration order is the order in which the rules apply, except that for an order the previous run routed, a matching fleet rule (`fewer_vans`, `vehicle_constraint_tightened`) ranks above `capabilities_violation_only`.
  - `recent_fleet` FleetPoint[], required
    - `activity_id` string, required
    - `completed_at` string, date-time, required
    - `vans` integer, required
    - `order_slots` integer, nullable, required
  - `blind_spots` string[], required
  - `dimension_units` object
  - `derived_sources` DerivedSource[]
    - `setting` 'van_departure_delay' | 'coles_per_route_order_cap' | 'shift_change_search_level', required: A Nash setting behind a solver field that Nash derives.
    - `owner` 'shift_roster' | 'nash', required
    - `description` string, required
    - `before` number, nullable, required
    - `after` number, nullable, required
    - `unit` string, nullable, required
    - `vehicle_type_ids` string[], required
    - `explains` string[], required
    - `evidence` string, required

## Other responses

- `422`: Unprocessable Content

---

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