@solvice/routing 0.17.8-beta.0 → 0.18.0-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
@@ -697,10 +697,11 @@ export interface components {
697
697
  time_windows?: components["schemas"]["TimeWindow"][] | null;
698
698
  };
699
699
  /**
700
- * @description Which road-network data prices travel times and distances.
700
+ * @description Which data prices travel times and distances. Omitted, it follows
701
+ * `travel.departure_time`: `osm` without one, `tomtom` with one.
701
702
  *
702
- * - `tomtom` (default): TomTom historical-typical traffic at the departure
703
- * time.
703
+ * - `tomtom`: TomTom historical-typical traffic at the departure time, or at
704
+ * the moment of the request without one.
704
705
  * - `osm`: OpenStreetMap free-flow times. No traffic, so
705
706
  * `travel.departure_time` is rejected with 400.
706
707
  * - `tomtom_real_time`: TomTom live traffic at the moment of the request.
@@ -708,10 +709,13 @@ export interface components {
708
709
  * `travel.departure_time` is rejected; every vehicle must use the `car`
709
710
  * profile; at most 100 distinct locations; up to ~25 s of matrix fetch at
710
711
  * 100 locations.
712
+ * - `straight_line`: great-circle distance at `travel.speed_kmh`, no road
713
+ * network. `travel.departure_time`, `options.polyline` and any vehicle
714
+ * `profile` other than `car` are rejected with 400.
711
715
  * @example osm
712
716
  * @enum {string}
713
717
  */
714
- MatrixEngine: "tomtom" | "osm" | "tomtom_real_time";
718
+ MatrixEngine: "tomtom" | "osm" | "tomtom_real_time" | "straight_line";
715
719
  /**
716
720
  * @description Top-level objective configuration.
717
721
  *
@@ -1158,7 +1162,7 @@ export interface components {
1158
1162
  * "type": "sequence"
1159
1163
  * }
1160
1164
  */
1161
- Relation: components["schemas"]["RelationSequence"] | components["schemas"]["RelationTagOrder"] | components["schemas"]["RelationSameVehicle"] | components["schemas"]["RelationSameDay"] | components["schemas"]["RelationSameRoute"] | components["schemas"]["RelationSynchronized"] | components["schemas"]["RelationTimeLag"] | components["schemas"]["RelationCompatibleVehicles"] | components["schemas"]["RelationAllOrNone"];
1165
+ Relation: components["schemas"]["RelationSequence"] | components["schemas"]["RelationConsecutive"] | components["schemas"]["RelationTagOrder"] | components["schemas"]["RelationSameVehicle"] | components["schemas"]["RelationSameDay"] | components["schemas"]["RelationSameRoute"] | components["schemas"]["RelationSynchronized"] | components["schemas"]["RelationTimeLag"] | components["schemas"]["RelationCompatibleVehicles"] | components["schemas"]["RelationAllOrNone"];
1162
1166
  /**
1163
1167
  * All or none
1164
1168
  * @description All or none: either every member in `stops` is served, or none is.
@@ -1216,6 +1220,29 @@ export interface components {
1216
1220
  */
1217
1221
  type: "compatible_vehicles";
1218
1222
  };
1223
+ /**
1224
+ * Consecutive
1225
+ * @description Ordering with no gap: like `sequence`, and in addition no other stop may
1226
+ * sit between two neighbouring members that are served on the same
1227
+ * route. A member that is unassigned is skipped, so only listed
1228
+ * neighbours that are both served are adjacent. Members on different
1229
+ * routes are unconstrained; add `same_route` to keep them together.
1230
+ */
1231
+ RelationConsecutive: {
1232
+ /**
1233
+ * @description Job ids or shipment-leg stop ids, in the order they must be served
1234
+ * back to back. At least 2. A stop has one successor and one predecessor
1235
+ * across all `consecutive` relations, so `[a, b]` and `[b, c]` may
1236
+ * overlap but `[a, b]` and `[a, c]` may not. A shipment's own id is rejected with HTTP
1237
+ * 400 `not_supported`.
1238
+ */
1239
+ stops: string[];
1240
+ /**
1241
+ * @description Discriminator: always `consecutive`. (enum property replaced by openapi-typescript)
1242
+ * @enum {string}
1243
+ */
1244
+ type: "consecutive";
1245
+ };
1219
1246
  /**
1220
1247
  * @description Which instant of a member a `synchronized` or `time_lag` relation is
1221
1248
  * measured at, named after the response stop field that reports it. There is
@@ -1974,6 +2001,7 @@ export interface components {
1974
2001
  * `estimate` (the default) solves on estimated travel and sets
1975
2002
  * `summary.travel_estimated`; `fail` returns the 502/503 instead.
1976
2003
  * Locations that Maps rejects for spanning more than one region are a 400.
2004
+ * No effect with `travel.engine: "straight_line"`, which fetches nothing.
1977
2005
  * @default estimate
1978
2006
  */
