@solvice/routing 0.19.0-beta.0 → 0.19.2-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/runs.d.ts CHANGED
@@ -258,7 +258,7 @@ export interface components {
258
258
  * New values may be added; clients must accept unknown values and handle
259
259
  * them generically, for example by showing `message`.
260
260
  *
261
- * Known values: `unreachable`, `max_leg_travel`, `required_skills`, `serves_tags`, `capacity`, `time_window`, `eligible_vehicles`, `shift_end`, `max_distance`, `max_route_duration`, `max_stops`, `sequence`, `tag_order`, `shipment`, `break`, `multi_trip`, `same_vehicle`, `same_day`, `same_route`, `compatible_vehicles`, `synchronized`, `time_lag`, `all_or_none`, `period_limit`, `quota`, `unknown`. An open set: a later release may add values, so accept any string and handle the ones you know.
261
+ * Known values: `unreachable`, `max_leg_travel`, `required_skills`, `serves_tags`, `capacity`, `time_window`, `eligible_vehicles`, `shift_end`, `max_distance`, `max_route_duration`, `max_stops`, `sequence`, `tag_order`, `shipment`, `break`, `multi_trip`, `unload_before_end`, `same_vehicle`, `same_day`, `same_route`, `compatible_vehicles`, `synchronized`, `time_lag`, `all_or_none`, `period_limit`, `quota`, `max_intake`, `unknown`. An open set: a later release may add values, so accept any string and handle the ones you know.
262
262
  * @example capacity
263
263
  */
264
264
  ConstraintCode: string;
@@ -365,6 +365,24 @@ export interface components {
365
365
  id: string;
366
366
  /** @description Where the depot is. */
367
367
  location: components["schemas"]["Place"];
368
+ /**
369
+ * @description The most load the depot may receive across the whole request, per
370
+ * named dimension: a tip site's intake limit. Not per day: it sums every
371
+ * shift of every day.
372
+ *
373
+ * Counted is the load on board on arrival at each reload here (including
374
+ * a shift's `initial_load` on its first trip and the final tip of
375
+ * `unload_before_end`), plus the load on board at the end of a shift
376
+ * whose `end` is this depot (not with `unload_before_end`, which unloads
377
+ * at a reload first). A shift's start never counts, and an unused shift
378
+ * receives nothing. A dimension left out is uncapped; `0` means the
379
+ * depot takes none of it. A hard limit: a task that would overfill every
380
+ * depot its trip can tip at stays unassigned (reason `max_intake`).
381
+ *
382
+ * Each dimension must be one a task or vehicle declares, and some shift
383
+ * must reload here, or end here without `unload_before_end`.
384
+ */
385
+ max_intake?: null | components["schemas"]["Quantities"];
368
386
  /**
369
387
  * Format: double
370
388
  * @description Money charged once per reload visit, in the objective's currency.
@@ -690,7 +708,10 @@ export interface components {
690
708
  tags?: string[] | null;
691
709
  /**
692
710
  * @description Soft target for this task, measured at its arrival (default) or
693
- * departure. On a shipment it is measured on the **delivery** leg.
711
+ * departure. On a shipment it is measured on the **delivery** leg and
712
+ * cannot be combined with `delivery.target` (HTTP 400
713
+ * `conflicting_fields`); `pickup.target` adds a separate target on the
714
+ * pickup leg.
694
715
  */
695
716
  target?: null | components["schemas"]["Target"];
696
717
  /** @description Time windows for this visit. */
@@ -1819,9 +1840,9 @@ export interface components {
1819
1840
  * @description Seconds past this task's `target.at`, measured at the stop's arrival
1820
1841
  * (plus any `windowed` break taken on arrival there, idle before it
1821
1842
  * included) or departure per `target.on`; `0` when met. Present only on a task
1822
- * stop carrying a target. A shipment's target is measured on its
1823
- * delivery leg, so it appears on the `:delivery` stop and never on the
1824
- * `:pickup` stop.
1843
+ * stop carrying a target. A shipment's own `target` is measured on its
1844
+ * delivery leg, so it appears on the `:delivery` stop; a `pickup.target`
1845
+ * or `delivery.target` appears on that leg's stop.
1825
1846
  * @example 0
1826
1847
  */
1827
1848
  target_lateness_s?: number | null;
@@ -2550,10 +2571,11 @@ export interface components {
2550
2571
  /**
2551
2572
  * Format: int32
2552
2573
  * @description Maximum trips (depot legs) in this shift, across all reload depots.
2553
- * Counts trips, not reloads: `trips = reloads_used + 1`. `max_trips: 1`
2554
- * means a single trip — reloads are permitted in `reloads` but the cap
2555
- * prevents ever using one. `reloads` present with `max_trips` absent
2556
- * means unlimited trips. A single reload depot can only be
2574
+ * Counts trips, not reloads: `trips = reloads_used + 1`, where the final
2575
+ * unload of `unload_before_end` is not counted. `max_trips: 1` means a
2576
+ * single trip — reloads are permitted in `reloads` but the cap prevents
2577
+ * ever using one, other than that final unload. `reloads` present with
2578
+ * `max_trips` absent means unlimited trips. A single reload depot can only be
2557
2579
  * revisited up to 8 times per shift regardless of `max_trips`;
2558
2580
  * a `max_trips` beyond that against one depot
2559
2581
  * is accepted but the extra headroom is unreachable — list more than
@@ -2607,6 +2629,19 @@ export interface components {
2607
2629
  skills?: components["schemas"]["VehicleSkill"][] | null;
2608
2630
  /** @description Where the shift starts. Absent = open start. */
2609
2631
  start?: null | components["schemas"]["ShiftPlace"];
2632
+ /**
2633
+ * @description When `true`, the shift starts at its first task: travel from `start`
2634
+ * to the first task takes no time, so the first arrival is `from`
2635
+ * plus the `start` handling, and waiting there counts from `from`.
2636
+ * That travel's distance is still charged at `per_travel_km` and reported, so
2637
+ * vehicles that start closer to their work stay cheaper; its time is not
2638
+ * charged and counts toward no duration, break or leg limit.
2639
+ * `free_start_travel` instead makes the travel free altogether. `true`
2640
+ * without `start`, or together with `free_start_travel`, is rejected with
2641
+ * HTTP 400 `conflicting_fields`. Default `false`.
2642
+ * @example false
2643
+ */
2644
+ start_at_first_task?: boolean | null;
2610
2645
  /**
2611
2646
  * Format: date-time
2612
2647
  * @description Shift end (RFC 3339 instant, UTC offset required; hard unless `max_overtime_s` set). The
@@ -2614,6 +2649,16 @@ export interface components {
2614
2649
  * @example 2026-07-01T17:00:00+02:00
2615
2650
  */
2616
2651
  to: string;
2652
+ /**
2653
+ * @description When `true`, a route that would end with load on board first unloads
2654
+ * at one of this shift's `reloads` depots: a final `reload` stop, at the
2655
+ * depot the solver finds cheapest, taking that depot's
2656
+ * `service_duration_s` and `per_reload`. It does not count toward
2657
+ * `max_trips`. A route whose last trip carries no load ends without one.
2658
+ * `true` without `reloads` is rejected with HTTP 400
2659
+ * `conflicting_fields`. Default `false`.
2660
+ */
2661
+ unload_before_end?: boolean | null;
2617
2662
  };
2618
2663
  /**
2619
2664
  * @description The `Costs` fields for one shift, minus `per_used_vehicle`. A shift is one
@@ -2849,7 +2894,10 @@ export interface components {
2849
2894
  tags?: string[] | null;
2850
2895
  /**
2851
2896
  * @description Soft target for this task, measured at its arrival (default) or
2852
- * departure. On a shipment it is measured on the **delivery** leg.
2897
+ * departure. On a shipment it is measured on the **delivery** leg and
2898
+ * cannot be combined with `delivery.target` (HTTP 400
2899
+ * `conflicting_fields`); `pickup.target` adds a separate target on the
2900
+ * pickup leg.
2853
2901
  */
2854
2902
  target?: null | components["schemas"]["Target"];
2855
2903
  };
@@ -2907,6 +2955,14 @@ export interface components {
2907
2955
  * @example 60
2908
2956
  */
2909
2957
  setup_duration_s?: number | null;
2958
+ /**
2959
+ * @description Soft target for this leg, measured at its arrival (default) or
2960
+ * departure. Same type, units and validation as the task-level
2961
+ * `target`. The shipment's own `target` is measured on the delivery
2962
+ * leg, so sending it with `delivery.target` is rejected with HTTP 400
2963
+ * (`conflicting_fields`).
2964
+ */
2965
+ target?: null | components["schemas"]["Target"];
2910
2966
  /** @description Time windows for this stop. */
2911
2967
  time_windows?: components["schemas"]["TimeWindow"][] | null;
2912
2968
  };
@@ -3918,15 +3974,16 @@ export interface components {
3918
3974
  */
3919
3975
  code: components["schemas"]["ConstraintCode"];
3920
3976
  /**
3921
- * @description The capacity dimension over its limit. Only on `capacity`.
3977
+ * @description The capacity dimension over its limit. Only on `capacity`,
3978
+ * `unload_before_end` and `max_intake`.
3922
3979
  * @example weight
3923
3980
  */
3924
3981
  dimension?: string | null;
3925
3982
  /**
3926
3983
  * Format: int64
3927
3984
  * @description How far over the limit, in `unit`. On `capacity`, `time_window` (the
3928
- * seconds late), `shift_end`, `max_distance`, `max_route_duration` and
3929
- * `quota`.
3985
+ * seconds late), `shift_end`, `max_distance`, `max_route_duration`,
3986
+ * `quota`, `unload_before_end` and `max_intake`.
3930
3987
  * @example 15
3931
3988
  */
3932
3989
  excess?: number | null;
package/dist/v3.d.ts CHANGED
@@ -54,7 +54,7 @@ export interface paths {
54
54
  put?: never;
55
55
  /**
56
56
  * Suggest best insertions for the tasks outside the plan
57
- * @description Takes the same body as `POST /v3/routing/evaluate` (`problem` + committed `plan`), plus optional `options`. Every task of `problem` that is not in `plan` is a task to place: finds its feasible insertion positions and returns them as `insertions`, ranked by `delta.cost`, the change in the plan's cost in money. Each insertion lists the stops it adds (`placements`) and every plan route it changes, whole (`routes`): swap those routes into `plan` to apply it. An empty `insertions` carries a `reason` whose `code` is `time_limit`, `candidates_exhausted` or `infeasible` (an open set) and whose `message` says the same in English. The committed plan is never modified. Limitation: suggest never opens a new reload trip on a multi-trip vehicle.
57
+ * @description Takes the same body as `POST /v3/routing/evaluate` (`problem` + committed `plan`), plus optional `options`. Every task of `problem` that is not in `plan` is a task to place: finds its feasible insertion positions and returns them as `insertions`, ranked by `delta.cost`, the change in the plan's cost in money. The members of a `synchronized` or `time_lag` group outside `plan` are one task to place: each insertion places every member, and with the default `on: service_start` a crew's members start within `max_spread_s` of one another (`service_start`); a `time_lag` keeps its lag. Each insertion lists the stops it adds (`placements`) and every plan route it changes, whole (`routes`): swap those routes into `plan` to apply it. An empty `insertions` carries a `reason` whose `code` is `time_limit`, `candidates_exhausted` or `infeasible` (an open set) and whose `message` says the same in English. The committed plan is never modified. Limitation: suggest never opens a new reload trip on a multi-trip vehicle.
58
58
  */
59
59
  post: operations["suggest"];
60
60
  delete?: never;
@@ -296,7 +296,7 @@ export interface components {
296
296
  * New values may be added; clients must accept unknown values and handle
297
297
  * them generically, for example by showing `message`.
298
298
  *
299
- * Known values: `unreachable`, `max_leg_travel`, `required_skills`, `serves_tags`, `capacity`, `time_window`, `eligible_vehicles`, `shift_end`, `max_distance`, `max_route_duration`, `max_stops`, `sequence`, `tag_order`, `shipment`, `break`, `multi_trip`, `same_vehicle`, `same_day`, `same_route`, `compatible_vehicles`, `synchronized`, `time_lag`, `all_or_none`, `period_limit`, `quota`, `unknown`. An open set: a later release may add values, so accept any string and handle the ones you know.
299
+ * Known values: `unreachable`, `max_leg_travel`, `required_skills`, `serves_tags`, `capacity`, `time_window`, `eligible_vehicles`, `shift_end`, `max_distance`, `max_route_duration`, `max_stops`, `sequence`, `tag_order`, `shipment`, `break`, `multi_trip`, `unload_before_end`, `same_vehicle`, `same_day`, `same_route`, `compatible_vehicles`, `synchronized`, `time_lag`, `all_or_none`, `period_limit`, `quota`, `max_intake`, `unknown`. An open set: a later release may add values, so accept any string and handle the ones you know.
300
300
  * @example capacity
301
301
  */
302
302
  ConstraintCode: string;
@@ -403,6 +403,24 @@ export interface components {
403
403
  id: string;
404
404
  /** @description Where the depot is. */
405
405
  location: components["schemas"]["Place"];
406
+ /**
407
+ * @description The most load the depot may receive across the whole request, per
408
+ * named dimension: a tip site's intake limit. Not per day: it sums every
409
+ * shift of every day.
410
+ *
411
+ * Counted is the load on board on arrival at each reload here (including
412
+ * a shift's `initial_load` on its first trip and the final tip of
413
+ * `unload_before_end`), plus the load on board at the end of a shift
414
+ * whose `end` is this depot (not with `unload_before_end`, which unloads
415
+ * at a reload first). A shift's start never counts, and an unused shift
416
+ * receives nothing. A dimension left out is uncapped; `0` means the
417
+ * depot takes none of it. A hard limit: a task that would overfill every
418
+ * depot its trip can tip at stays unassigned (reason `max_intake`).
419
+ *
420
+ * Each dimension must be one a task or vehicle declares, and some shift
421
+ * must reload here, or end here without `unload_before_end`.
422
+ */
423
+ max_intake?: null | components["schemas"]["Quantities"];
406
424
  /**
407
425
  * Format: double
408
426
  * @description Money charged once per reload visit, in the objective's currency.
@@ -650,6 +668,7 @@ export interface components {
650
668
  * "arrival": "2026-07-01T09:30:00+02:00",
651
669
  * "id": "job-2",
652
670
  * "latest_arrival": "2026-07-01T10:15:00+02:00",
671
+ * "service_start": "2026-07-01T09:30:00+02:00",
653
672
  * "shift": "mon",
654
673
  * "type": "job",
655
674
  * "vehicle": "v1"
@@ -876,7 +895,10 @@ export interface components {
876
895
  tags?: string[] | null;
877
896
  /**
878
897
  * @description Soft target for this task, measured at its arrival (default) or
879
- * departure. On a shipment it is measured on the **delivery** leg.
898
+ * departure. On a shipment it is measured on the **delivery** leg and
899
+ * cannot be combined with `delivery.target` (HTTP 400
900
+ * `conflicting_fields`); `pickup.target` adds a separate target on the
901
+ * pickup leg.
880
902
  */
881
903
  target?: null | components["schemas"]["Target"];
882
904
  /** @description Time windows for this visit. */
@@ -1034,6 +1056,7 @@ export interface components {
1034
1056
  * "arrival": "2026-07-01T09:30:00+02:00",
1035
1057
  * "id": "s1:pickup",
1036
1058
  * "latest_arrival": "2026-07-01T10:15:00+02:00",
1059
+ * "service_start": "2026-07-01T09:30:00+02:00",
1037
1060
  * "shift": "mon",
1038
1061
  * "type": "pickup",
1039
1062
  * "vehicle": "v1"
@@ -1054,10 +1077,23 @@ export interface components {
1054
1077
  * @description Latest arrival that still keeps the rest of the route feasible
1055
1078
  * (RFC 3339, in the offset of `arrival`) — the smaller of the task's own time-window latest and
1056
1079
  * the route's forward slack here. Under priced lateness it may be
1057
- * **earlier** than `arrival`.
1080
+ * **earlier** than `arrival`. For a `synchronized` or `time_lag` member it
1081
+ * is at most `arrival` plus the wait before `service_start`: arriving
1082
+ * later would move the start its partners are booked to meet.
1058
1083
  * @example 2026-07-01T10:15:00+02:00
1059
1084
  */
1060
1085
  latest_arrival: string;
1086
+ /**
1087
+ * Format: date-time
1088
+ * @description Service start (RFC 3339, in the offset of `arrival`): `arrival` plus
1089
+ * any wait for the time window or a break, and for a `synchronized` or
1090
+ * `time_lag` member the hold for its partners, as `service_start` on the
1091
+ * route stop. With the default `on: service_start`, the members of a
1092
+ * crew start here within the relation's `max_spread_s`: the booking time
1093
+ * (`on: departure` aligns their ends instead; a `time_lag` keeps its lag).
1094
+ * @example 2026-07-01T09:30:00+02:00
1095
+ */
1096
+ service_start: string;
1061
1097
  /** @description Shift of that plan route. */
1062
1098
  shift: string;
1063
1099
  /**
@@ -2052,9 +2088,9 @@ export interface components {
2052
2088
  * @description Seconds past this task's `target.at`, measured at the stop's arrival
2053
2089
  * (plus any `windowed` break taken on arrival there, idle before it
2054
2090
  * included) or departure per `target.on`; `0` when met. Present only on a task
2055
- * stop carrying a target. A shipment's target is measured on its
2056
- * delivery leg, so it appears on the `:delivery` stop and never on the
2057
- * `:pickup` stop.
2091
+ * stop carrying a target. A shipment's own `target` is measured on its
2092
+ * delivery leg, so it appears on the `:delivery` stop; a `pickup.target`
2093
+ * or `delivery.target` appears on that leg's stop.
2058
2094
  * @example 0
2059
2095
  */
2060
2096
  target_lateness_s?: number | null;
@@ -2451,10 +2487,11 @@ export interface components {
2451
2487
  /**
2452
2488
  * Format: int32
2453
2489
  * @description Maximum trips (depot legs) in this shift, across all reload depots.
2454
- * Counts trips, not reloads: `trips = reloads_used + 1`. `max_trips: 1`
2455
- * means a single trip — reloads are permitted in `reloads` but the cap
2456
- * prevents ever using one. `reloads` present with `max_trips` absent
2457
- * means unlimited trips. A single reload depot can only be
2490
+ * Counts trips, not reloads: `trips = reloads_used + 1`, where the final
2491
+ * unload of `unload_before_end` is not counted. `max_trips: 1` means a
2492
+ * single trip — reloads are permitted in `reloads` but the cap prevents
2493
+ * ever using one, other than that final unload. `reloads` present with
2494
+ * `max_trips` absent means unlimited trips. A single reload depot can only be
2458
2495
  * revisited up to 8 times per shift regardless of `max_trips`;
2459
2496
  * a `max_trips` beyond that against one depot
2460
2497
  * is accepted but the extra headroom is unreachable — list more than
@@ -2508,6 +2545,19 @@ export interface components {
2508
2545
  skills?: components["schemas"]["VehicleSkill"][] | null;
2509
2546
  /** @description Where the shift starts. Absent = open start. */
2510
2547
  start?: null | components["schemas"]["ShiftPlace"];
2548
+ /**
2549
+ * @description When `true`, the shift starts at its first task: travel from `start`
2550
+ * to the first task takes no time, so the first arrival is `from`
2551
+ * plus the `start` handling, and waiting there counts from `from`.
2552
+ * That travel's distance is still charged at `per_travel_km` and reported, so
2553
+ * vehicles that start closer to their work stay cheaper; its time is not
2554
+ * charged and counts toward no duration, break or leg limit.
2555
+ * `free_start_travel` instead makes the travel free altogether. `true`
2556
+ * without `start`, or together with `free_start_travel`, is rejected with
2557
+ * HTTP 400 `conflicting_fields`. Default `false`.
2558
+ * @example false
2559
+ */
2560
+ start_at_first_task?: boolean | null;
2511
2561
  /**
2512
2562
  * Format: date-time
2513
2563
  * @description Shift end (RFC 3339 instant, UTC offset required; hard unless `max_overtime_s` set). The
@@ -2515,6 +2565,16 @@ export interface components {
2515
2565
  * @example 2026-07-01T17:00:00+02:00
2516
2566
  */
2517
2567
  to: string;
2568
+ /**
2569
+ * @description When `true`, a route that would end with load on board first unloads
2570
+ * at one of this shift's `reloads` depots: a final `reload` stop, at the
2571
+ * depot the solver finds cheapest, taking that depot's
2572
+ * `service_duration_s` and `per_reload`. It does not count toward
2573
+ * `max_trips`. A route whose last trip carries no load ends without one.
2574
+ * `true` without `reloads` is rejected with HTTP 400
2575
+ * `conflicting_fields`. Default `false`.
2576
+ */
2577
+ unload_before_end?: boolean | null;
2518
2578
  };
2519
2579
  /**
2520
2580
  * @description The `Costs` fields for one shift, minus `per_used_vehicle`. A shift is one
@@ -2763,7 +2823,10 @@ export interface components {
2763
2823
  tags?: string[] | null;
2764
2824
  /**
2765
2825
  * @description Soft target for this task, measured at its arrival (default) or
2766
- * departure. On a shipment it is measured on the **delivery** leg.
2826
+ * departure. On a shipment it is measured on the **delivery** leg and
2827
+ * cannot be combined with `delivery.target` (HTTP 400
2828
+ * `conflicting_fields`); `pickup.target` adds a separate target on the
2829
+ * pickup leg.
2767
2830
  */
2768
2831
  target?: null | components["schemas"]["Target"];
2769
2832
  };
@@ -2821,6 +2884,14 @@ export interface components {
2821
2884
  * @example 60
2822
2885
  */
2823
2886
  setup_duration_s?: number | null;
2887
+ /**
2888
+ * @description Soft target for this leg, measured at its arrival (default) or
2889
+ * departure. Same type, units and validation as the task-level
2890
+ * `target`. The shipment's own `target` is measured on the delivery
2891
+ * leg, so sending it with `delivery.target` is rejected with HTTP 400
2892
+ * (`conflicting_fields`).
2893
+ */
2894
+ target?: null | components["schemas"]["Target"];
2824
2895
  /** @description Time windows for this stop. */
2825
2896
  time_windows?: components["schemas"]["TimeWindow"][] | null;
2826
2897
  };
@@ -3221,8 +3292,11 @@ export interface components {
3221
3292
  * the range are a 400, never clamped. It also sets how widely a unit of
3222
3293
  * several stops is searched (such a unit is never searched exhaustively):
3223
3294
  * each stop after the unit's first keeps at most
3224
- * `max(8, 4 × max_insertions)` partial placements. A single-stop task has every
3225
- * feasible position considered unless `time_limit_s` runs out first.
3295
+ * `max(8, 4 × max_insertions)` partial placements. A `synchronized` or
3296
+ * `time_lag` group is the exception: every start slot of one member is
3297
+ * tried, each other member at its cheapest slot, whatever this value. A
3298
+ * single-stop task has every feasible position considered unless
3299
+ * `time_limit_s` runs out first.
3226
3300
  * @default 5
3227
3301
  * @example 5
3228
3302
  */
@@ -3381,6 +3455,7 @@ export interface components {
3381
3455
  * "arrival": "2026-07-01T09:30:00+02:00",
3382
3456
  * "id": "job-2",
3383
3457
  * "latest_arrival": "2026-07-01T10:15:00+02:00",
3458
+ * "service_start": "2026-07-01T09:30:00+02:00",
3384
3459
  * "shift": "mon",
3385
3460
  * "type": "job",
3386
3461
  * "vehicle": "v1"
@@ -3646,6 +3721,7 @@ export interface components {
3646
3721
  * "arrival": "2026-07-01T09:30:00+02:00",
3647
3722
  * "id": "job-2",
3648
3723
  * "latest_arrival": "2026-07-01T10:15:00+02:00",
3724
+ * "service_start": "2026-07-01T09:30:00+02:00",
3649
3725
  * "shift": "mon",
3650
3726
  * "type": "job",
3651
3727
  * "vehicle": "v1"
@@ -3682,10 +3758,9 @@ export interface components {
3682
3758
  /** @description Why `insertions` is empty; absent otherwise. */
3683
3759
  reason?: null | components["schemas"]["SuggestReason"];
3684
3760
  /**
3685
- * @description The unit's lead: its first member in placement order. That is the
3686
- * visit, the shipment, the first stop of a `sequence` chain in the
3687
- * unit, or else the member that comes first in problem order (`jobs`,
3688
- * then `shipments`).
3761
+ * @description The unit's lead: the visit, the shipment, the first stop of a
3762
+ * `sequence` chain in the unit, or else, a crew included, the member
3763
+ * that comes first in problem order (`jobs`, then `shipments`).
3689
3764
  * @example job-2
3690
3765
  */
3691
3766
  task: string;
@@ -4295,15 +4370,16 @@ export interface components {
4295
4370
  */
4296
4371
  code: components["schemas"]["ConstraintCode"];
4297
4372
  /**
4298
- * @description The capacity dimension over its limit. Only on `capacity`.
4373
+ * @description The capacity dimension over its limit. Only on `capacity`,
4374
+ * `unload_before_end` and `max_intake`.
4299
4375
  * @example weight
4300
4376
  */
4301
4377
  dimension?: string | null;
4302
4378
  /**
4303
4379
  * Format: int64
4304
4380
  * @description How far over the limit, in `unit`. On `capacity`, `time_window` (the
4305
- * seconds late), `shift_end`, `max_distance`, `max_route_duration` and
4306
- * `quota`.
4381
+ * seconds late), `shift_end`, `max_distance`, `max_route_duration`,
4382
+ * `quota`, `unload_before_end` and `max_intake`.
4307
4383
  * @example 15
4308
4384
  */
4309
4385
  excess?: number | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solvice/routing",
3
- "version": "0.19.0-beta.0",
3
+ "version": "0.19.2-beta.0",
4
4
  "description": "TypeScript client for the Solvice V3 routing API, generated from its OpenAPI spec.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://docs.solvice.io/guides/platform/sdks/typescript",