@solvice/routing 0.19.3-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 CHANGED
@@ -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}
@@ -1193,8 +1210,8 @@ export interface components {
1193
1210
  * `synchronized` or `time_lag` relation that names its members. Hard.
1194
1211
  * Overlapping `all_or_none` relations chain: one on A and B plus
1195
1212
  * one on B and C serve all three together or none of them. A group with
1196
- * a task in a vehicle's locked prefix (`plan.routes[].locked_count`) is
1197
- * 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
1198
1215
  * another cannot reports `all_or_none` in `unassigned[].reasons`.
1199
1216
  *
1200
1217
  * A member may be a shipment id (both legs). Members are coupled by
@@ -2152,7 +2169,10 @@ export interface components {
2152
2169
  * constraint (e.g. capacity, skills, eligibility, `limits.*`, or a time
2153
2170
  * window with no `per_late_hour` set) is left unassigned and the
2154
2171
  * search reinserts it wherever it legitimately fits, or it surfaces in
2155
- * `unassigned[]` with a typed reason. An infeasible locked stop is a 400.
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.
2156
2176
  */
2157
2177
  plan?: null | components["schemas"]["Plan"];
2158
2178
  /** @description The problem: tasks, fleet, depots, relations, objective, travel. */
@@ -3290,8 +3310,8 @@ export interface components {
3290
3310
  * can be tens of percent off: the plan, `unassigned[].reasons` and
3291
3311
  * `score.violation_count` hold only against it, and no `routes[].polyline`
3292
3312
  * is returned. Solve again once Maps is back if the plan must hold on the
3293
- * road; on a solve, `options.travel_fallback: "fail"` returns the error
3294
- * 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,
3295
3315
  * `straight_line` included.
3296
3316
  */
3297
3317
  travel_estimated?: boolean;
@@ -3600,8 +3620,8 @@ export interface components {
3600
3620
  speed_kmh?: number | null;
3601
3621
  };
3602
3622
  /**
3603
- * @description `options.travel_fallback`: what a solve does when travel times cannot be
3604
- * fetched. `/evaluate` and `/suggest` always estimate.
3623
+ * @description `options.travel_fallback`: what a solve or suggest does when travel times
3624
+ * cannot be fetched. `/evaluate` always estimates.
3605
3625
  * @example estimate
3606
3626
  * @enum {string}
3607
3627
  */
package/dist/v3.d.ts CHANGED
@@ -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}
@@ -1441,8 +1458,8 @@ export interface components {
1441
1458
  * `synchronized` or `time_lag` relation that names its members. Hard.
1442
1459
  * Overlapping `all_or_none` relations chain: one on A and B plus
1443
1460
  * one on B and C serve all three together or none of them. A group with
1444
- * a task in a vehicle's locked prefix (`plan.routes[].locked_count`) is
1445
- * 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
1446
1463
  * another cannot reports `all_or_none` in `unassigned[].reasons`.
1447
1464
  *
1448
1465
  * A member may be a shipment id (both legs). Members are coupled by
@@ -3070,7 +3087,10 @@ export interface components {
3070
3087
  * constraint (e.g. capacity, skills, eligibility, `limits.*`, or a time
3071
3088
  * window with no `per_late_hour` set) is left unassigned and the
3072
3089
  * search reinserts it wherever it legitimately fits, or it surfaces in
3073
- * `unassigned[]` with a typed reason. An infeasible locked stop is a 400.
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.
3074
3094
  */
3075
3095
  plan?: null | components["schemas"]["Plan"];
3076
3096
  /** @description The problem: tasks, fleet, depots, relations, objective, travel. */
@@ -3321,6 +3341,15 @@ export interface components {
3321
3341
  * @example 2.5
3322
3342
  */
3323
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"];
3324
3353
  };
3325
3354
  /**
3326
3355
  * @description Why a unit came back with no insertions.
@@ -3508,6 +3537,16 @@ export interface components {
3508
3537
  * suggest has no separate search figure.
3509
3538
  */
3510
3539
  timings: components["schemas"]["Timings"];
3540
+ /**
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;
3511
3550
  /**
3512
3551
  * @description `true` when `options.time_limit_s` cut the search short, a
3513
3552
  * multi-member unit came back empty after the search had discarded
@@ -3614,8 +3653,8 @@ export interface components {
3614
3653
  * can be tens of percent off: the plan, `unassigned[].reasons` and
3615
3654
  * `score.violation_count` hold only against it, and no `routes[].polyline`
3616
3655
  * is returned. Solve again once Maps is back if the plan must hold on the
3617
- * road; on a solve, `options.travel_fallback: "fail"` returns the error
3618
- * 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,
3619
3658
  * `straight_line` included.
3620
3659
  */
3621
3660
  travel_estimated?: boolean;
@@ -3983,8 +4022,8 @@ export interface components {
3983
4022
  speed_kmh?: number | null;
3984
4023
  };
3985
4024
  /**
3986
- * @description `options.travel_fallback`: what a solve does when travel times cannot be
3987
- * fetched. `/evaluate` and `/suggest` always estimate.
4025
+ * @description `options.travel_fallback`: what a solve or suggest does when travel times
4026
+ * cannot be fetched. `/evaluate` always estimates.
3988
4027
  * @example estimate
3989
4028
  * @enum {string}
3990
4029
  */
@@ -4836,7 +4875,18 @@ export interface operations {
4836
4875
  "application/json": components["schemas"]["ErrorBody"];
4837
4876
  };
4838
4877
  };
4839
- /** @description No capacity right now (`code: overloaded`): every solver slot is busy, or the wait for one timed out. Retry after the number of seconds in the `Retry-After` header. */
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. */
4840
4890
  503: {
4841
4891
  headers: {
4842
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-beta.0",
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",