1979
2007
  travel_fallback?: null | components["schemas"]["TravelFallback"];
@@ -3196,7 +3224,8 @@ export interface components {
3196
3224
  * `score.violation_count` hold only against it, and no `routes[].polyline`
3197
3225
  * is returned. Solve again once Maps is back if the plan must hold on the
3198
3226
  * road; on a solve, `options.travel_fallback: "fail"` returns the error
3199
- * instead. Absent when travel is road-routed.
3227
+ * instead. Absent when travel came from the requested engine,
3228
+ * `straight_line` included.
3200
3229
  */
3201
3230
  travel_estimated?: boolean;
3202
3231
  /**
@@ -3222,7 +3251,8 @@ export interface components {
3222
3251
  /**
3223
3252
  * Format: double
3224
3253
  * @description Cost, in the objective's currency, incurred when a task without this
3225
- * tag is served. Must be finite and `>= 0`.
3254
+ * tag is served. Must be finite and `>= 0`, and one vehicle's entries
3255
+ * must sum to at most 21474.83647 (a task lacking every tag pays them all).
3226
3256
  * @example 25
3227
3257
  */
3228
3258
  violation_cost: number;
@@ -3464,11 +3494,13 @@ export interface components {
3464
3494
  /**
3465
3495
  * @description Where travel times and distances come from.
3466
3496
  *
3467
- * Matrices are traffic-aware (historical-typical traffic); by default travel
3468
- * times reflect traffic at the moment the request is processed. Set
3469
- * `departure_time` to plan against another instant — e.g. tomorrow's 08:00
3470
- * routes with morning-rush travel times, or a replay of a past run under its
3471
- * original conditions.
3497
+ * Omitted altogether, travel times are free-flow (`osm`): the same request
3498
+ * prices the same at any hour. Set `departure_time` to plan against an
3499
+ * instant's traffic — e.g. tomorrow's 08:00 routes with morning-rush travel
3500
+ * times, or a replay of a past run under its original conditions; the engine
3501
+ * is then `tomtom`. Set `engine: tomtom` alone for traffic at the moment the
3502
+ * request is processed. `engine: "straight_line"` skips the road network for
3503
+ * great-circle travel at `speed_kmh`.
3472
3504
  * @example {
3473
3505
  * "departure_time": "2026-07-01T08:00:00+02:00",
3474
3506
  * "engine": "tomtom"
@@ -3478,16 +3510,27 @@ export interface components {
3478
3510
  /**
3479
3511
  * Format: date-time
3480
3512
  * @description Departure time for the traffic lookup (RFC 3339 instant, any offset).
3481
- * Omitted → traffic at solve time. An explicit departure time bypasses
3482
- * the server-side matrix cache.
3513
+ * Omitted → free-flow times, or traffic at solve time with `engine:
3514
+ * tomtom`. An explicit departure time bypasses the server-side matrix
3515
+ * cache.
3483
3516
  * @example 2026-07-01T08:00:00+02:00
3484
3517
  */
3485
3518
  departure_time?: string | null;
3486
3519
  /**
3487
- * @description Road-network data behind travel times and distances. Omitted →
3488
- * `tomtom`.
3520
+ * @description Data behind travel times and distances. Omitted → `osm`, or `tomtom`
3521
+ * when `departure_time` is set.
3489
3522
  */
3490
3523
  engine?: null | components["schemas"]["MatrixEngine"];
3524
+ /**
3525
+ * Format: double
3526
+ * @description Travel speed for `engine: "straight_line"`, in km/h: each leg takes its
3527
+ * great-circle distance at this speed, rounded to the whole second. `1` to
3528
+ * `1000`, default `50`; `vehicles[].speed_factor` still scales it per
3529
+ * vehicle. Any other engine rejects it (HTTP 400 `conflicting_fields`).
3530
+ * @default 50
3531
+ * @example 50
3532
+ */
3533
+ speed_kmh?: number | null;
3491
3534
  };
3492
3535
  /**
3493
3536
  * @description `options.travel_fallback`: what a solve does when travel times cannot be
package/dist/v3.d.ts CHANGED
@@ -883,10 +883,11 @@ export interface components {
883
883
  time_windows?: components["schemas"]["TimeWindow"][] | null;
884
884
  };
885
885
  /**
886
- * @description Which road-network data prices travel times and distances.
886
+ * @description Which data prices travel times and distances. Omitted, it follows
887
+ * `travel.departure_time`: `osm` without one, `tomtom` with one.
887
888
  *
888
- * - `tomtom` (default): TomTom historical-typical traffic at the departure
889
- * time.
889
+ * - `tomtom`: TomTom historical-typical traffic at the departure time, or at
890
+ * the moment of the request without one.
890
891
  * - `osm`: OpenStreetMap free-flow times. No traffic, so
891
892
  * `travel.departure_time` is rejected with 400.
892
893
  * - `tomtom_real_time`: TomTom live traffic at the moment of the request.
@@ -894,10 +895,13 @@ export interface components {
894
895
  * `travel.departure_time` is rejected; every vehicle must use the `car`
895
896
  * profile; at most 100 distinct locations; up to ~25 s of matrix fetch at
896
897
  * 100 locations.
898
+ * - `straight_line`: great-circle distance at `travel.speed_kmh`, no road
899
+ * network. `travel.departure_time`, `options.polyline` and any vehicle
900
+ * `profile` other than `car` are rejected with 400.
897
901
  * @example osm
898
902
  * @enum {string}
899
903
  */
900
- MatrixEngine: "tomtom" | "osm" | "tomtom_real_time";
904
+ MatrixEngine: "tomtom" | "osm" | "tomtom_real_time" | "straight_line";
901
905
  /**
902
906
  * @description Top-level objective configuration.
903
907
  *
@@ -1391,7 +1395,7 @@ export interface components {
1391
1395
  * "type": "sequence"
1392
1396
  * }
1393
1397
  */
1394
- Relation: components["schemas"]["RelationSequence"] | components["schemas"]["RelationTagOrder"] | components["schemas"]["RelationSameVehicle"] | components["schemas"]["RelationSameDay"] | components["schemas"]["RelationSameRoute"] | components["schemas"]["RelationSynchronized"] | components["schemas"]["RelationTimeLag"] | components["schemas"]["RelationCompatibleVehicles"] | components["schemas"]["RelationAllOrNone"];
1398
+ Relation: components["schemas"]["RelationSequence"] | components["schemas"]["RelationConsecutive"] | components["schemas"]["RelationTagOrder"] | components["schemas"]["RelationSameVehicle"] | components["schemas"]["RelationSameDay"] | components["schemas"]["RelationSameRoute"] | components["schemas"]["RelationSynchronized"] | components["schemas"]["RelationTimeLag"] | components["schemas"]["RelationCompatibleVehicles"] | components["schemas"]["RelationAllOrNone"];
1395
1399
  /**
1396
1400
  * All or none
1397
1401
  * @description All or none: either every member in `stops` is served, or none is.
@@ -1449,6 +1453,29 @@ export interface components {
1449
1453
  */
1450
1454
  type: "compatible_vehicles";
1451
1455
  };
