@solvice/routing 0.19.2-beta.0 → 0.19.4-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 +67 -39
- package/dist/v3.d.ts +104 -45
- package/package.json +1 -1
package/dist/runs.d.ts
CHANGED
|
@@ -646,10 +646,10 @@ export interface components {
|
|
|
646
646
|
*/
|
|
647
647
|
preferences?: components["schemas"]["VehiclePreference"][] | null;
|
|
648
648
|
/**
|
|
649
|
-
* Format:
|
|
649
|
+
* Format: uint32
|
|
650
650
|
* @description Importance of a must-serve task when not all of them fit: the solver
|
|
651
|
-
* maximises the summed `priority` of served tasks before any cost.
|
|
652
|
-
* default `1` (maximise the count). A rank, not money — it never makes a
|
|
651
|
+
* maximises the summed `priority` of served tasks before any cost. `1` to
|
|
652
|
+
* `4294967295`, default `1` (maximise the count). A rank, not money — it never makes a
|
|
653
653
|
* task droppable; use `drop_cost` for that. Both set is a 400.
|
|
654
654
|
* @example 3
|
|
655
655
|
*/
|
|
@@ -840,7 +840,7 @@ export interface components {
|
|
|
840
840
|
*/
|
|
841
841
|
max_route_duration_s?: number | null;
|
|
842
842
|
/**
|
|
843
|
-
* Format:
|
|
843
|
+
* Format: uint32
|
|
844
844
|
* @description Hard cap on served stops across the period's shifts; a job counts as
|
|
845
845
|
* one stop. Start, end, break and reload stops in `routes[].stops` do not
|
|
846
846
|
* count; a shipment counts as two stops.
|
|
@@ -886,7 +886,7 @@ export interface components {
|
|
|
886
886
|
*/
|
|
887
887
|
PlanRoute: {
|
|
888
888
|
/**
|
|
889
|
-
* Format:
|
|
889
|
+
* Format: uint32
|
|
890
890
|
* @description On solve, the first `locked_count` stops stay where they are (already
|
|
891
891
|
* dispatched). Counts every listed stop. Cannot be combined with a
|
|
892
892
|
* `reload` stop, and must not exceed the route's stop count — both are
|
|
@@ -921,6 +921,8 @@ export interface components {
|
|
|
921
921
|
* @example parts-9:delivery
|
|
922
922
|
*/
|
|
923
923
|
id: string;
|
|
924
|
+
/** @description Pinned as on a job; pinning one leg pins both. */
|
|
925
|
+
pinned?: boolean;
|
|
924
926
|
/**
|
|
925
927
|
* @description Discriminator: always `delivery`. (enum property replaced by openapi-typescript)
|
|
926
928
|
* @enum {string}
|
|
@@ -937,6 +939,19 @@ export interface components {
|
|
|
937
939
|
* @example boiler-17
|
|
938
940
|
*/
|
|
939
941
|
id: string;
|
|
942
|
+
/**
|
|
943
|
+
* @description On solve, pins the vehicle, not the position: the stop stays on the
|
|
944
|
+
* vehicle of the route it sits in (any shift of that vehicle, unless it
|
|
945
|
+
* belongs to a `same_day` or `same_route` group) and is never removed
|
|
946
|
+
* from the plan, but the search may still reorder it within the route.
|
|
947
|
+
* Works anywhere in a route, unlike the prefix `locked_count`. A stop
|
|
948
|
+
* that cannot be driven is a 400 on synchronous solve and stream, as is
|
|
949
|
+
* a pinned stop that shares a `same_vehicle`, `same_day` or `same_route`
|
|
950
|
+
* group with another pinned or locked stop the relation forbids.
|
|
951
|
+
* Accepted on evaluate and suggest, where it is inert. A result's `plan`
|
|
952
|
+
* never carries it.
|
|
953
|
+
*/
|
|
954
|
+
pinned?: boolean;
|
|
940
955
|
/**
|
|
941
956
|
* @description Discriminator: always `job`. (enum property replaced by openapi-typescript)
|
|
942
957
|
* @enum {string}
|
|
@@ -953,6 +968,8 @@ export interface components {
|
|
|
953
968
|
* @example parts-9:pickup
|
|
954
969
|
*/
|
|
955
970
|
id: string;
|
|
971
|
+
/** @description Pinned as on a job; pinning one leg pins both. */
|
|
972
|
+
pinned?: boolean;
|
|
956
973
|
/**
|
|
957
974
|
* @description Discriminator: always `pickup`. (enum property replaced by openapi-typescript)
|
|
958
975
|
* @enum {string}
|
|
@@ -1129,7 +1146,7 @@ export interface components {
|
|
|
1129
1146
|
*/
|
|
1130
1147
|
id: string;
|
|
1131
1148
|
/**
|
|
1132
|
-
* Format:
|
|
1149
|
+
* Format: uint32
|
|
1133
1150
|
* @description The cap on counted stops; a job counts as one stop.
|
|
1134
1151
|
* Start, end, break and reload stops in `routes[].stops` do not count; a
|
|
1135
1152
|
* shipment counts as two stops.
|
|
@@ -1173,8 +1190,10 @@ export interface components {
|
|
|
1173
1190
|
* its pickup. A shipment's own id in `stops`, or a shipment carrying the
|
|
1174
1191
|
* `tag` of a `same_vehicle` or `same_day` relation, is rejected with HTTP 400
|
|
1175
1192
|
* `not_supported`: relations never silently skip a member. `same_route`,
|
|
1176
|
-
* `time_lag`, `compatible_vehicles
|
|
1177
|
-
*
|
|
1193
|
+
* `time_lag`, `compatible_vehicles` and `tag_order` reject a shipment with
|
|
1194
|
+
* HTTP 400 as well. `all_or_none` alone takes a shipment's own id, naming both
|
|
1195
|
+
* legs, in a group that is exactly one `consecutive` chain; such a chain may
|
|
1196
|
+
* also be jobs only.
|
|
1178
1197
|
* @example {
|
|
1179
1198
|
* "stops": [
|
|
1180
1199
|
* "job-1",
|
|
@@ -1187,20 +1206,25 @@ export interface components {
|
|
|
1187
1206
|
/**
|
|
1188
1207
|
* All or none
|
|
1189
1208
|
* @description All or none: either every member in `stops` is served, or none is.
|
|
1190
|
-
* Sets no timing;
|
|
1191
|
-
*
|
|
1209
|
+
* Sets no timing; a coupled group takes its timing from the
|
|
1210
|
+
* `synchronized` or `time_lag` relation that names its members. Hard.
|
|
1211
|
+
* Overlapping `all_or_none` relations chain: one on A and B plus
|
|
1192
1212
|
* one on B and C serve all three together or none of them. A group with
|
|
1193
|
-
* a task in a vehicle's locked prefix (`plan.routes[].locked_count`)
|
|
1194
|
-
* exempt. A member that could be served but is held back because
|
|
1213
|
+
* a task in a vehicle's locked prefix (`plan.routes[].locked_count`) or, on solve, a
|
|
1214
|
+
* `pinned` plan stop is exempt. A member that could be served but is held back because
|
|
1195
1215
|
* another cannot reports `all_or_none` in `unassigned[].reasons`.
|
|
1196
1216
|
*
|
|
1197
|
-
*
|
|
1198
|
-
*
|
|
1217
|
+
* A member may be a shipment id (both legs). Members are coupled by
|
|
1218
|
+
* `synchronized`/`time_lag`, or the group's stops (a shipment as its two
|
|
1219
|
+
* legs) are exactly one `consecutive` chain with no member coupled by
|
|
1220
|
+
* `synchronized` or `time_lag`, directly or through a `sequence` or
|
|
1221
|
+
* `consecutive` relation. A task named by neither is rejected with HTTP 400, as is a
|
|
1222
|
+
* shipment-leg id: name the shipment.
|
|
1199
1223
|
*/
|
|
1200
1224
|
RelationAllOrNone: {
|
|
1201
1225
|
/**
|
|
1202
|
-
* @description Job ids, at least two. A shipment
|
|
1203
|
-
*
|
|
1226
|
+
* @description Job ids or shipment ids, at least two. A shipment-leg stop id is
|
|
1227
|
+
* rejected with HTTP 400.
|
|
1204
1228
|
* @example [
|
|
1205
1229
|
* "job-1",
|
|
1206
1230
|
* "job-2"
|
|
@@ -1248,6 +1272,7 @@ export interface components {
|
|
|
1248
1272
|
* route. A member that is unassigned is skipped, so only listed
|
|
1249
1273
|
* neighbours that are both served are adjacent. Members on different
|
|
1250
1274
|
* routes are unconstrained; add `same_route` to keep them together.
|
|
1275
|
+
* Put a chain in an `all_or_none` to serve it whole or not at all.
|
|
1251
1276
|
*/
|
|
1252
1277
|
RelationConsecutive: {
|
|
1253
1278
|
/**
|
|
@@ -1504,14 +1529,14 @@ export interface components {
|
|
|
1504
1529
|
/** @description One problem in a request. */
|
|
1505
1530
|
RequestIssue: {
|
|
1506
1531
|
/**
|
|
1507
|
-
* Format:
|
|
1532
|
+
* Format: uint64
|
|
1508
1533
|
* @description `limit_exceeded` only: the count this request has.
|
|
1509
1534
|
*/
|
|
1510
1535
|
actual?: number | null;
|
|
1511
1536
|
/** @description What is wrong. */
|
|
1512
1537
|
code: components["schemas"]["ErrorItemCode"];
|
|
1513
1538
|
/**
|
|
1514
|
-
* Format:
|
|
1539
|
+
* Format: uint64
|
|
1515
1540
|
* @description `limit_exceeded` only: the published cap.
|
|
1516
1541
|
*/
|
|
1517
1542
|
limit?: number | null;
|
|
@@ -1998,7 +2023,7 @@ export interface components {
|
|
|
1998
2023
|
*/
|
|
1999
2024
|
polyline?: null | components["schemas"]["PolylineDetail"];
|
|
2000
2025
|
/**
|
|
2001
|
-
* Format:
|
|
2026
|
+
* Format: uint64
|
|
2002
2027
|
* @description Random seed for the search. Default `42`: omitting it is the same as
|
|
2003
2028
|
* sending `42`, so send different values to explore different plans.
|
|
2004
2029
|
* Repeated runs on one machine usually return an identical plan; a
|
|
@@ -2144,7 +2169,10 @@ export interface components {
|
|
|
2144
2169
|
* constraint (e.g. capacity, skills, eligibility, `limits.*`, or a time
|
|
2145
2170
|
* window with no `per_late_hour` set) is left unassigned and the
|
|
2146
2171
|
* search reinserts it wherever it legitimately fits, or it surfaces in
|
|
2147
|
-
* `unassigned[]` with a typed reason.
|
|
2172
|
+
* `unassigned[]` with a typed reason. On synchronous solve and stream, an
|
|
2173
|
+
* infeasible locked or pinned stop is a 400. `POST /v3/routing/runs` checks
|
|
2174
|
+
* the problem at submission, not the plan, so there the run ends `failed`
|
|
2175
|
+
* with `BAD_REQUEST` instead.
|
|
2148
2176
|
*/
|
|
2149
2177
|
plan?: null | components["schemas"]["Plan"];
|
|
2150
2178
|
/** @description The problem: tasks, fleet, depots, relations, objective, travel. */
|
|
@@ -2260,7 +2288,7 @@ export interface components {
|
|
|
2260
2288
|
*/
|
|
2261
2289
|
unassigned_priority: number;
|
|
2262
2290
|
/**
|
|
2263
|
-
* Format:
|
|
2291
|
+
* Format: uint32
|
|
2264
2292
|
* @description How many hard-constraint violations the plan has (the `violations`
|
|
2265
2293
|
* arrays on routes and stops list them). Always `0` on a solve result.
|
|
2266
2294
|
* @example 0
|
|
@@ -2400,7 +2428,7 @@ export interface components {
|
|
|
2400
2428
|
/** @description How the search behind a plan ended. */
|
|
2401
2429
|
SearchInfo: {
|
|
2402
2430
|
/**
|
|
2403
|
-
* Format:
|
|
2431
|
+
* Format: uint64
|
|
2404
2432
|
* @description Search iterations performed. `0` when nothing was searched.
|
|
2405
2433
|
* @example 48210
|
|
2406
2434
|
*/
|
|
@@ -2426,7 +2454,7 @@ export interface components {
|
|
|
2426
2454
|
*/
|
|
2427
2455
|
cost: number;
|
|
2428
2456
|
/**
|
|
2429
|
-
* Format:
|
|
2457
|
+
* Format: uint64
|
|
2430
2458
|
* @description Milliseconds since the search started (the clock of
|
|
2431
2459
|
* `summary.timings.search_ms`).
|
|
2432
2460
|
*/
|
|
@@ -2728,7 +2756,7 @@ export interface components {
|
|
|
2728
2756
|
*/
|
|
2729
2757
|
max_route_duration_s?: number | null;
|
|
2730
2758
|
/**
|
|
2731
|
-
* Format:
|
|
2759
|
+
* Format: uint32
|
|
2732
2760
|
* @description Maximum stops served in this shift; a job counts as one stop.
|
|
2733
2761
|
* Start, end, break and reload stops in `routes[].stops` do not count; a
|
|
2734
2762
|
* shipment counts as two stops.
|
|
@@ -2857,10 +2885,10 @@ export interface components {
|
|
|
2857
2885
|
*/
|
|
2858
2886
|
preferences?: components["schemas"]["VehiclePreference"][] | null;
|
|
2859
2887
|
/**
|
|
2860
|
-
* Format:
|
|
2888
|
+
* Format: uint32
|
|
2861
2889
|
* @description Importance of a must-serve task when not all of them fit: the solver
|
|
2862
|
-
* maximises the summed `priority` of served tasks before any cost.
|
|
2863
|
-
* default `1` (maximise the count). A rank, not money — it never makes a
|
|
2890
|
+
* maximises the summed `priority` of served tasks before any cost. `1` to
|
|
2891
|
+
* `4294967295`, default `1` (maximise the count). A rank, not money — it never makes a
|
|
2864
2892
|
* task droppable; use `drop_cost` for that. Both set is a 400.
|
|
2865
2893
|
* @example 3
|
|
2866
2894
|
*/
|
|
@@ -3264,7 +3292,7 @@ export interface components {
|
|
|
3264
3292
|
/** @description How the search ended. */
|
|
3265
3293
|
search: components["schemas"]["SearchInfo"];
|
|
3266
3294
|
/**
|
|
3267
|
-
* Format:
|
|
3295
|
+
* Format: uint32
|
|
3268
3296
|
* @description Routes with at least one task stop: one per used shift.
|
|
3269
3297
|
* @example 1
|
|
3270
3298
|
*/
|
|
@@ -3282,13 +3310,13 @@ export interface components {
|
|
|
3282
3310
|
* can be tens of percent off: the plan, `unassigned[].reasons` and
|
|
3283
3311
|
* `score.violation_count` hold only against it, and no `routes[].polyline`
|
|
3284
3312
|
* is returned. Solve again once Maps is back if the plan must hold on the
|
|
3285
|
-
* road; on a solve, `options.travel_fallback: "fail"` returns
|
|
3286
|
-
* instead. Absent when travel came from the requested engine,
|
|
3313
|
+
* road; on a solve or suggest, `options.travel_fallback: "fail"` returns
|
|
3314
|
+
* the error instead. Absent when travel came from the requested engine,
|
|
3287
3315
|
* `straight_line` included.
|
|
3288
3316
|
*/
|
|
3289
3317
|
travel_estimated?: boolean;
|
|
3290
3318
|
/**
|
|
3291
|
-
* Format:
|
|
3319
|
+
* Format: uint32
|
|
3292
3320
|
* @description Distinct vehicles with at least one route.
|
|
3293
3321
|
* @example 1
|
|
3294
3322
|
*/
|
|
@@ -3367,17 +3395,17 @@ export interface components {
|
|
|
3367
3395
|
*/
|
|
3368
3396
|
TaskCounts: {
|
|
3369
3397
|
/**
|
|
3370
|
-
* Format:
|
|
3398
|
+
* Format: uint32
|
|
3371
3399
|
* @description Tasks on a route.
|
|
3372
3400
|
*/
|
|
3373
3401
|
served: number;
|
|
3374
3402
|
/**
|
|
3375
|
-
* Format:
|
|
3403
|
+
* Format: uint32
|
|
3376
3404
|
* @description Tasks on no route: the length of `unassigned`.
|
|
3377
3405
|
*/
|
|
3378
3406
|
unassigned: number;
|
|
3379
3407
|
/**
|
|
3380
|
-
* Format:
|
|
3408
|
+
* Format: uint32
|
|
3381
3409
|
* @description The unassigned tasks that carry no `drop_cost`: tasks the plan was
|
|
3382
3410
|
* required to serve and did not.
|
|
3383
3411
|
*/
|
|
@@ -3536,13 +3564,13 @@ export interface components {
|
|
|
3536
3564
|
*/
|
|
3537
3565
|
Timings: {
|
|
3538
3566
|
/**
|
|
3539
|
-
* Format:
|
|
3567
|
+
* Format: uint64
|
|
3540
3568
|
* @description Time spent in the search. Absent on `/evaluate`, which runs none, and
|
|
3541
3569
|
* on `/suggest`, which has no separate search figure.
|
|
3542
3570
|
*/
|
|
3543
3571
|
search_ms?: number | null;
|
|
3544
3572
|
/**
|
|
3545
|
-
* Format:
|
|
3573
|
+
* Format: uint64
|
|
3546
3574
|
* @description From the request's arrival to the end of the search (of the scoring,
|
|
3547
3575
|
* on `/evaluate`; of the suggestion search, on `/suggest`): fetching
|
|
3548
3576
|
* travel times and waiting for capacity included, building the response
|
|
@@ -3592,8 +3620,8 @@ export interface components {
|
|
|
3592
3620
|
speed_kmh?: number | null;
|
|
3593
3621
|
};
|
|
3594
3622
|
/**
|
|
3595
|
-
* @description `options.travel_fallback`: what a solve does when travel times
|
|
3596
|
-
* fetched. `/evaluate`
|
|
3623
|
+
* @description `options.travel_fallback`: what a solve or suggest does when travel times
|
|
3624
|
+
* cannot be fetched. `/evaluate` always estimates.
|
|
3597
3625
|
* @example estimate
|
|
3598
3626
|
* @enum {string}
|
|
3599
3627
|
*/
|
|
@@ -3889,7 +3917,7 @@ export interface components {
|
|
|
3889
3917
|
*/
|
|
3890
3918
|
max_route_duration_s?: number | null;
|
|
3891
3919
|
/**
|
|
3892
|
-
* Format:
|
|
3920
|
+
* Format: uint32
|
|
3893
3921
|
* @description Maximum stops served per shift; a job counts as one stop.
|
|
3894
3922
|
* Start, end, break and reload stops in `routes[].stops` do not count; a
|
|
3895
3923
|
* shipment counts as two stops.
|
package/dist/v3.d.ts
CHANGED
|
@@ -833,10 +833,10 @@ export interface components {
|
|
|
833
833
|
*/
|
|
834
834
|
preferences?: components["schemas"]["VehiclePreference"][] | null;
|
|
835
835
|
/**
|
|
836
|
-
* Format:
|
|
836
|
+
* Format: uint32
|
|
837
837
|
* @description Importance of a must-serve task when not all of them fit: the solver
|
|
838
|
-
* maximises the summed `priority` of served tasks before any cost.
|
|
839
|
-
* default `1` (maximise the count). A rank, not money — it never makes a
|
|
838
|
+
* maximises the summed `priority` of served tasks before any cost. `1` to
|
|
839
|
+
* `4294967295`, default `1` (maximise the count). A rank, not money — it never makes a
|
|
840
840
|
* task droppable; use `drop_cost` for that. Both set is a 400.
|
|
841
841
|
* @example 3
|
|
842
842
|
*/
|
|
@@ -1027,7 +1027,7 @@ export interface components {
|
|
|
1027
1027
|
*/
|
|
1028
1028
|
max_route_duration_s?: number | null;
|
|
1029
1029
|
/**
|
|
1030
|
-
* Format:
|
|
1030
|
+
* Format: uint32
|
|
1031
1031
|
* @description Hard cap on served stops across the period's shifts; a job counts as
|
|
1032
1032
|
* one stop. Start, end, break and reload stops in `routes[].stops` do not
|
|
1033
1033
|
* count; a shipment counts as two stops.
|
|
@@ -1128,7 +1128,7 @@ export interface components {
|
|
|
1128
1128
|
*/
|
|
1129
1129
|
PlanRoute: {
|
|
1130
1130
|
/**
|
|
1131
|
-
* Format:
|
|
1131
|
+
* Format: uint32
|
|
1132
1132
|
* @description On solve, the first `locked_count` stops stay where they are (already
|
|
1133
1133
|
* dispatched). Counts every listed stop. Cannot be combined with a
|
|
1134
1134
|
* `reload` stop, and must not exceed the route's stop count — both are
|
|
@@ -1163,6 +1163,8 @@ export interface components {
|
|
|
1163
1163
|
* @example parts-9:delivery
|
|
1164
1164
|
*/
|
|
1165
1165
|
id: string;
|
|
1166
|
+
/** @description Pinned as on a job; pinning one leg pins both. */
|
|
1167
|
+
pinned?: boolean;
|
|
1166
1168
|
/**
|
|
1167
1169
|
* @description Discriminator: always `delivery`. (enum property replaced by openapi-typescript)
|
|
1168
1170
|
* @enum {string}
|
|
@@ -1179,6 +1181,19 @@ export interface components {
|
|
|
1179
1181
|
* @example boiler-17
|
|
1180
1182
|
*/
|
|
1181
1183
|
id: string;
|
|
1184
|
+
/**
|
|
1185
|
+
* @description On solve, pins the vehicle, not the position: the stop stays on the
|
|
1186
|
+
* vehicle of the route it sits in (any shift of that vehicle, unless it
|
|
1187
|
+
* belongs to a `same_day` or `same_route` group) and is never removed
|
|
1188
|
+
* from the plan, but the search may still reorder it within the route.
|
|
1189
|
+
* Works anywhere in a route, unlike the prefix `locked_count`. A stop
|
|
1190
|
+
* that cannot be driven is a 400 on synchronous solve and stream, as is
|
|
1191
|
+
* a pinned stop that shares a `same_vehicle`, `same_day` or `same_route`
|
|
1192
|
+
* group with another pinned or locked stop the relation forbids.
|
|
1193
|
+
* Accepted on evaluate and suggest, where it is inert. A result's `plan`
|
|
1194
|
+
* never carries it.
|
|
1195
|
+
*/
|
|
1196
|
+
pinned?: boolean;
|
|
1182
1197
|
/**
|
|
1183
1198
|
* @description Discriminator: always `job`. (enum property replaced by openapi-typescript)
|
|
1184
1199
|
* @enum {string}
|
|
@@ -1195,6 +1210,8 @@ export interface components {
|
|
|
1195
1210
|
* @example parts-9:pickup
|
|
1196
1211
|
*/
|
|
1197
1212
|
id: string;
|
|
1213
|
+
/** @description Pinned as on a job; pinning one leg pins both. */
|
|
1214
|
+
pinned?: boolean;
|
|
1198
1215
|
/**
|
|
1199
1216
|
* @description Discriminator: always `pickup`. (enum property replaced by openapi-typescript)
|
|
1200
1217
|
* @enum {string}
|
|
@@ -1377,7 +1394,7 @@ export interface components {
|
|
|
1377
1394
|
*/
|
|
1378
1395
|
id: string;
|
|
1379
1396
|
/**
|
|
1380
|
-
* Format:
|
|
1397
|
+
* Format: uint32
|
|
1381
1398
|
* @description The cap on counted stops; a job counts as one stop.
|
|
1382
1399
|
* Start, end, break and reload stops in `routes[].stops` do not count; a
|
|
1383
1400
|
* shipment counts as two stops.
|
|
@@ -1421,8 +1438,10 @@ export interface components {
|
|
|
1421
1438
|
* its pickup. A shipment's own id in `stops`, or a shipment carrying the
|
|
1422
1439
|
* `tag` of a `same_vehicle` or `same_day` relation, is rejected with HTTP 400
|
|
1423
1440
|
* `not_supported`: relations never silently skip a member. `same_route`,
|
|
1424
|
-
* `time_lag`, `compatible_vehicles
|
|
1425
|
-
*
|
|
1441
|
+
* `time_lag`, `compatible_vehicles` and `tag_order` reject a shipment with
|
|
1442
|
+
* HTTP 400 as well. `all_or_none` alone takes a shipment's own id, naming both
|
|
1443
|
+
* legs, in a group that is exactly one `consecutive` chain; such a chain may
|
|
1444
|
+
* also be jobs only.
|
|
1426
1445
|
* @example {
|
|
1427
1446
|
* "stops": [
|
|
1428
1447
|
* "job-1",
|
|
@@ -1435,20 +1454,25 @@ export interface components {
|
|
|
1435
1454
|
/**
|
|
1436
1455
|
* All or none
|
|
1437
1456
|
* @description All or none: either every member in `stops` is served, or none is.
|
|
1438
|
-
* Sets no timing;
|
|
1439
|
-
*
|
|
1457
|
+
* Sets no timing; a coupled group takes its timing from the
|
|
1458
|
+
* `synchronized` or `time_lag` relation that names its members. Hard.
|
|
1459
|
+
* Overlapping `all_or_none` relations chain: one on A and B plus
|
|
1440
1460
|
* one on B and C serve all three together or none of them. A group with
|
|
1441
|
-
* a task in a vehicle's locked prefix (`plan.routes[].locked_count`)
|
|
1442
|
-
* exempt. A member that could be served but is held back because
|
|
1461
|
+
* a task in a vehicle's locked prefix (`plan.routes[].locked_count`) or, on solve, a
|
|
1462
|
+
* `pinned` plan stop is exempt. A member that could be served but is held back because
|
|
1443
1463
|
* another cannot reports `all_or_none` in `unassigned[].reasons`.
|
|
1444
1464
|
*
|
|
1445
|
-
*
|
|
1446
|
-
*
|
|
1465
|
+
* A member may be a shipment id (both legs). Members are coupled by
|
|
1466
|
+
* `synchronized`/`time_lag`, or the group's stops (a shipment as its two
|
|
1467
|
+
* legs) are exactly one `consecutive` chain with no member coupled by
|
|
1468
|
+
* `synchronized` or `time_lag`, directly or through a `sequence` or
|
|
1469
|
+
* `consecutive` relation. A task named by neither is rejected with HTTP 400, as is a
|
|
1470
|
+
* shipment-leg id: name the shipment.
|
|
1447
1471
|
*/
|
|
1448
1472
|
RelationAllOrNone: {
|
|
1449
1473
|
/**
|
|
1450
|
-
* @description Job ids, at least two. A shipment
|
|
1451
|
-
*
|
|
1474
|
+
* @description Job ids or shipment ids, at least two. A shipment-leg stop id is
|
|
1475
|
+
* rejected with HTTP 400.
|
|
1452
1476
|
* @example [
|
|
1453
1477
|
* "job-1",
|
|
1454
1478
|
* "job-2"
|
|
@@ -1496,6 +1520,7 @@ export interface components {
|
|
|
1496
1520
|
* route. A member that is unassigned is skipped, so only listed
|
|
1497
1521
|
* neighbours that are both served are adjacent. Members on different
|
|
1498
1522
|
* routes are unconstrained; add `same_route` to keep them together.
|
|
1523
|
+
* Put a chain in an `all_or_none` to serve it whole or not at all.
|
|
1499
1524
|
*/
|
|
1500
1525
|
RelationConsecutive: {
|
|
1501
1526
|
/**
|
|
@@ -1752,14 +1777,14 @@ export interface components {
|
|
|
1752
1777
|
/** @description One problem in a request. */
|
|
1753
1778
|
RequestIssue: {
|
|
1754
1779
|
/**
|
|
1755
|
-
* Format:
|
|
1780
|
+
* Format: uint64
|
|
1756
1781
|
* @description `limit_exceeded` only: the count this request has.
|
|
1757
1782
|
*/
|
|
1758
1783
|
actual?: number | null;
|
|
1759
1784
|
/** @description What is wrong. */
|
|
1760
1785
|
code: components["schemas"]["ErrorItemCode"];
|
|
1761
1786
|
/**
|
|
1762
|
-
* Format:
|
|
1787
|
+
* Format: uint64
|
|
1763
1788
|
* @description `limit_exceeded` only: the published cap.
|
|
1764
1789
|
*/
|
|
1765
1790
|
limit?: number | null;
|
|
@@ -2176,7 +2201,7 @@ export interface components {
|
|
|
2176
2201
|
*/
|
|
2177
2202
|
unassigned_priority: number;
|
|
2178
2203
|
/**
|
|
2179
|
-
* Format:
|
|
2204
|
+
* Format: uint32
|
|
2180
2205
|
* @description How many hard-constraint violations the plan has (the `violations`
|
|
2181
2206
|
* arrays on routes and stops list them). Always `0` on a solve result.
|
|
2182
2207
|
* @example 0
|
|
@@ -2316,7 +2341,7 @@ export interface components {
|
|
|
2316
2341
|
/** @description How the search behind a plan ended. */
|
|
2317
2342
|
SearchInfo: {
|
|
2318
2343
|
/**
|
|
2319
|
-
* Format:
|
|
2344
|
+
* Format: uint64
|
|
2320
2345
|
* @description Search iterations performed. `0` when nothing was searched.
|
|
2321
2346
|
* @example 48210
|
|
2322
2347
|
*/
|
|
@@ -2342,7 +2367,7 @@ export interface components {
|
|
|
2342
2367
|
*/
|
|
2343
2368
|
cost: number;
|
|
2344
2369
|
/**
|
|
2345
|
-
* Format:
|
|
2370
|
+
* Format: uint64
|
|
2346
2371
|
* @description Milliseconds since the search started (the clock of
|
|
2347
2372
|
* `summary.timings.search_ms`).
|
|
2348
2373
|
*/
|
|
@@ -2644,7 +2669,7 @@ export interface components {
|
|
|
2644
2669
|
*/
|
|
2645
2670
|
max_route_duration_s?: number | null;
|
|
2646
2671
|
/**
|
|
2647
|
-
* Format:
|
|
2672
|
+
* Format: uint32
|
|
2648
2673
|
* @description Maximum stops served in this shift; a job counts as one stop.
|
|
2649
2674
|
* Start, end, break and reload stops in `routes[].stops` do not count; a
|
|
2650
2675
|
* shipment counts as two stops.
|
|
@@ -2786,10 +2811,10 @@ export interface components {
|
|
|
2786
2811
|
*/
|
|
2787
2812
|
preferences?: components["schemas"]["VehiclePreference"][] | null;
|
|
2788
2813
|
/**
|
|
2789
|
-
* Format:
|
|
2814
|
+
* Format: uint32
|
|
2790
2815
|
* @description Importance of a must-serve task when not all of them fit: the solver
|
|
2791
|
-
* maximises the summed `priority` of served tasks before any cost.
|
|
2792
|
-
* default `1` (maximise the count). A rank, not money — it never makes a
|
|
2816
|
+
* maximises the summed `priority` of served tasks before any cost. `1` to
|
|
2817
|
+
* `4294967295`, default `1` (maximise the count). A rank, not money — it never makes a
|
|
2793
2818
|
* task droppable; use `drop_cost` for that. Both set is a 400.
|
|
2794
2819
|
* @example 3
|
|
2795
2820
|
*/
|
|
@@ -2931,7 +2956,7 @@ export interface components {
|
|
|
2931
2956
|
*/
|
|
2932
2957
|
polyline?: null | components["schemas"]["PolylineDetail"];
|
|
2933
2958
|
/**
|
|
2934
|
-
* Format:
|
|
2959
|
+
* Format: uint64
|
|
2935
2960
|
* @description Random seed for the search. Default `42`: omitting it is the same as
|
|
2936
2961
|
* sending `42`, so send different values to explore different plans.
|
|
2937
2962
|
* Repeated runs on one machine usually return an identical plan; a
|
|
@@ -3062,7 +3087,10 @@ export interface components {
|
|
|
3062
3087
|
* constraint (e.g. capacity, skills, eligibility, `limits.*`, or a time
|
|
3063
3088
|
* window with no `per_late_hour` set) is left unassigned and the
|
|
3064
3089
|
* search reinserts it wherever it legitimately fits, or it surfaces in
|
|
3065
|
-
* `unassigned[]` with a typed reason.
|
|
3090
|
+
* `unassigned[]` with a typed reason. On synchronous solve and stream, an
|
|
3091
|
+
* infeasible locked or pinned stop is a 400. `POST /v3/routing/runs` checks
|
|
3092
|
+
* the problem at submission, not the plan, so there the run ends `failed`
|
|
3093
|
+
* with `BAD_REQUEST` instead.
|
|
3066
3094
|
*/
|
|
3067
3095
|
plan?: null | components["schemas"]["Plan"];
|
|
3068
3096
|
/** @description The problem: tasks, fleet, depots, relations, objective, travel. */
|
|
@@ -3285,7 +3313,7 @@ export interface components {
|
|
|
3285
3313
|
*/
|
|
3286
3314
|
SuggestOptions: {
|
|
3287
3315
|
/**
|
|
3288
|
-
* Format:
|
|
3316
|
+
* Format: uint32
|
|
3289
3317
|
* @description Max ranked `insertions` in each `suggestions[]` entry, `1` to `10`;
|
|
3290
3318
|
* default 5. It caps the insertions per entry, not the number of
|
|
3291
3319
|
* entries: every task outside `plan` still gets its entry. Values outside
|
|
@@ -3293,7 +3321,7 @@ export interface components {
|
|
|
3293
3321
|
* several stops is searched (such a unit is never searched exhaustively):
|
|
3294
3322
|
* each stop after the unit's first keeps at most
|
|
3295
3323
|
* `max(8, 4 × max_insertions)` partial placements. A `synchronized` or
|
|
3296
|
-
* `time_lag` group is the exception: every start slot of
|
|
3324
|
+
* `time_lag` group is the exception: every start slot of each member is
|
|
3297
3325
|
* tried, each other member at its cheapest slot, whatever this value. A
|
|
3298
3326
|
* single-stop task has every feasible position considered unless
|
|
3299
3327
|
* `time_limit_s` runs out first.
|
|
@@ -3313,6 +3341,15 @@ export interface components {
|
|
|
3313
3341
|
* @example 2.5
|
|
3314
3342
|
*/
|
|
3315
3343
|
time_limit_s?: number | null;
|
|
3344
|
+
/**
|
|
3345
|
+
* @description What to do when travel times cannot be fetched from Solvice Maps, as on
|
|
3346
|
+
* a solve: `estimate` (the default) ranks insertions on estimated travel
|
|
3347
|
+
* and sets the response's `travel_estimated`; `fail` returns the 502/503
|
|
3348
|
+
* instead. Locations that Maps rejects for spanning more than one region
|
|
3349
|
+
* are a 400. No effect with `travel.engine: "straight_line"`.
|
|
3350
|
+
* @default estimate
|
|
3351
|
+
*/
|
|
3352
|
+
travel_fallback?: null | components["schemas"]["TravelFallback"];
|
|
3316
3353
|
};
|
|
3317
3354
|
/**
|
|
3318
3355
|
* @description Why a unit came back with no insertions.
|
|
@@ -3501,11 +3538,22 @@ export interface components {
|
|
|
3501
3538
|
*/
|
|
3502
3539
|
timings: components["schemas"]["Timings"];
|
|
3503
3540
|
/**
|
|
3504
|
-
* @description `true` when
|
|
3541
|
+
* @description `true` when travel times could not be fetched and the insertions were
|
|
3542
|
+
* ranked on estimated travel, as `summary.travel_estimated` on a solve:
|
|
3543
|
+
* straight-line distance × a detour factor, at a typical speed for the
|
|
3544
|
+
* profile. Every `delta`, arrival and feasibility verdict holds only
|
|
3545
|
+
* against it. Send `options.travel_fallback: "fail"` to get the error
|
|
3546
|
+
* instead. Absent when travel came from the requested engine,
|
|
3547
|
+
* `straight_line` included.
|
|
3548
|
+
*/
|
|
3549
|
+
travel_estimated?: boolean;
|
|
3550
|
+
/**
|
|
3551
|
+
* @description `true` when `options.time_limit_s` cut the search short, a
|
|
3505
3552
|
* multi-member unit came back empty after the search had discarded
|
|
3506
3553
|
* candidates (an inconclusive "not found"; its `reason.code` is
|
|
3507
|
-
* `candidates_exhausted`)
|
|
3508
|
-
*
|
|
3554
|
+
* `candidates_exhausted`), or a crew lists fewer than `max_insertions`
|
|
3555
|
+
* after a member's cheapest slot was refused and its other slots went
|
|
3556
|
+
* untried. Lists may then be incomplete or missing the best insertion. A single visit's only level is never pruned, so its
|
|
3509
3557
|
* empty list is proof of infeasibility unless the budget cut it, and its
|
|
3510
3558
|
* `reason.code` is then `time_limit`.
|
|
3511
3559
|
*/
|
|
@@ -3587,7 +3635,7 @@ export interface components {
|
|
|
3587
3635
|
/** @description How the search ended. */
|
|
3588
3636
|
search: components["schemas"]["SearchInfo"];
|
|
3589
3637
|
/**
|
|
3590
|
-
* Format:
|
|
3638
|
+
* Format: uint32
|
|
3591
3639
|
* @description Routes with at least one task stop: one per used shift.
|
|
3592
3640
|
* @example 1
|
|
3593
3641
|
*/
|
|
@@ -3605,13 +3653,13 @@ export interface components {
|
|
|
3605
3653
|
* can be tens of percent off: the plan, `unassigned[].reasons` and
|
|
3606
3654
|
* `score.violation_count` hold only against it, and no `routes[].polyline`
|
|
3607
3655
|
* is returned. Solve again once Maps is back if the plan must hold on the
|
|
3608
|
-
* road; on a solve, `options.travel_fallback: "fail"` returns
|
|
3609
|
-
* instead. Absent when travel came from the requested engine,
|
|
3656
|
+
* road; on a solve or suggest, `options.travel_fallback: "fail"` returns
|
|
3657
|
+
* the error instead. Absent when travel came from the requested engine,
|
|
3610
3658
|
* `straight_line` included.
|
|
3611
3659
|
*/
|
|
3612
3660
|
travel_estimated?: boolean;
|
|
3613
3661
|
/**
|
|
3614
|
-
* Format:
|
|
3662
|
+
* Format: uint32
|
|
3615
3663
|
* @description Distinct vehicles with at least one route.
|
|
3616
3664
|
* @example 1
|
|
3617
3665
|
*/
|
|
@@ -3690,17 +3738,17 @@ export interface components {
|
|
|
3690
3738
|
*/
|
|
3691
3739
|
TaskCounts: {
|
|
3692
3740
|
/**
|
|
3693
|
-
* Format:
|
|
3741
|
+
* Format: uint32
|
|
3694
3742
|
* @description Tasks on a route.
|
|
3695
3743
|
*/
|
|
3696
3744
|
served: number;
|
|
3697
3745
|
/**
|
|
3698
|
-
* Format:
|
|
3746
|
+
* Format: uint32
|
|
3699
3747
|
* @description Tasks on no route: the length of `unassigned`.
|
|
3700
3748
|
*/
|
|
3701
3749
|
unassigned: number;
|
|
3702
3750
|
/**
|
|
3703
|
-
* Format:
|
|
3751
|
+
* Format: uint32
|
|
3704
3752
|
* @description The unassigned tasks that carry no `drop_cost`: tasks the plan was
|
|
3705
3753
|
* required to serve and did not.
|
|
3706
3754
|
*/
|
|
@@ -3918,13 +3966,13 @@ export interface components {
|
|
|
3918
3966
|
*/
|
|
3919
3967
|
Timings: {
|
|
3920
3968
|
/**
|
|
3921
|
-
* Format:
|
|
3969
|
+
* Format: uint64
|
|
3922
3970
|
* @description Time spent in the search. Absent on `/evaluate`, which runs none, and
|
|
3923
3971
|
* on `/suggest`, which has no separate search figure.
|
|
3924
3972
|
*/
|
|
3925
3973
|
search_ms?: number | null;
|
|
3926
3974
|
/**
|
|
3927
|
-
* Format:
|
|
3975
|
+
* Format: uint64
|
|
3928
3976
|
* @description From the request's arrival to the end of the search (of the scoring,
|
|
3929
3977
|
* on `/evaluate`; of the suggestion search, on `/suggest`): fetching
|
|
3930
3978
|
* travel times and waiting for capacity included, building the response
|
|
@@ -3974,8 +4022,8 @@ export interface components {
|
|
|
3974
4022
|
speed_kmh?: number | null;
|
|
3975
4023
|
};
|
|
3976
4024
|
/**
|
|
3977
|
-
* @description `options.travel_fallback`: what a solve does when travel times
|
|
3978
|
-
* fetched. `/evaluate`
|
|
4025
|
+
* @description `options.travel_fallback`: what a solve or suggest does when travel times
|
|
4026
|
+
* cannot be fetched. `/evaluate` always estimates.
|
|
3979
4027
|
* @example estimate
|
|
3980
4028
|
* @enum {string}
|
|
3981
4029
|
*/
|
|
@@ -4285,7 +4333,7 @@ export interface components {
|
|
|
4285
4333
|
*/
|
|
4286
4334
|
max_route_duration_s?: number | null;
|
|
4287
4335
|
/**
|
|
4288
|
-
* Format:
|
|
4336
|
+
* Format: uint32
|
|
4289
4337
|
* @description Maximum stops served per shift; a job counts as one stop.
|
|
4290
4338
|
* Start, end, break and reload stops in `routes[].stops` do not count; a
|
|
4291
4339
|
* shipment counts as two stops.
|
|
@@ -4827,7 +4875,18 @@ export interface operations {
|
|
|
4827
4875
|
"application/json": components["schemas"]["ErrorBody"];
|
|
4828
4876
|
};
|
|
4829
4877
|
};
|
|
4830
|
-
/** @description
|
|
4878
|
+
/** @description Travel times and distances could not be fetched (`code: travel_provider_error`). The request can be retried. Only with `options.travel_fallback: "fail"`; by default the insertions are ranked on estimated travel and `travel_estimated` is set. */
|
|
4879
|
+
502: {
|
|
4880
|
+
headers: {
|
|
4881
|
+
/** @description The request's `X-Request-Id`, echoed, or a generated `req_…` id. */
|
|
4882
|
+
"x-request-id"?: string;
|
|
4883
|
+
[name: string]: unknown;
|
|
4884
|
+
};
|
|
4885
|
+
content: {
|
|
4886
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
4887
|
+
};
|
|
4888
|
+
};
|
|
4889
|
+
/** @description No capacity right now (`code: overloaded`): every solver slot is busy, or the wait for one timed out. With `options.travel_fallback: "fail"`, also returned while Solvice Maps is temporarily refused after repeated failures. Retry after the number of seconds in the `Retry-After` header. */
|
|
4831
4890
|
503: {
|
|
4832
4891
|
headers: {
|
|
4833
4892
|
/** @description Seconds to wait before retrying. */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@solvice/routing",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.4-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",
|