@vindentech/api-client 0.3.0-next.77 → 0.3.0-next.78

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.
Files changed (46) hide show
  1. package/README.md +1 -1
  2. package/dist/generated/_all.d.ts +0 -4
  3. package/dist/generated/_all.d.ts.map +1 -1
  4. package/dist/generated/_all.js +0 -4
  5. package/dist/generated/_all.js.map +1 -1
  6. package/dist/generated/_permissions.d.ts +5 -65
  7. package/dist/generated/_permissions.d.ts.map +1 -1
  8. package/dist/generated/_permissions.js +1 -16
  9. package/dist/generated/_permissions.js.map +1 -1
  10. package/dist/generated/index.schemas.d.ts +181 -522
  11. package/dist/generated/index.schemas.d.ts.map +1 -1
  12. package/dist/generated/index.schemas.js +17 -70
  13. package/dist/generated/index.schemas.js.map +1 -1
  14. package/dist/generated/merchandise-checkout/merchandise-checkout.d.ts +1 -1
  15. package/dist/generated/merchandise-checkout/merchandise-checkout.js +1 -1
  16. package/dist/generated/price-book/price-book.d.ts +1 -1
  17. package/dist/generated/price-book/price-book.js +1 -1
  18. package/dist/generated/pricing-rules/pricing-rules.d.ts +42 -3
  19. package/dist/generated/pricing-rules/pricing-rules.d.ts.map +1 -1
  20. package/dist/generated/pricing-rules/pricing-rules.js +24 -2
  21. package/dist/generated/pricing-rules/pricing-rules.js.map +1 -1
  22. package/dist/generated/transport-services/transport-services.d.ts +19 -19
  23. package/dist/generated/transport-services/transport-services.d.ts.map +1 -1
  24. package/dist/generated/transport-services/transport-services.js +2 -25
  25. package/dist/generated/transport-services/transport-services.js.map +1 -1
  26. package/dist/generated/warehouse-orders/warehouse-orders.d.ts +1 -15
  27. package/dist/generated/warehouse-orders/warehouse-orders.d.ts.map +1 -1
  28. package/dist/generated/warehouse-orders/warehouse-orders.js +0 -14
  29. package/dist/generated/warehouse-orders/warehouse-orders.js.map +1 -1
  30. package/package.json +1 -1
  31. package/dist/generated/price-lists/price-lists.d.ts +0 -143
  32. package/dist/generated/price-lists/price-lists.d.ts.map +0 -1
  33. package/dist/generated/price-lists/price-lists.js +0 -180
  34. package/dist/generated/price-lists/price-lists.js.map +0 -1
  35. package/dist/generated/price-suggestion/price-suggestion.d.ts +0 -24
  36. package/dist/generated/price-suggestion/price-suggestion.d.ts.map +0 -1
  37. package/dist/generated/price-suggestion/price-suggestion.js +0 -23
  38. package/dist/generated/price-suggestion/price-suggestion.js.map +0 -1
  39. package/dist/generated/service-catalog/service-catalog.d.ts +0 -24
  40. package/dist/generated/service-catalog/service-catalog.d.ts.map +0 -1
  41. package/dist/generated/service-catalog/service-catalog.js +0 -16
  42. package/dist/generated/service-catalog/service-catalog.js.map +0 -1
  43. package/dist/generated/tenant-services/tenant-services.d.ts +0 -66
  44. package/dist/generated/tenant-services/tenant-services.d.ts.map +0 -1
  45. package/dist/generated/tenant-services/tenant-services.js +0 -80
  46. package/dist/generated/tenant-services/tenant-services.js.map +0 -1