1456
+ /**
1457
+ * Consecutive
1458
+ * @description Ordering with no gap: like `sequence`, and in addition no other stop may
1459
+ * sit between two neighbouring members that are served on the same
1460
+ * route. A member that is unassigned is skipped, so only listed
1461
+ * neighbours that are both served are adjacent. Members on different
1462
+ * routes are unconstrained; add `same_route` to keep them together.
1463
+ */
1464
+ RelationConsecutive: {
1465
+ /**
1466
+ * @description Job ids or shipment-leg stop ids, in the order they must be served
1467
+ * back to back. At least 2. A stop has one successor and one predecessor
1468
+ * across all `consecutive` relations, so `[a, b]` and `[b, c]` may
1469
+ * overlap but `[a, b]` and `[a, c]` may not. A shipment's own id is rejected with HTTP
1470
+ * 400 `not_supported`.
1471
+ */
1472
+ stops: string[];
1473
+ /**
1474
+ * @description Discriminator: always `consecutive`. (enum property replaced by openapi-typescript)
1475
+ * @enum {string}
1476
+ */
1477
+ type: "consecutive";
1478
+ };
1452
1479
  /**
1453
1480
  * @description Which instant of a member a `synchronized` or `time_lag` relation is
1454
1481
  * measured at, named after the response stop field that reports it. There is
@@ -2855,6 +2882,7 @@ export interface components {
2855
2882
  * `estimate` (the default) solves on estimated travel and sets
2856
2883
  * `summary.travel_estimated`; `fail` returns the 502/503 instead.
2857
2884
  * Locations that Maps rejects for spanning more than one region are a 400.
2885
+ * No effect with `travel.engine: "straight_line"`, which fetches nothing.
2858
2886
  * @default estimate
2859
2887
  */
2860
2888
  travel_fallback?: null | components["schemas"]["TravelFallback"];
@@ -3500,7 +3528,8 @@ export interface components {
3500
3528
  * `score.violation_count` hold only against it, and no `routes[].polyline`
3501
3529
  * is returned. Solve again once Maps is back if the plan must hold on the
3502
3530
  * road; on a solve, `options.travel_fallback: "fail"` returns the error
3503
- * instead. Absent when travel is road-routed.
3531
+ * instead. Absent when travel came from the requested engine,
3532
+ * `straight_line` included.
3504
3533
  */
3505
3534
  travel_estimated?: boolean;
3506
3535
  /**
@@ -3526,7 +3555,8 @@ export interface components {
3526
3555
  /**
3527
3556
  * Format: double
3528
3557
  * @description Cost, in the objective's currency, incurred when a task without this
3529
- * tag is served. Must be finite and `>= 0`.
3558
+ * tag is served. Must be finite and `>= 0`, and one vehicle's entries
3559
+ * must sum to at most 21474.83647 (a task lacking every tag pays them all).
3530
3560
  * @example 25
3531
3561
  */
3532
3562
  violation_cost: number;
@@ -3827,11 +3857,13 @@ export interface components {
3827
3857
  /**
3828
3858
  * @description Where travel times and distances come from.
3829
3859
  *
3830
- * Matrices are traffic-aware (historical-typical traffic); by default travel
3831
- * times reflect traffic at the moment the request is processed. Set
3832
- * `departure_time` to plan against another instant — e.g. tomorrow's 08:00
3833
- * routes with morning-rush travel times, or a replay of a past run under its
3834
- * original conditions.
3860
+ * Omitted altogether, travel times are free-flow (`osm`): the same request
3861
+ * prices the same at any hour. Set `departure_time` to plan against an
3862
+ * instant's traffic — e.g. tomorrow's 08:00 routes with morning-rush travel
3863
+ * times, or a replay of a past run under its original conditions; the engine
3864
+ * is then `tomtom`. Set `engine: tomtom` alone for traffic at the moment the
3865
+ * request is processed. `engine: "straight_line"` skips the road network for
3866
+ * great-circle travel at `speed_kmh`.
3835
3867
  * @example {
3836
3868
  * "departure_time": "2026-07-01T08:00:00+02:00",
3837
3869
  * "engine": "tomtom"
@@ -3841,16 +3873,27 @@ export interface components {
3841
3873
  /**
3842
3874
  * Format: date-time
3843
3875
  * @description Departure time for the traffic lookup (RFC 3339 instant, any offset).
3844
- * Omitted → traffic at solve time. An explicit departure time bypasses
3845
- * the server-side matrix cache.
3876
+ * Omitted → free-flow times, or traffic at solve time with `engine:
3877
+ * tomtom`. An explicit departure time bypasses the server-side matrix
3878
+ * cache.
3846
3879
  * @example 2026-07-01T08:00:00+02:00
3847
3880
  */
3848
3881
  departure_time?: string | null;
3849
3882
  /**
3850
- * @description Road-network data behind travel times and distances. Omitted →
3851
- * `tomtom`.
3883
+ * @description Data behind travel times and distances. Omitted → `osm`, or `tomtom`
3884
+ * when `departure_time` is set.
3852
3885
  */
3853
3886
  engine?: null | components["schemas"]["MatrixEngine"];
3887
+ /**
3888
+ * Format: double
3889
+ * @description Travel speed for `engine: "straight_line"`, in km/h: each leg takes its
3890
+ * great-circle distance at this speed, rounded to the whole second. `1` to
3891
+ * `1000`, default `50`; `vehicles[].speed_factor` still scales it per
3892
+ * vehicle. Any other engine rejects it (HTTP 400 `conflicting_fields`).
3893
+ * @default 50
3894
+ * @example 50
3895
+ */
3896
+ speed_kmh?: number | null;
3854
3897
  };
3855
3898
  /**
3856
3899
  * @description `options.travel_fallback`: what a solve does when travel times cannot be
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solvice/routing",
3
- "version": "0.17.8-beta.0",
3
+ "version": "0.18.0-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",