@@ -1724,77 +1724,6 @@ export interface ModuleToggleDto {
1724
1724
  export interface UpdateTenantModulesDto {
1725
1725
  modules: ModuleToggleDto[];
1726
1726
  }
1727
- export interface ServiceCatalogDto {
1728
- serviceCode: string;
1729
- name: string;
1730
- category: string;
1731
- /** @nullable */
1732
- description: string | null;
1733
- }
1734
- export type TenantServiceDtoDispatchMode = typeof TenantServiceDtoDispatchMode[keyof typeof TenantServiceDtoDispatchMode];
1735
- export declare const TenantServiceDtoDispatchMode: {
1736
- readonly RIDES_LEG: "RIDES_LEG";
1737
- readonly OWN_VISIT: "OWN_VISIT";
1738
- readonly EITHER: "EITHER";
1739
- };
1740
- export type TenantServiceDtoConfig = {
1741
- [key: string]: unknown;
1742
- };
1743
- export interface TenantServiceDto {
1744
- tenantServiceId: string;
1745
- serviceCode: string;
1746
- /** Joined from service_catalog. */
1747
- serviceName: string;
1748
- /** Joined from service_catalog. */
1749
- category: string;
1750
- isActive: boolean;
1751
- /** @nullable */
1752
- billingArticleId: string | null;
1753
- dispatchMode: TenantServiceDtoDispatchMode;
1754
- /** @nullable */
1755
- dispatchTransportServiceId: string | null;
1756
- config: TenantServiceDtoConfig;
1757
- createdAt: string;
1758
- updatedAt: string;
1759
- }
1760
- export type CreateTenantServiceDtoDispatchMode = typeof CreateTenantServiceDtoDispatchMode[keyof typeof CreateTenantServiceDtoDispatchMode];
1761
- export declare const CreateTenantServiceDtoDispatchMode: {
1762
- readonly RIDES_LEG: "RIDES_LEG";
1763
- readonly OWN_VISIT: "OWN_VISIT";
1764
- readonly EITHER: "EITHER";
1765
- };
1766
- /**
1767
- * Per-service operational config (JSONB).
1768
- */
1769
- export type CreateTenantServiceDtoConfig = {
1770
- [key: string]: unknown;
1771
- };
1772
- export interface CreateTenantServiceDto {
1773
- /** FK → service_catalog.service_code. */
1774
- serviceCode: string;
1775
- isActive?: boolean;
1776
- billingArticleId?: string;
1777
- dispatchMode?: CreateTenantServiceDtoDispatchMode;
1778
- dispatchTransportServiceId?: string;
1779
- /** Per-service operational config (JSONB). */
1780
- config?: CreateTenantServiceDtoConfig;
1781
- }
1782
- export type UpdateTenantServiceDtoDispatchMode = typeof UpdateTenantServiceDtoDispatchMode[keyof typeof UpdateTenantServiceDtoDispatchMode];
1783
- export declare const UpdateTenantServiceDtoDispatchMode: {
1784
- readonly RIDES_LEG: "RIDES_LEG";
1785
- readonly OWN_VISIT: "OWN_VISIT";
1786
- readonly EITHER: "EITHER";
1787
- };
1788
- export type UpdateTenantServiceDtoConfig = {
1789
- [key: string]: unknown;
1790
- };
1791
- export interface UpdateTenantServiceDto {
1792
- isActive?: boolean;
1793
- billingArticleId?: string;
1794
- dispatchMode?: UpdateTenantServiceDtoDispatchMode;
1795
- dispatchTransportServiceId?: string;
1796
- config?: UpdateTenantServiceDtoConfig;
1797
- }
1798
1727
  export type CarrierProviderDtoDefaultKind = typeof CarrierProviderDtoDefaultKind[keyof typeof CarrierProviderDtoDefaultKind];
1799
1728
  export declare const CarrierProviderDtoDefaultKind: {
1800
1729
  readonly OWN_FLEET: "OWN_FLEET";
@@ -2511,24 +2440,6 @@ export interface CartItemDto {
2511
2440
  /** @nullable */
2512
2441
  metadata: CartItemDtoMetadata;
2513
2442
  }
2514
- /**
2515
- * @nullable
2516
- */
2517
- export type CartServiceDtoMetadata = {
2518
- [key: string]: unknown;
2519
- } | null;
2520
- export interface CartServiceDto {
2521
- cartExtraServiceId: string;
2522
- serviceCode: string;
2523
- /** @nullable */
2524
- level: string | null;
2525
- /** @nullable */
2526
- quantity: number | null;
2527
- /** @nullable */
2528
- hours: string | null;
2529
- /** @nullable */
2530
- metadata: CartServiceDtoMetadata;
2531
- }
2532
2443
  export interface CartMerchandiseDto {
2533
2444
  cartMerchandiseId: string;
2534
2445
  tenantGoodsId: string;
@@ -2546,7 +2457,7 @@ export interface CartMerchandiseDto {
2546
2457
  */
2547
2458
  name: string | null;
2548
2459
  /**
2549
- * The SKU's display price ex VAT. Not what the quote charges — see `deferred`.
2460
+ * Price ex VAT as a decimal string: what the SKU's pricing rule charges today in the cart's currency, which is what the quote charges for the line. Null when no price is in force.
2550
2461
  * @nullable
2551
2462
  */
2552
2463
  retailPriceExVat: string | null;
@@ -2646,7 +2557,6 @@ export interface CartDto {
2646
2557
  /** @nullable */
2647
2558
  confirmedAt: string | null;
2648
2559
  items: CartItemDto[];
2649
- services: CartServiceDto[];
2650
2560
  /** The merchandise basket. Its prices are NOT in `rates.totals` yet — MERCHANDISE appears in `rates.deferred` until the quote prices it. */
2651
2561
  merchandise: CartMerchandiseDto[];
2652
2562
  holds: CartHoldDto[];
@@ -2656,20 +2566,21 @@ export interface CartDto {
2656
2566
  export type QuoteLineDtoKind = typeof QuoteLineDtoKind[keyof typeof QuoteLineDtoKind];
2657
2567
  export declare const QuoteLineDtoKind: {
2658
2568
  readonly GOODS: "GOODS";
2659
- readonly SERVICE: "SERVICE";
2660
2569
  readonly MERCHANDISE: "MERCHANDISE";
2661
2570
  readonly TRANSPORT: "TRANSPORT";
2662
2571
  readonly INSURANCE: "INSURANCE";
2663
2572
  readonly START_FEE: "START_FEE";
2664
2573
  };
2665
2574
  /**
2666
- * Set on a line that exists only because a contracted minimum applied, so it can be shown as such: `quantity` — a minimum billable volume lifted the quantity (the line carries the difference; the line before it carries what the goods account for), `fee` — a minimum charge topped the component up. The line keeps the kind of the charge it lifts. Absent on every other line.
2575
+ * Set on a line that exists only because a contracted minimum applied, so it can be shown as such: `quantity` — a minimum billable volume lifted the quantity (the line carries the difference; the line before it carries what the goods account for), `fee` — a minimum charge topped the component up, `minimum_amount` — the charge's own minimum price per order lifted it (the line carries the difference, including any minimum billable volume beneath it; the line before it carries what the goods account for), `minimum_monthly_fee` — the storage came in under its minimum monthly fee after every campaign, binding discount and code, and this line bills the difference (a `GOODS` line against the minimum fee article; no reduction applies to it, and it is the line the invoice bills for the month). The line keeps the kind of the charge it lifts. Absent on every other line.
2667
2576
  * @nullable
2668
2577
  */
2669
2578
  export type QuoteLineDtoFloorKind = typeof QuoteLineDtoFloorKind[keyof typeof QuoteLineDtoFloorKind] | null;
2670
2579
  export declare const QuoteLineDtoFloorKind: {
2671
2580
  readonly quantity: "quantity";
2672
2581
  readonly fee: "fee";
2582
+ readonly minimum_amount: "minimum_amount";
2583
+ readonly minimum_monthly_fee: "minimum_monthly_fee";
2673
2584
  };
2674
2585
  export interface QuoteLineDto {
2675
2586
  kind: QuoteLineDtoKind;
@@ -2680,7 +2591,7 @@ export interface QuoteLineDto {
2680
2591
  reference: string | null;
2681
2592
  description: string;
2682
2593
  quantity: number;
2683
- /** Unit price ex-VAT, integer minor units of the quote currency. This is the catalogue price BEFORE any campaign or binding discount — with one applied it no longer multiplies out to `lineTotalExVatMinor` (a 100% start-fee waiver leaves a priced unit against a zero line). Sum `lineTotalExVatMinor`, never unit × quantity, or the result contradicts `totals`. */
2594
+ /** Unit price ex-VAT, integer minor units of the quote currency. This is the catalogue price BEFORE any campaign or binding discount — with one applied it no longer multiplies out to `lineTotalExVatMinor` (a 100% start-fee waiver leaves a priced unit against a zero line). Nor does a storage month the price book prices, which is billed a night at a time with each night rounded, as the invoice bills it. Sum `lineTotalExVatMinor`, never unit × quantity, or the result contradicts `totals`. */
2684
2595
  unitPriceExVatMinor: number;
2685
2596
  /** Line total ex-VAT, integer minor units, AFTER any campaign and binding discount — the amount that reaches `totals` */
2686
2597
  lineTotalExVatMinor: number;
@@ -2714,7 +2625,7 @@ export interface QuoteLineDto {
2714
2625
  */
2715
2626
  componentCode?: string | null;
2716
2627
  /**
2717
- * Set on a line that exists only because a contracted minimum applied, so it can be shown as such: `quantity` — a minimum billable volume lifted the quantity (the line carries the difference; the line before it carries what the goods account for), `fee` — a minimum charge topped the component up. The line keeps the kind of the charge it lifts. Absent on every other line.
2628
+ * Set on a line that exists only because a contracted minimum applied, so it can be shown as such: `quantity` — a minimum billable volume lifted the quantity (the line carries the difference; the line before it carries what the goods account for), `fee` — a minimum charge topped the component up, `minimum_amount` — the charge's own minimum price per order lifted it (the line carries the difference, including any minimum billable volume beneath it; the line before it carries what the goods account for), `minimum_monthly_fee` — the storage came in under its minimum monthly fee after every campaign, binding discount and code, and this line bills the difference (a `GOODS` line against the minimum fee article; no reduction applies to it, and it is the line the invoice bills for the month). The line keeps the kind of the charge it lifts. Absent on every other line.
2718
2629
  * @nullable
2719
2630
  */
2720
2631
  floorKind?: QuoteLineDtoFloorKind;
@@ -2729,7 +2640,7 @@ export interface QuoteVolumeDto {
2729
2640
  }
2730
2641
  export interface QuoteCouponDto {
2731
2642
  code: string;
2732
- /** Discount applied to the payable total, integer minor units — the sum of `lines[].couponDiscountIncVatMinor`, which is only the lines the coupon's benefits are scoped to. Read that field for which lines they were. */
2643
+ /** Discount applied to the payable total, integer minor units — the sum of `lines[].couponDiscountIncVatMinor`, which is only the lines the coupon's benefits are scoped to. Read that field for which lines they were. The code is taken off the ex-VAT net as the invoice takes it (a replacement price applied, a cap bounding the net's reduction); this is the difference that makes to the taxed total. */
2733
2644
  discountMinor: number;
2734
2645
  /** Always false: this is the code the customer entered. An automatic campaign is reported in `campaigns`, where it is true. */
2735
2646
  automatic: boolean;
@@ -2770,7 +2681,7 @@ export interface QuoteCampaignDto {
2770
2681
  status: QuoteCampaignDtoStatus;
2771
2682
  /** What this campaign took off, ex-VAT, integer minor units — its share of `lines[].campaignDiscountExVatMinor`, already out of `totals`. */
2772
2683
  discountExVatMinor: number;
2773
- /** The same reduction inc-VAT, minor units — the saving to show a consumer. Summed per line at that line's own rate. */
2684
+ /** The same reduction inc-VAT, minor units — the saving to show a consumer: the difference it makes to the taxed total, each invoice line taxed as the invoice taxes it. A line nothing reduces keeps its rows' own VAT, each rounded (a storage month's nights), and a reduced one is taxed on its net, so a reduction smaller than that rounding can show a few cents less than its ex-VAT figure, or below zero. */
2774
2685
  discountIncVatMinor: number;
2775
2686
  }
2776
2687
  export interface QuoteBindingDto {
@@ -2814,7 +2725,7 @@ export interface QuoteTotalsDto {
2814
2725
  payableMinor: number;
2815
2726
  /** What the binding plan took off, ex-VAT, minor units. The number to compare options by: `payableMinor` also carries the coupon and the RUT deduction, both of which floor at zero and can make two options look identical. */
2816
2727
  discountExVatMinor: number;
2817
- /** The same reduction inc-VAT, minor units — the figure to show a consumer as their saving. Summed per line at that line's own rate, so `incVatMinor + discountIncVatMinor` is exactly what this cart would have come to with no binding plan; add `campaigns[].discountIncVatMinor` for the price with no campaign either. Grossing `discountExVatMinor` up by the bundle's inc/ex ratio instead is only right when every discounted line carries the same VAT rate. */
2728
+ /** The same reduction inc-VAT, minor units — the figure to show a consumer as their saving. The difference the plan makes to the taxed total, each invoice line taxed at its own rate as the invoice taxes it, so `incVatMinor + discountIncVatMinor` is exactly what this cart would have come to with no binding plan; add `campaigns[].discountIncVatMinor` for the price with no campaign either. A line nothing reduces keeps its rows' own VAT, each rounded (a storage month's nights), and a reduced one is taxed on its net, so a reduction smaller than that rounding can make this slightly negative. Grossing `discountExVatMinor` up by the bundle's inc/ex ratio instead is only right when every discounted line carries the same VAT rate. */
2818
2729
  discountIncVatMinor: number;
2819
2730
  }
2820
2731
  export interface QuoteBindingOptionDto {
@@ -3008,29 +2919,6 @@ export interface CartItemInputDto {
3008
2919
  /** @nullable */
3009
2920
  metadata?: CartItemInputDtoMetadata;
3010
2921
  }
3011
- /**
3012
- * @nullable
3013
- */
3014
- export type CartServiceInputDtoMetadata = {
3015
- [key: string]: unknown;
3016
- } | null;
3017
- export interface CartServiceInputDto {
3018
- /** Present = reconcile against this existing line; absent = insert. */
3019
- cartExtraServiceId?: string;
3020
- /** Service code string (becomes sales_order_service at placement) */
3021
- serviceCode: string;
3022
- /** @nullable */
3023
- level?: string | null;
3024
- /**
3025
- * @minimum 1
3026
- * @nullable
3027
- */
3028
- quantity?: number | null;
3029
- /** @nullable */
3030
- hours?: number | null;
3031
- /** @nullable */
3032
- metadata?: CartServiceInputDtoMetadata;
3033
- }
3034
2922
  /**
3035
2923
  * Where the line came from: CUSTOMER picked it out of the catalogue, ESTIMATOR means it came from a suggested basket the customer accepted or edited. PROVENANCE ONLY — analytics, not a fact. A client can claim either value, so it must never feed price or permission. Omitted on a resubmission leaves the stored value alone.
3036
2924
  */
@@ -3090,8 +2978,6 @@ export interface UpdateCartDto {
3090
2978
  estimatedHours?: number | null;
3091
2979
  /** Full reconcile of cart lines: update by cartProductId, insert without one, remove lines absent from the array. Omit the field to leave lines untouched. */
3092
2980
  items?: CartItemInputDto[];
3093
- /** Full reconcile of extra-service lines; same semantics as items. */
3094
- services?: CartServiceInputDto[];
3095
2981
  /** Full reconcile of the merchandise basket, keyed by tenantGoodsId: update the quantity of a SKU already present, insert one that is not, remove any SKU absent from the array. Omit the field to leave the basket untouched; send an empty array to clear it. The same SKU twice in one array is a 400 — a full desired set cannot contain a key twice, and collapsing silently would pick a quantity no rule documents. */
3096
2982
  merchandise?: CartMerchandiseInputDto[];
3097
2983
  }
@@ -3173,7 +3059,7 @@ export interface AvailableServiceDto {
3173
3059
  resolvedServiceZoneId: string;
3174
3060
  minLeadTimeHours: number;
3175
3061
  /**
3176
- * Lowest applicable price; null when none published
3062
+ * Lowest published component of the service's transport price, ex VAT — a flat fee or a per-m³ rate. From the price book, for a PICKUP or DELIVERY service (the same rules for every such service: pricing rules have no service dimension, and a zone only adds a surcharge on top, stated per timeslot). Null when none is published, and for a MOVE or other service, which the cart does not price.
3177
3063
  * @nullable
3178
3064
  */
3179
3065
  fromPrice: MoneyDto | null;
@@ -3190,7 +3076,12 @@ export interface SlotPriceDto {
3190
3076
  /** @nullable */
3191
3077
  baseFeeExVat?: string | null;
3192
3078
  /**
3193
- * Money, ex VAT: what this window adds ON TOP of the base transport price — show it as "+X". Null when the window carries no surcharge, or when `baseFeeExVat` is set: a slot's own price is its whole price, and no surcharge is added to it.
3079
+ * Money, ex VAT: what the slot's service zone adds ON TOP of the base transport price — show it as "+X". Null when the cart would add none: the slot has no zone of its own (a pooled slot), or no zone surcharge rule lists the slot's zone above 0.
3080
+ * @nullable
3081
+ */
3082
+ zoneSurchargeExVat: string | null;
3083
+ /**
3084
+ * Money, ex VAT: what this window adds ON TOP of the base transport price — show it as "+X". Null when the cart would add none: the window carries no surcharge, or no pricing rule bills it.
3194
3085
  * @nullable
3195
3086
  */
3196
3087
  windowSurchargeExVat: string | null;
@@ -3229,7 +3120,8 @@ export interface AvailableDayDto {
3229
3120
  weekday: number;
3230
3121
  isHoliday: boolean;
3231
3122
  /**
3232
- * { amount, currencyCode }
3123
+ * Always null — nothing records a day's lowest price. Read the slots' `price` instead.
3124
+ * @deprecated
3233
3125
  * @nullable
3234
3126
  */
3235
3127
  lowestPrice?: MoneyDto | null;
@@ -3316,54 +3208,6 @@ export interface PaginatedTransportServicesDto {
3316
3208
  /** Effective rows skipped applied. */
3317
3209
  offset: number;
3318
3210
  }
3319
- /**
3320
- * @nullable
3321
- */
3322
- export type TransportServicePriceDtoCustomerType = typeof TransportServicePriceDtoCustomerType[keyof typeof TransportServicePriceDtoCustomerType] | null;
3323
- export declare const TransportServicePriceDtoCustomerType: {
3324
- readonly business: "business";
3325
- readonly personal: "personal";
3326
- };
3327
- /**
3328
- * @nullable
3329
- */
3330
- export type TransportServicePriceDtoUnitType = typeof TransportServicePriceDtoUnitType[keyof typeof TransportServicePriceDtoUnitType] | null;
3331
- export declare const TransportServicePriceDtoUnitType: {
3332
- readonly EPAL: "EPAL";
3333
- readonly HALF_PALLET: "HALF_PALLET";
3334
- readonly QUARTER_PALLET: "QUARTER_PALLET";
3335
- readonly PARCEL: "PARCEL";
3336
- readonly SACK: "SACK";
3337
- readonly LOOSE_ITEM: "LOOSE_ITEM";
3338
- readonly OTHER: "OTHER";
3339
- };
3340
- export interface TransportServicePriceDto {
3341
- transportServicePriceId: string;
3342
- transportServiceId: string;
3343
- /** @nullable */
3344
- serviceZoneId: string | null;
3345
- /** @nullable */
3346
- customerType: TransportServicePriceDtoCustomerType;
3347
- /** @nullable */
3348
- unitType: TransportServicePriceDtoUnitType;
3349
- /** @nullable */
3350
- baseFeeExVat: string | null;
3351
- /** @nullable */
3352
- pricePerUnitExVat: string | null;
3353
- /** @nullable */
3354
- pricePerM3ExVat: string | null;
3355
- /** @nullable */
3356
- pricePerHourExVat: string | null;
3357
- rutEligible: boolean;
3358
- vatRate: string;
3359
- currencyCode: string;
3360
- /** @nullable */
3361
- effectiveFrom: string | null;
3362
- /** @nullable */
3363
- effectiveUntil: string | null;
3364
- isActive: boolean;
3365
- createdAt: string;
3366
- }
3367
3211
  export interface TransportServiceOrgGrantDto {
3368
3212
  transportServiceOrgGrantId: string;
3369
3213
  organizationId: string;
@@ -3432,7 +3276,6 @@ export interface TransportServiceDetailDto {
3432
3276
  createdAt: string;
3433
3277
  updatedAt: string;
3434
3278
  zones: TransportServiceZoneDto[];
3435
- activePrices: TransportServicePriceDto[];
3436
3279
  /** Organizations that may be offered this service. Meaningful only when visibility is RESTRICTED; always empty for a PUBLIC service unless grants were authored ahead of the flip. */
3437
3280
  orgGrants: TransportServiceOrgGrantDto[];
3438
3281
  }
@@ -3440,43 +3283,6 @@ export interface TransportServiceZoneInputDto {
3440
3283
  transportServiceZoneId?: string;
3441
3284
  serviceZoneId: string;
3442
3285
  }
3443
- export type PricePerShipmentUnitDtoUnitType = typeof PricePerShipmentUnitDtoUnitType[keyof typeof PricePerShipmentUnitDtoUnitType];
3444
- export declare const PricePerShipmentUnitDtoUnitType: {
3445
- readonly EPAL: "EPAL";
3446
- readonly HALF_PALLET: "HALF_PALLET";
3447
- readonly QUARTER_PALLET: "QUARTER_PALLET";
3448
- readonly PARCEL: "PARCEL";
3449
- readonly SACK: "SACK";
3450
- readonly LOOSE_ITEM: "LOOSE_ITEM";
3451
- readonly OTHER: "OTHER";
3452
- };
3453
- export interface PricePerShipmentUnitDto {
3454
- unitType: PricePerShipmentUnitDtoUnitType;
3455
- /** Decimal money, ex-VAT */
3456
- price: string;
3457
- }
3458
- export type TransportServicePriceInputDtoCustomerType = typeof TransportServicePriceInputDtoCustomerType[keyof typeof TransportServicePriceInputDtoCustomerType];
3459
- export declare const TransportServicePriceInputDtoCustomerType: {
3460
- readonly business: "business";
3461
- readonly personal: "personal";
3462
- };
3463
- export interface TransportServicePriceInputDto {
3464
- transportServicePriceId?: string;
3465
- serviceZoneId?: string;
3466
- customerType?: TransportServicePriceInputDtoCustomerType;
3467
- baseFeeExVat?: string;
3468
- pricePerM3ExVat?: string;
3469
- pricePerHourExVat?: string;
3470
- pricePerShipmentUnit?: PricePerShipmentUnitDto[];
3471
- rutEligible?: boolean;
3472
- /** Percentage, e.g. 25.0000 = 25% (never a fraction); snapshot, not derived */
3473
- vatRate: string;
3474
- /** ISO-4217 alpha-3 */
3475
- currencyCode: string;
3476
- effectiveFrom?: string;
3477
- effectiveUntil?: string;
3478
- isActive?: boolean;
3479
- }
3480
3286
  export interface TransportServiceOrgGrantInputDto {
3481
3287
  /** The organization to grant this service to. */
3482
3288
  organizationId: string;
@@ -3535,8 +3341,7 @@ export interface CreateTransportServiceDto {
3535
3341
  displayOrder?: number;
3536
3342
  metadata?: CreateTransportServiceDtoMetadata;
3537
3343
  zones?: TransportServiceZoneInputDto[];
3538
- prices?: TransportServicePriceInputDto[];
3539
- /** Organizations that may be offered this service when visibility is RESTRICTED. Reconciled like zones[]/prices[]: omit to leave the set unchanged, [] to revoke every grant, or supply the exact set. */
3344
+ /** Organizations that may be offered this service when visibility is RESTRICTED. Reconciled like zones[]: omit to leave the set unchanged, [] to revoke every grant, or supply the exact set. */
3540
3345
  orgGrants?: TransportServiceOrgGrantInputDto[];
3541
3346
  }
3542
3347
  export type TransportServiceDtoSalesOrderType = typeof TransportServiceDtoSalesOrderType[keyof typeof TransportServiceDtoSalesOrderType];
@@ -3654,20 +3459,9 @@ export interface UpdateTransportServiceDto {
3654
3459
  displayOrder?: number;
3655
3460
  metadata?: UpdateTransportServiceDtoMetadata;
3656
3461
  zones?: TransportServiceZoneInputDto[];
3657
- prices?: TransportServicePriceInputDto[];
3658
3462
  /** Organizations that may be offered this service when visibility is RESTRICTED. Omit to leave the set unchanged; [] revokes every grant; a supplied array is reconciled to exactly that set. */
3659
3463
  orgGrants?: TransportServiceOrgGrantInputDto[];
3660
3464
  }
3661
- export interface PaginatedTransportServicePricesDto {
3662
- /** The page of rows. */
3663
- items: TransportServicePriceDto[];
3664
- /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
3665
- total: number;
3666
- /** Effective max rows applied (after defaults/clamp). */
3667
- limit: number;
3668
- /** Effective rows skipped applied. */
3669
- offset: number;
3670
- }
3671
3465
  /**
3672
3466
  * GeoJSON Polygon/MultiPolygon, re-serialised from geography. NULL = zip-only zone. Stored and validated, and used by resolve_service_zone() as a polygon-containment match (after exact postal-code match, before matchPriority tie-break) whenever a caller supplies coordinates. GET /v1/checkout/available-services accepts latitude+longitude (XOR with postalCode) and passes them through, so this is live at checkout, not merely reference/visualization — a zone with no mapped postal codes and only a boundary is reachable via coordinates.
3673
3467
  * @nullable
@@ -3890,7 +3684,7 @@ export declare const CreateSlotConfigDtoSlotKind: {
3890
3684
  readonly PICKUP_WINDOW: "PICKUP_WINDOW";
3891
3685
  };
3892
3686
  /**
3893
- * Per-weekday windows (incl. per-slot base_max_orders / price_ex_vat / express_surcharge_ex_vat). price_ex_vat is a full override of the window's price; express_surcharge_ex_vat (>= 0) is added on top of the base price instead. NULL = daily-cap-only.
3687
+ * Per-weekday windows (incl. per-slot base_max_orders / express_surcharge_ex_vat). express_surcharge_ex_vat (>= 0) is added on top of the price book's base price. A window carries no price of its own: price_ex_vat is refused. NULL = daily-cap-only.
3894
3688
  */
3895
3689
  export type CreateSlotConfigDtoWeeklySchedule = {
3896
3690
  [key: string]: unknown;
@@ -3901,7 +3695,7 @@ export interface CreateSlotConfigDto {
3901
3695
  /** NULL = daily-cap-only (no concrete slots). */
3902
3696
  slotKind?: CreateSlotConfigDtoSlotKind;
3903
3697
  timezone?: string;
3904
- /** Per-weekday windows (incl. per-slot base_max_orders / price_ex_vat / express_surcharge_ex_vat). price_ex_vat is a full override of the window's price; express_surcharge_ex_vat (>= 0) is added on top of the base price instead. NULL = daily-cap-only. */
3698
+ /** Per-weekday windows (incl. per-slot base_max_orders / express_surcharge_ex_vat). express_surcharge_ex_vat (>= 0) is added on top of the price book's base price. A window carries no price of its own: price_ex_vat is refused. NULL = daily-cap-only. */
3905
3699
  weeklySchedule?: CreateSlotConfigDtoWeeklySchedule;
3906
3700
  dayMaxOrders?: number;
3907
3701
  /** bigint */
@@ -4042,7 +3836,7 @@ export interface SlotDto {
4042
3836
  transportSlotConfigId: string | null;
4043
3837
  transportServiceId: string;
4044
3838
  /**
4045
- * NULL = a pooled slot, generated by a config that names no zone (0077). A pooled slot is served to every zone the service covers, and a transport_service_price row naming a specific zone does not apply to it.
3839
+ * NULL = a pooled slot, generated by a config that names no zone (0077). A pooled slot is served to every zone the service covers, and its orders carry no zone, so no zone surcharge applies to them.
4046
3840
  * @nullable
4047
3841
  */
4048
3842
  serviceZoneId: string | null;
@@ -4075,19 +3869,10 @@ export interface SlotDto {
4075
3869
  */
4076
3870
  baseMaxWeightG: number | null;
4077
3871
  /**
4078
- * money — a full override of the slot's transport price; no window surcharge is added to it
4079
- * @nullable
4080
- */
4081
- priceExVat: string | null;
4082
- /** @nullable */
4083
- vatRate: string | null;
4084
- /**
4085
- * money — the window surcharge: what this window adds on top of the base price (>= 0). Ignored while priceExVat is set.
3872
+ * money — the window surcharge: what this window adds on top of the price book's base price (>= 0), in the order's currency.
4086
3873
  * @nullable
4087
3874
  */
4088
3875
  expressSurchargeExVat: string | null;
4089
- /** @nullable */
4090
- currencyCode: string | null;
4091
3876
  status: string;
4092
3877
  manuallyClosed: boolean;
4093
3878
  /** @nullable */
@@ -4147,9 +3932,7 @@ export declare const PatchSlotDtoStatus: {
4147
3932
  export interface PatchSlotDto {
4148
3933
  status?: PatchSlotDtoStatus;
4149
3934
  manuallyClosed?: boolean;
4150
- /** money */
4151
- priceExVat?: string;
4152
- /** money — the window surcharge, added on top of the base price; never negative. Ignored while priceExVat is set. */
3935
+ /** money — the window surcharge, added on top of the price book's base price; never negative. */
4153
3936
  expressSurchargeExVat?: string;
4154
3937
  windowStart?: string;
4155
3938
  windowEnd?: string;
@@ -4189,7 +3972,7 @@ export interface SlotWithAvailabilityDto {
4189
3972
  transportSlotConfigId: string | null;
4190
3973
  transportServiceId: string;
4191
3974
  /**
4192
- * NULL = a pooled slot, generated by a config that names no zone (0077). A pooled slot is served to every zone the service covers, and a transport_service_price row naming a specific zone does not apply to it.
3975
+ * NULL = a pooled slot, generated by a config that names no zone (0077). A pooled slot is served to every zone the service covers, and its orders carry no zone, so no zone surcharge applies to them.
4193
3976
  * @nullable
4194
3977
  */
4195
3978
  serviceZoneId: string | null;
@@ -4222,19 +4005,10 @@ export interface SlotWithAvailabilityDto {
4222
4005
  */
4223
4006
  baseMaxWeightG: number | null;
4224
4007
  /**
4225
- * money — a full override of the slot's transport price; no window surcharge is added to it
4226
- * @nullable
4227
- */
4228
- priceExVat: string | null;
4229
- /** @nullable */
4230
- vatRate: string | null;
4231
- /**
4232
- * money — the window surcharge: what this window adds on top of the base price (>= 0). Ignored while priceExVat is set.
4008
+ * money — the window surcharge: what this window adds on top of the price book's base price (>= 0), in the order's currency.
4233
4009
  * @nullable
4234
4010
  */
4235
4011
  expressSurchargeExVat: string | null;
4236
- /** @nullable */
4237
- currencyCode: string | null;
4238
4012
  status: string;
4239
4013
  manuallyClosed: boolean;
4240
4014
  /** @nullable */
@@ -4307,27 +4081,6 @@ export interface UpdateCapacityOverrideDto {
4307
4081
  effectiveUntil?: string;
4308
4082
  isActive?: boolean;
4309
4083
  }
4310
- export type PriceSuggestionDtoRationale = typeof PriceSuggestionDtoRationale[keyof typeof PriceSuggestionDtoRationale];
4311
- export declare const PriceSuggestionDtoRationale: {
4312
- readonly LOW_REMAINING_CAPACITY: "LOW_REMAINING_CAPACITY";
4313
- readonly OFF_PEAK: "OFF_PEAK";
4314
- readonly BASELINE: "BASELINE";
4315
- };
4316
- export interface PriceSuggestionDto {
4317
- transportServiceId: string;
4318
- serviceZoneId: string;
4319
- /** @nullable */
4320
- transportSlotId?: string | null;
4321
- /** @nullable */
4322
- transportCapacityDayId?: string | null;
4323
- /** The target's current base price */
4324
- basePrice: MoneyDto;
4325
- /** Non-binding recommended price */
4326
- suggestedPrice: MoneyDto;
4327
- /** 0..1 used/cap; 0 when uncapped */
4328
- utilisation: number;
4329
- rationale: PriceSuggestionDtoRationale;
4330
- }
4331
4084
  export interface RouteDto {
4332
4085
  routeId: string;
4333
4086
  warehouseId: string;
@@ -4838,11 +4591,10 @@ export interface TransportLegDto {
4838
4591
  dispatchedAt: string | null;
4839
4592
  /** @nullable */
4840
4593
  completedAt: string | null;
4841
- /** @nullable */
4842
- priceExVat: string | null;
4843
- /** @nullable */
4844
- vatRate: string | null;
4845
- /** @nullable */
4594
+ /**
4595
+ * The order's currency.
4596
+ * @nullable
4597
+ */
4846
4598
  currencyCode: string | null;
4847
4599
  createdAt: string;
4848
4600
  updatedAt: string;
@@ -6192,23 +5944,6 @@ export interface DisposalRequestResultDto {
6192
5944
  /** True when this response replays a previous run of the key. */
6193
5945
  idempotent: boolean;
6194
5946
  }
6195
- export interface DisposalHandlingFeeDto {
6196
- /**
6197
- * Fee amount ex-VAT, integer minor units (e.g. öre/cents). Null when not yet priced for this tenant.
6198
- * @nullable
6199
- */
6200
- amountExVatMinor: number | null;
6201
- /**
6202
- * VAT rate as a percentage (25 = 25%). Null when not yet priced for this tenant.
6203
- * @nullable
6204
- */
6205
- vatRate: number | null;
6206
- /**
6207
- * ISO 4217. Null when not yet priced for this tenant.
6208
- * @nullable
6209
- */
6210
- currencyCode: string | null;
6211
- }
6212
5947
  export interface CancelDisposalRequestDto {
6213
5948
  /**
6214
5949
  * Why the request is being withdrawn.
@@ -7983,8 +7718,6 @@ export interface BillingAccountDto {
7983
7718
  accountingProvider: string;
7984
7719
  /** Payment provider enum. */
7985
7720
  paymentProvider: string;
7986
- /** @nullable */
7987
- priceListId: string | null;
7988
7721
  createdAt: string;
7989
7722
  updatedAt: string;
7990
7723
  }
@@ -8017,7 +7750,6 @@ export interface CreateBillingAccountDto {
8017
7750
  /** ISO 4217 currency code. */
8018
7751
  currencyCode?: string;
8019
7752
  languageCode?: string;
8020
- priceListId?: string;
8021
7753
  }
8022
7754
  export type UpdateBillingAccountDtoCustomerType = typeof UpdateBillingAccountDtoCustomerType[keyof typeof UpdateBillingAccountDtoCustomerType];
8023
7755
  export declare const UpdateBillingAccountDtoCustomerType: {
@@ -8047,7 +7779,6 @@ export interface UpdateBillingAccountDto {
8047
7779
  /** ISO 4217 currency code. */
8048
7780
  currencyCode?: string;
8049
7781
  languageCode?: string;
8050
- priceListId?: string;
8051
7782
  }
8052
7783
  export interface InvoiceDto {
8053
7784
  invoiceId: string;
@@ -8335,8 +8066,8 @@ export interface CreateArticleDto {
8335
8066
  vatInclusiveDefault?: boolean;
8336
8067
  rutEligible?: boolean;
8337
8068
  isActive?: boolean;
8338
- /** Default VAT rate (numeric column → string, e.g. 25.0000). */
8339
- vatRateDefault?: string;
8069
+ /** Default VAT rate, a percentage (numeric column → string): 25.0000 for 25 %, 25.5000 for 25.5 %. Invoice rows priced on this article take their VAT from it. */
8070
+ vatRateDefault: string;
8340
8071
  }
8341
8072
  export interface UpdateArticleDto {
8342
8073
  code?: string;
@@ -8351,104 +8082,6 @@ export interface UpdateArticleDto {
8351
8082
  /** Default VAT rate (numeric column → string, e.g. 25.0000). */
8352
8083
  vatRateDefault?: string;
8353
8084
  }
8354
- export interface PriceListDto {
8355
- priceListId: string;
8356
- tenantId: string;
8357
- name: string;
8358
- code: string;
8359
- /** @nullable */
8360
- description: string | null;
8361
- /** ISO 4217 currency code. */
8362
- currencyCode: string;
8363
- isDefault: boolean;
8364
- /** @nullable */
8365
- effectiveFrom: string | null;
8366
- /** @nullable */
8367
- effectiveUntil: string | null;
8368
- isActive: boolean;
8369
- /** Lifecycle status (draft / pending_approval / active / archived). */
8370
- lifecycleStatus: string;
8371
- createdAt: string;
8372
- updatedAt: string;
8373
- }
8374
- export interface PriceListItemDto {
8375
- priceListItemId: string;
8376
- priceListId: string;
8377
- tenantId: string;
8378
- articleId: string;
8379
- unitOfMeasureId: string;
8380
- /** Price excl. VAT in minor currency units. */
8381
- priceExVatMinor: number;
8382
- /**
8383
- * VAT rate override (numeric) or null.
8384
- * @nullable
8385
- */
8386
- vatRateOverride: string | null;
8387
- /** Minimum quantity (numeric). */
8388
- minQuantity: string;
8389
- /**
8390
- * Maximum quantity (numeric) or null.
8391
- * @nullable
8392
- */
8393
- maxQuantity: string | null;
8394
- effectiveFrom: string;
8395
- /** @nullable */
8396
- effectiveUntil: string | null;
8397
- isActive: boolean;
8398
- /** Lifecycle status (draft / pending_approval / active / archived). */
8399
- lifecycleStatus: string;
8400
- createdAt: string;
8401
- updatedAt: string;
8402
- }
8403
- export interface CreatePriceListDto {
8404
- name: string;
8405
- code: string;
8406
- /** ISO 4217 currency code (3 uppercase letters). */
8407
- currencyCode: string;
8408
- description?: string;
8409
- isDefault?: boolean;
8410
- effectiveFrom?: string;
8411
- effectiveUntil?: string;
8412
- changeReason?: string;
8413
- }
8414
- /**
8415
- * Move between draft and pending_approval only. Activation/archival are dedicated endpoints.
8416
- */
8417
- export type UpdatePriceListDtoLifecycleStatus = typeof UpdatePriceListDtoLifecycleStatus[keyof typeof UpdatePriceListDtoLifecycleStatus];
8418
- export declare const UpdatePriceListDtoLifecycleStatus: {
8419
- readonly draft: "draft";
8420
- readonly pending_approval: "pending_approval";
8421
- };
8422
- export interface UpdatePriceListDto {
8423
- name?: string;
8424
- code?: string;
8425
- description?: string;
8426
- isDefault?: boolean;
8427
- effectiveFrom?: string;
8428
- effectiveUntil?: string;
8429
- changeReason?: string;
8430
- /** Move between draft and pending_approval only. Activation/archival are dedicated endpoints. */
8431
- lifecycleStatus?: UpdatePriceListDtoLifecycleStatus;
8432
- }
8433
- export interface PriceListLifecycleActionDto {
8434
- /** Optional justification for this decision. */
8435
- changeReason?: string;
8436
- }
8437
- export interface CreatePriceListItemDto {
8438
- articleId: string;
8439
- unitOfMeasureId: string;
8440
- /** Price excluding VAT in minor units (never negative). */
8441
- priceExVatMinor: number;
8442
- /** VAT rate override (numeric column → string, e.g. 25.0000). */
8443
- vatRateOverride?: string;
8444
- /** Minimum quantity (numeric column → string). */
8445
- minQuantity?: string;
8446
- /** Maximum quantity (numeric column → string). */
8447
- maxQuantity?: string;
8448
- effectiveFrom: string;
8449
- effectiveUntil?: string;
8450
- changeReason?: string;
8451
- }
8452
8085
  export interface EnabledCurrencyDto {
8453
8086
  /** ISO 4217 currency code. */
8454
8087
  currencyCode: string;
@@ -8458,15 +8091,6 @@ export interface EnabledCurrencyDto {
8458
8091
  createdAt: string;
8459
8092
  updatedAt: string;
8460
8093
  }
8461
- /**
8462
- * Which pricing source the checkout quote serves: `legacy` (price list + transport rate card), `shadow` (legacy served, the pricing-engine quote computed beside it and every difference logged), or `live` (the pricing-engine quote, from the pricing rules the invoice uses). Written by platform admins only.
8463
- */
8464
- export type TenantBillingConfigDtoPriceBookMode = typeof TenantBillingConfigDtoPriceBookMode[keyof typeof TenantBillingConfigDtoPriceBookMode];
8465
- export declare const TenantBillingConfigDtoPriceBookMode: {
8466
- readonly legacy: "legacy";
8467
- readonly shadow: "shadow";
8468
- readonly live: "live";
8469
- };
8470
8094
  /**
8471
8095
  * When one-off charges (a transport, its start fee, a failed-transport or packaging fee) are invoiced: `per_charge` (on an invoice of their own, the day after they are incurred) or `monthly` (on the calendar month's invoice beside storage, once the month has closed). Storage, subscription and recurring charges are invoiced monthly either way. Defaults to `per_charge`. Written by platform admins only.
8472
8096
  */
@@ -8495,8 +8119,6 @@ export interface TenantBillingConfigDto {
8495
8119
  * @nullable
8496
8120
  */
8497
8121
  corporateIdentityNumber: string | null;
8498
- /** Which pricing source the checkout quote serves: `legacy` (price list + transport rate card), `shadow` (legacy served, the pricing-engine quote computed beside it and every difference logged), or `live` (the pricing-engine quote, from the pricing rules the invoice uses). Written by platform admins only. */
8499
- priceBookMode: TenantBillingConfigDtoPriceBookMode;
8500
8122
  /** The tenant's billing calendar: the IANA timezone its storage nights, invoice windows and billable-event dates are counted in. Defaults to `Europe/Stockholm`. Written by platform admins only, and fixed once the tenant has an invoice. */
8501
8123
  timezone: string;
8502
8124
  /** When one-off charges (a transport, its start fee, a failed-transport or packaging fee) are invoiced: `per_charge` (on an invoice of their own, the day after they are incurred) or `monthly` (on the calendar month's invoice beside storage, once the month has closed). Storage, subscription and recurring charges are invoiced monthly either way. Defaults to `per_charge`. Written by platform admins only. */
@@ -8505,15 +8127,6 @@ export interface TenantBillingConfigDto {
8505
8127
  updatedAt: string;
8506
8128
  enabledCurrencies: EnabledCurrencyDto[];
8507
8129
  }
8508
- /**
8509
- * Which pricing source the checkout quote serves (see the read model). **Changed by platform admins only**: anyone else sending a value that differs from the current one gets 403 and nothing is written. Sending the current value back — a form that round-trips the object — is accepted.
8510
- */
8511
- export type UpdateTenantBillingConfigDtoPriceBookMode = typeof UpdateTenantBillingConfigDtoPriceBookMode[keyof typeof UpdateTenantBillingConfigDtoPriceBookMode];
8512
- export declare const UpdateTenantBillingConfigDtoPriceBookMode: {
8513
- readonly legacy: "legacy";
8514
- readonly shadow: "shadow";
8515
- readonly live: "live";
8516
- };
8517
8130
  /**
8518
8131
  * When one-off charges are invoiced (see the read model). **Changed by platform admins only**: anyone else sending a value that differs from the current one gets 403 and nothing is written. Sending the current value back — a form that round-trips the object — is accepted. A change applies to the charges not yet invoiced; nothing already invoiced moves.
8519
8132
  */
@@ -8530,8 +8143,6 @@ export interface UpdateTenantBillingConfigDto {
8530
8143
  requiresPricingApproval?: boolean;
8531
8144
  /** The tenant's own legal-entity registration number (e.g. Swedish orgnummer). */
8532
8145
  corporateIdentityNumber?: string;
8533
- /** Which pricing source the checkout quote serves (see the read model). **Changed by platform admins only**: anyone else sending a value that differs from the current one gets 403 and nothing is written. Sending the current value back — a form that round-trips the object — is accepted. */
8534
- priceBookMode?: UpdateTenantBillingConfigDtoPriceBookMode;
8535
8146
  /** The tenant's billing calendar (see the read model): a canonical IANA timezone name. **Changed by platform admins only**, and only before the tenant's first invoice: anyone else sending a value that differs from the current one gets 403, and a change once the tenant has an invoice gets 409. Sending the current value back — a form that round-trips the object — is accepted. */
8536
8147
  timezone?: string;
8537
8148
  /** When one-off charges are invoiced (see the read model). **Changed by platform admins only**: anyone else sending a value that differs from the current one gets 403 and nothing is written. Sending the current value back — a form that round-trips the object — is accepted. A change applies to the charges not yet invoiced; nothing already invoiced moves. */
@@ -8709,11 +8320,6 @@ export interface DiscountRuleDto {
8709
8320
  * @nullable
8710
8321
  */
8711
8322
  billingAccountId: string | null;
8712
- /**
8713
- * Target price list, or null for any list.
8714
- * @nullable
8715
- */
8716
- priceListId: string | null;
8717
8323
  /**
8718
8324
  * Target article, or null for any article.
8719
8325
  * @nullable
@@ -8801,7 +8407,6 @@ export interface CreateDiscountRuleDto {
8801
8407
  currencyCode?: string;
8802
8408
  organizationId?: string;
8803
8409
  billingAccountId?: string;
8804
- priceListId?: string;
8805
8410
  articleId?: string;
8806
8411
  bindingPlanId?: string;
8807
8412
  /** Optional JSON conditions. */
@@ -9502,11 +9107,6 @@ export interface PricingRuleDto {
9502
9107
  * @nullable
9503
9108
  */
9504
9109
  billingAccountId: string | null;
9505
- /**
9506
- * Target price list, or null.
9507
- * @nullable
9508
- */
9509
- priceListId: string | null;
9510
9110
  /** The billable event type these rules price. */
9511
9111
  billableEventType: string;
9512
9112
  /** The billing article this rule's basis rows post to — the ledger line on the invoice. Not a scope: the rule prices every event of its type within its billingAccountId scope, whatever goods the event concerns. */
@@ -9574,8 +9174,6 @@ export interface ApplyTemplateDto {
9574
9174
  currencyCode: string;
9575
9175
  /** Omit for the tenant-wide default; set for a per-customer override. */
9576
9176
  billingAccountId?: string;
9577
- /** Reserved for price-list-scoped rules (#70) — not implemented yet, so a non-null value is rejected with 400 (BE-1822). Omit this field. */
9578
- priceListId?: string;
9579
9177
  /** Template form values, per the template's uiFormSchema (e.g. { amount_minor: 49900 }). */
9580
9178
  input: ApplyTemplateDtoInput;
9581
9179
  effectiveFrom: string;
@@ -9678,6 +9276,149 @@ export interface SimulatePricingResponseDto {
9678
9276
  basisRows: SimulatedBasisRowDto[];
9679
9277
  projectedInvoiceRowsBeforeDiscounts: ProjectedInvoiceRowDto[];
9680
9278
  }
9279
+ /**
9280
+ * PICKUP quotes one month of storage and the pickup order, as a PICKUP cart; DELIVERY quotes the delivery order.
9281
+ */
9282
+ export type SimulatePricingQuoteDtoOrderType = typeof SimulatePricingQuoteDtoOrderType[keyof typeof SimulatePricingQuoteDtoOrderType];
9283
+ export declare const SimulatePricingQuoteDtoOrderType: {
9284
+ readonly PICKUP: "PICKUP";
9285
+ readonly DELIVERY: "DELIVERY";
9286
+ };
9287
+ /**
9288
+ * The cart's customer type (default personal). Read only by the transport rate card, when a rule bills the quoted price.
9289
+ */
9290
+ export type SimulatePricingQuoteDtoCustomerType = typeof SimulatePricingQuoteDtoCustomerType[keyof typeof SimulatePricingQuoteDtoCustomerType];
9291
+ export declare const SimulatePricingQuoteDtoCustomerType: {
9292
+ readonly business: "business";
9293
+ readonly personal: "personal";
9294
+ };
9295
+ export interface SimulatePricingQuoteDto {
9296
+ /** PICKUP quotes one month of storage and the pickup order, as a PICKUP cart; DELIVERY quotes the delivery order. */
9297
+ orderType: SimulatePricingQuoteDtoOrderType;
9298
+ /** The planned pickup or delivery date the rules are resolved as of. Defaults to the draft's effective date when the draft is priced, else today in the tenant's billing calendar. */
9299
+ date?: string;
9300
+ /** Total goods volume in m³ (at most 4 decimals, 0–10000). 0 with no itemCount quotes an empty cart: no storage and no pods. */
9301
+ volumeM3: number;
9302
+ /** Identical units the volume is split over, each one estimated pod (1–1000; default 1, or none when volumeM3 is 0) — what a per-item or per-pod floor counts. */
9303
+ itemCount?: number;
9304
+ /** ISO 4217 currency code the quote is priced in. */
9305
+ currencyCode: string;
9306
+ /** Quote for this customer: their per-customer rules win the slots they claim, as on their cart. Omit for the tenant-wide price book. Campaigns still read as a new customer. */
9307
+ billingAccountId?: string;
9308
+ /** The cart's customer type (default personal). Read only by the transport rate card, when a rule bills the quoted price. */
9309
+ customerType?: SimulatePricingQuoteDtoCustomerType;
9310
+ /** The customer's service zone, carried on the order as the cart carries its slot's. Overrides an all-zones slot config's; must agree with a zone-specific one. */
9311
+ serviceZoneId?: string;
9312
+ /** The slot config whose window is booked. Requires windowStart. Its service must sell orderType. */
9313
+ transportSlotConfigId?: string;
9314
+ /** The booked window's start (HH:MM) in the config's weekly schedule on the date's weekday. Its express surcharge is the window surcharge; its price override, when set, is the whole transport price. Requires transportSlotConfigId. */
9315
+ windowStart?: string;
9316
+ /** Quote as a customer with no history ordering on the date: every approved automatic campaign whose offer window is open on it applies, as it would on that customer's cart (default false). */
9317
+ newCustomerInCampaignWindow?: boolean;
9318
+ /** Price the open draft change set as it would read once published (default true). With no draft, a draft in another currency, or a date before the draft takes effect, the live price book prices it — see priceBook.source. */
9319
+ useDraft?: boolean;
9320
+ }
9321
+ export interface SimulatedPriceBookDraftDto {
9322
+ changeSetId: string;
9323
+ version: number;
9324
+ /** The date publishing now would take the draft live from: its own effective date, or today if that has passed. */
9325
+ effectiveFrom: string;
9326
+ currencyCode: string;
9327
+ }
9328
+ /**
9329
+ * `draft`: the open draft, as publishing it would leave the price book on the date. `live`: the published rules. Whether the draft can be published is the change-set preview's answer, not this one's.
9330
+ */
9331
+ export type SimulatedPriceBookSourceDtoSource = typeof SimulatedPriceBookSourceDtoSource[keyof typeof SimulatedPriceBookSourceDtoSource];
9332
+ export declare const SimulatedPriceBookSourceDtoSource: {
9333
+ readonly live: "live";
9334
+ readonly draft: "draft";
9335
+ };
9336
+ export interface SimulatedPriceBookSourceDto {
9337
+ /** `draft`: the open draft, as publishing it would leave the price book on the date. `live`: the published rules. Whether the draft can be published is the change-set preview's answer, not this one's. */
9338
+ source: SimulatedPriceBookSourceDtoSource;
9339
+ /**
9340
+ * The tenant's open draft, whether or not it priced this; null when there is none or useDraft is false.
9341
+ * @nullable
9342
+ */
9343
+ draft: SimulatedPriceBookDraftDto | null;
9344
+ }
9345
+ /**
9346
+ * `estimate_over_cap`: the volume is over one of its per-event or per-order m³ caps, so a cart this size is not offered it.
9347
+ */
9348
+ export type SimulatedQuoteExcludedCampaignDtoReason = typeof SimulatedQuoteExcludedCampaignDtoReason[keyof typeof SimulatedQuoteExcludedCampaignDtoReason];
9349
+ export declare const SimulatedQuoteExcludedCampaignDtoReason: {
9350
+ readonly estimate_over_cap: "estimate_over_cap";
9351
+ };
9352
+ export interface SimulatedQuoteExcludedCampaignDto {
9353
+ /** The campaign's `billing.coupon` */
9354
+ couponId: string;
9355
+ /** `estimate_over_cap`: the volume is over one of its per-event or per-order m³ caps, so a cart this size is not offered it. */
9356
+ reason: SimulatedQuoteExcludedCampaignDtoReason;
9357
+ }
9358
+ export interface SimulatedQuoteDeferralDto {
9359
+ /** The `quote.deferred` value this explains. */
9360
+ kind: string;
9361
+ reason: string;
9362
+ }
9363
+ export interface SimulatedQuoteDto {
9364
+ /** ISO 4217 — the currency all amounts are expressed in */
9365
+ currencyCode: string;
9366
+ /** One line per priced component, as the cart lists them: the transport base, a zone surcharge, a window surcharge, the start fee, storage, and each floor (`floorKind` quantity or fee) on a line of its own. Each campaign's reduction is on the line it reduces (`campaignDiscountExVatMinor`). */
9367
+ lines: QuoteLineDto[];
9368
+ volume: QuoteVolumeDto;
9369
+ /** The automatic campaigns applied (newCustomerInCampaignWindow); status is qualifies. */
9370
+ campaigns: QuoteCampaignDto[];
9371
+ campaignsExcluded: SimulatedQuoteExcludedCampaignDto[];
9372
+ totals: QuoteTotalsDto;
9373
+ /** Components the cart would carry unpriced — the cart quote's `deferred`, with reasons in deferralReasons. */
9374
+ deferred: string[];
9375
+ deferralReasons: SimulatedQuoteDeferralDto[];
9376
+ }
9377
+ /**
9378
+ * Engine-shaped payload, as the real event will carry it once the cart is an order.
9379
+ */
9380
+ export type SimulatedQuoteEventDtoPayload = {
9381
+ [key: string]: unknown;
9382
+ };
9383
+ export interface SimulatedQuoteEventDto {
9384
+ billableEventType: string;
9385
+ basisPeriodStart: string;
9386
+ basisPeriodEnd: string;
9387
+ /** Engine-shaped payload, as the real event will carry it once the cart is an order. */
9388
+ payload: SimulatedQuoteEventDtoPayload;
9389
+ /**
9390
+ * Why none of this event could be priced (two rules on one component); null otherwise.
9391
+ * @nullable
9392
+ */
9393
+ error: string | null;
9394
+ }
9395
+ export interface SimulatedQuoteRuleDto {
9396
+ pricingRuleId: string;
9397
+ calculationMethod: string;
9398
+ ruleScope: string;
9399
+ componentCode: string;
9400
+ stage: number;
9401
+ /** Whether this rule produced at least one basis row for any supplied event. */
9402
+ matched: boolean;
9403
+ /** @nullable */
9404
+ resolutionError: string | null;
9405
+ /** The event type the rule prices. */
9406
+ billableEventType: string;
9407
+ /** Index into events[] of the event the rule was asked to price. */
9408
+ eventIndex: number;
9409
+ }
9410
+ export interface SimulatePricingQuoteResponseDto {
9411
+ /** The date the rules were resolved as of. */
9412
+ pricedAsOf: string;
9413
+ priceBook: SimulatedPriceBookSourceDto;
9414
+ quote: SimulatedQuoteDto;
9415
+ /** The invoice rows the basis rows group into, BEFORE campaigns, discounts and credits — which the monthly aggregator applies and this endpoint does not. `quote.lines` carry the campaign; these do not. */
9416
+ projectedInvoiceRowsBeforeDiscounts: ProjectedInvoiceRowDto[];
9417
+ events: SimulatedQuoteEventDto[];
9418
+ /** Every rule the events' selection returned. `matched` is false, with a resolutionError, for one that could not price or reads a component that could not; false with none for a window-surcharge rule left out because no surcharge was booked or the quoted price carries it. */
9419
+ matchedRules: SimulatedQuoteRuleDto[];
9420
+ basisRows: SimulatedBasisRowDto[];
9421
+ }
9681
9422
  export interface ApprovePricingRulesDto {
9682
9423
  /** Pricing rule ids to approve together, atomically. */
9683
9424
  pricingRuleIds: string[];
@@ -10065,15 +9806,8 @@ export interface PriceBookChangeSetDto {
10065
9806
  createdAt: string;
10066
9807
  updatedAt: string;
10067
9808
  }
10068
- export type PriceBookDtoPriceBookMode = typeof PriceBookDtoPriceBookMode[keyof typeof PriceBookDtoPriceBookMode];
10069
- export declare const PriceBookDtoPriceBookMode: {
10070
- readonly legacy: "legacy";
10071
- readonly shadow: "shadow";
10072
- readonly live: "live";
10073
- };
10074
9809
  export interface PriceBookDto {
10075
- priceBookMode: PriceBookDtoPriceBookMode;
10076
- /** Whether the caller may write the price book now: `live` opens it to tenant admins, `shadow` to platform admins only, `legacy` to nobody. */
9810
+ /** Whether the caller may write the price book: tenant admins and platform admins. */
10077
9811
  writable: boolean;
10078
9812
  /**
10079
9813
  * The currency the sections are read in — the tenant's default enabled currency — or null when the tenant has none, in which case every section is empty.
@@ -12234,7 +11968,7 @@ export interface TenantGoodsDto {
12234
11968
  /** @nullable */
12235
11969
  description?: string | null;
12236
11970
  /**
12237
- * Display price ex VAT (numeric column → string). Derived from the authoritative minor-unit price on the SKU's pricing rule, written in the same transaction, so the two cannot disagree.
11971
+ * The SKU's price ex VAT as a decimal string, read from its pricing rule: the open-ended rule, which is the latest price set even when it starts in the future. Null when the SKU has no open-ended price.
12238
11972
  * @nullable
12239
11973
  */
12240
11974
  retailPriceExVat?: string | null;
@@ -12289,8 +12023,8 @@ export interface CreateTenantGoodsDto {
12289
12023
  unitPriceExVatMinor: number;
12290
12024
  /** ISO 4217. Required even though the SKU column is nullable: the pricing rule's currency is NOT NULL and must be enabled for the tenant (billing.tenant_enabled_currency), so a SKU without one could not be priced. */
12291
12025
  currencyCode: string;
12292
- /** VAT rate for the SKU's article (numeric → string, e.g. 25.0000). Defaults to the article default of 25.0000 when omitted. */
12293
- vatRate?: string;
12026
+ /** VAT rate for the SKU's article, a percentage (numeric → string): 25.0000 for 25 %, 25.5000 for 25.5 %. A code that restores a deleted SKU keeps that SKU's article, and so its rate; change it through PATCH /v1/billing/articles/:id. */
12027
+ vatRate: string;
12294
12028
  /** Date the price takes effect (YYYY-MM-DD). Defaults to today. The rule is open-ended until a later price change closes its window. */
12295
12029
  effectiveFrom?: string;
12296
12030
  category?: string;
@@ -12479,7 +12213,7 @@ export interface CheckoutMerchandiseDto {
12479
12213
  /** @nullable */
12480
12214
  description?: string | null;
12481
12215
  /**
12482
- * Display price ex VAT (numeric column → string).
12216
+ * Price ex VAT as a decimal string: what the SKU's pricing rule charges today, in currencyCode. Null when no price is in force today.
12483
12217
  * @nullable
12484
12218
  */
12485
12219
  retailPriceExVat?: string | null;
@@ -12515,7 +12249,7 @@ export interface MerchandiseEstimateLineDto {
12515
12249
  /** @nullable */
12516
12250
  description?: string | null;
12517
12251
  /**
12518
- * Display price ex VAT (numeric column → string).
12252
+ * Price ex VAT as a decimal string: what the SKU's pricing rule charges today, in currencyCode. Null when no price is in force today.
12519
12253
  * @nullable
12520
12254
  */
12521
12255
  retailPriceExVat?: string | null;
@@ -13199,23 +12933,6 @@ export declare const TransportServicesControllerListV1FulfilmentMode: {
13199
12933
  readonly DISPATCH_SLOT: "DISPATCH_SLOT";
13200
12934
  readonly BOOKED: "BOOKED";
13201
12935
  };
13202
- export type TransportServicesControllerListPricesV1Params = {
13203
- /**
13204
- * Max rows to return (1–100).
13205
- * @minimum 1
13206
- * @maximum 100
13207
- */
13208
- limit?: number;
13209
- /**
13210
- * Rows to skip.
13211
- * @minimum 0
13212
- */
13213
- offset?: number;
13214
- /**
13215
- * Filter by active state.
13216
- */
13217
- isActive?: boolean;
13218
- };
13219
12936
  export type ServiceZonesControllerListV1Params = {
13220
12937
  /**
13221
12938
  * Max rows to return (1–100).
@@ -13321,38 +13038,6 @@ export type CapacityControllerListOverridesV1Params = {
13321
13038
  */
13322
13039
  isActive?: boolean;
13323
13040
  };
13324
- export type PriceSuggestionControllerPriceSuggestionV1Params = {
13325
- /**
13326
- * The service zone the target belongs to
13327
- */
13328
- serviceZoneId: string;
13329
- /**
13330
- * Price this slot (XOR day / targetDate)
13331
- */
13332
- transportSlotId?: string;
13333
- /**
13334
- * Price this capacity day (XOR slot / targetDate)
13335
- */
13336
- transportCapacityDayId?: string;
13337
- /**
13338
- * Resolve + price the day for this date (XOR slot / day)
13339
- */
13340
- targetDate?: string;
13341
- customerType?: PriceSuggestionControllerPriceSuggestionV1CustomerType;
13342
- /**
13343
- * bigint
13344
- */
13345
- volumeCm3?: string;
13346
- /**
13347
- * bigint
13348
- */
13349
- weightG?: string;
13350
- };
13351
- export type PriceSuggestionControllerPriceSuggestionV1CustomerType = typeof PriceSuggestionControllerPriceSuggestionV1CustomerType[keyof typeof PriceSuggestionControllerPriceSuggestionV1CustomerType];
13352
- export declare const PriceSuggestionControllerPriceSuggestionV1CustomerType: {
13353
- readonly business: "business";
13354
- readonly personal: "personal";
13355
- };
13356
13041
  export type RoutesControllerListV1Params = {
13357
13042
  /**
13358
13043
  * Max rows to return (1–100).
@@ -13933,32 +13618,6 @@ export type ArticlesControllerListArticlesV1Params = {
13933
13618
  */
13934
13619
  offset?: number;
13935
13620
  };
13936
- export type PriceListsControllerListPriceListsV1Params = {
13937
- /**
13938
- * Max rows to return (1–100).
13939
- * @minimum 1
13940
- * @maximum 100
13941
- */
13942
- limit?: number;
13943
- /**
13944
- * Rows to skip.
13945
- * @minimum 0
13946
- */
13947
- offset?: number;
13948
- };
13949
- export type PriceListsControllerGetPriceListItemsV1Params = {
13950
- /**
13951
- * Max rows to return (1–100).
13952
- * @minimum 1
13953
- * @maximum 100
13954
- */
13955
- limit?: number;
13956
- /**
13957
- * Rows to skip.
13958
- * @minimum 0
13959
- */
13960
- offset?: number;
13961
- };
13962
13621
  export type RecurringFeeConfigsControllerListByBillingAccountV1Params = {
13963
13622
  billingAccountId: string;
13964
13623
  };