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

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 (50) 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 +8 -65
  7. package/dist/generated/_permissions.d.ts.map +1 -1
  8. package/dist/generated/_permissions.js +2 -16
  9. package/dist/generated/_permissions.js.map +1 -1
  10. package/dist/generated/index.schemas.d.ts +206 -522
  11. package/dist/generated/index.schemas.d.ts.map +1 -1
  12. package/dist/generated/index.schemas.js +23 -70
  13. package/dist/generated/index.schemas.js.map +1 -1
  14. package/dist/generated/me/me.d.ts +14 -0
  15. package/dist/generated/me/me.d.ts.map +1 -1
  16. package/dist/generated/me/me.js +14 -0
  17. package/dist/generated/me/me.js.map +1 -1
  18. package/dist/generated/merchandise-checkout/merchandise-checkout.d.ts +1 -1
  19. package/dist/generated/merchandise-checkout/merchandise-checkout.js +1 -1
  20. package/dist/generated/price-book/price-book.d.ts +1 -1
  21. package/dist/generated/price-book/price-book.js +1 -1
  22. package/dist/generated/pricing-rules/pricing-rules.d.ts +42 -3
  23. package/dist/generated/pricing-rules/pricing-rules.d.ts.map +1 -1
  24. package/dist/generated/pricing-rules/pricing-rules.js +24 -2
  25. package/dist/generated/pricing-rules/pricing-rules.js.map +1 -1
  26. package/dist/generated/transport-services/transport-services.d.ts +19 -19
  27. package/dist/generated/transport-services/transport-services.d.ts.map +1 -1
  28. package/dist/generated/transport-services/transport-services.js +2 -25
  29. package/dist/generated/transport-services/transport-services.js.map +1 -1
  30. package/dist/generated/warehouse-orders/warehouse-orders.d.ts +1 -15
  31. package/dist/generated/warehouse-orders/warehouse-orders.d.ts.map +1 -1
  32. package/dist/generated/warehouse-orders/warehouse-orders.js +0 -14
  33. package/dist/generated/warehouse-orders/warehouse-orders.js.map +1 -1
  34. package/package.json +1 -1
  35. package/dist/generated/price-lists/price-lists.d.ts +0 -143
  36. package/dist/generated/price-lists/price-lists.d.ts.map +0 -1
  37. package/dist/generated/price-lists/price-lists.js +0 -180
  38. package/dist/generated/price-lists/price-lists.js.map +0 -1
  39. package/dist/generated/price-suggestion/price-suggestion.d.ts +0 -24
  40. package/dist/generated/price-suggestion/price-suggestion.d.ts.map +0 -1
  41. package/dist/generated/price-suggestion/price-suggestion.js +0 -23
  42. package/dist/generated/price-suggestion/price-suggestion.js.map +0 -1
  43. package/dist/generated/service-catalog/service-catalog.d.ts +0 -24
  44. package/dist/generated/service-catalog/service-catalog.d.ts.map +0 -1
  45. package/dist/generated/service-catalog/service-catalog.js +0 -16
  46. package/dist/generated/service-catalog/service-catalog.js.map +0 -1
  47. package/dist/generated/tenant-services/tenant-services.d.ts +0 -66
  48. package/dist/generated/tenant-services/tenant-services.d.ts.map +0 -1
  49. package/dist/generated/tenant-services/tenant-services.js +0 -80
  50. 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";
@@ -2136,6 +2065,26 @@ export interface MeOrganizationDto {
2136
2065
  */
2137
2066
  subscription: MeSubscriptionDto | null;
2138
2067
  }
2068
+ export type UpstreamValidationDtoStatus = typeof UpstreamValidationDtoStatus[keyof typeof UpstreamValidationDtoStatus];
2069
+ export declare const UpstreamValidationDtoStatus: {
2070
+ readonly valid: "valid";
2071
+ readonly pending: "pending";
2072
+ readonly unavailable: "unavailable";
2073
+ readonly reauth_required: "reauth_required";
2074
+ };
2075
+ export interface UpstreamValidationDto {
2076
+ status: UpstreamValidationDtoStatus;
2077
+ /**
2078
+ * When the upstream identity provider last vouched for the session; null before the first time.
2079
+ * @nullable
2080
+ */
2081
+ validatedAt: string | null;
2082
+ /**
2083
+ * Seconds to wait before retrying; set on `pending` and `unavailable` only.
2084
+ * @nullable
2085
+ */
2086
+ retryAfterSeconds: number | null;
2087
+ }
2139
2088
  /**
2140
2089
  * Opaque per-user preferences object (0079); null when unset.
2141
2090
  * @nullable
@@ -2200,6 +2149,11 @@ export interface MeResponseDto {
2200
2149
  * @nullable
2201
2150
  */
2202
2151
  organization: MeOrganizationDto | null;
2152
+ /**
2153
+ * Upstream-validation state for a session that upstream continuation keeps alive (the Posti mobile app); always `valid` here, since any other state is answered before this handler runs. Null for every other session.
2154
+ * @nullable
2155
+ */
2156
+ upstreamValidation: UpstreamValidationDto | null;
2203
2157
  }
2204
2158
  export type OnboardingStatusDtoStatus = typeof OnboardingStatusDtoStatus[keyof typeof OnboardingStatusDtoStatus];
2205
2159
  export declare const OnboardingStatusDtoStatus: {
@@ -2511,24 +2465,6 @@ export interface CartItemDto {
2511
2465
  /** @nullable */
2512
2466
  metadata: CartItemDtoMetadata;
2513
2467
  }
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
2468
  export interface CartMerchandiseDto {
2533
2469
  cartMerchandiseId: string;
2534
2470
  tenantGoodsId: string;
@@ -2546,7 +2482,7 @@ export interface CartMerchandiseDto {
2546
2482
  */
2547
2483
  name: string | null;
2548
2484
  /**
2549
- * The SKU's display price ex VAT. Not what the quote charges — see `deferred`.
2485
+ * 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
2486
  * @nullable
2551
2487
  */
2552
2488
  retailPriceExVat: string | null;
@@ -2646,7 +2582,6 @@ export interface CartDto {
2646
2582
  /** @nullable */
2647
2583
  confirmedAt: string | null;
2648
2584
  items: CartItemDto[];
2649
- services: CartServiceDto[];
2650
2585
  /** The merchandise basket. Its prices are NOT in `rates.totals` yet — MERCHANDISE appears in `rates.deferred` until the quote prices it. */
2651
2586
  merchandise: CartMerchandiseDto[];
2652
2587
  holds: CartHoldDto[];
@@ -2656,20 +2591,21 @@ export interface CartDto {
2656
2591
  export type QuoteLineDtoKind = typeof QuoteLineDtoKind[keyof typeof QuoteLineDtoKind];
2657
2592
  export declare const QuoteLineDtoKind: {
2658
2593
  readonly GOODS: "GOODS";
2659
- readonly SERVICE: "SERVICE";
2660
2594
  readonly MERCHANDISE: "MERCHANDISE";
2661
2595
  readonly TRANSPORT: "TRANSPORT";
2662
2596
  readonly INSURANCE: "INSURANCE";
2663
2597
  readonly START_FEE: "START_FEE";
2664
2598
  };
2665
2599
  /**
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.
2600
+ * 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
2601
  * @nullable
2668
2602
  */
2669
2603
  export type QuoteLineDtoFloorKind = typeof QuoteLineDtoFloorKind[keyof typeof QuoteLineDtoFloorKind] | null;
2670
2604
  export declare const QuoteLineDtoFloorKind: {
2671
2605
  readonly quantity: "quantity";
2672
2606
  readonly fee: "fee";
2607
+ readonly minimum_amount: "minimum_amount";
2608
+ readonly minimum_monthly_fee: "minimum_monthly_fee";
2673
2609
  };
2674
2610
  export interface QuoteLineDto {
2675
2611
  kind: QuoteLineDtoKind;
@@ -2680,7 +2616,7 @@ export interface QuoteLineDto {
2680
2616
  reference: string | null;
2681
2617
  description: string;
2682
2618
  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`. */
2619
+ /** 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
2620
  unitPriceExVatMinor: number;
2685
2621
  /** Line total ex-VAT, integer minor units, AFTER any campaign and binding discount — the amount that reaches `totals` */
2686
2622
  lineTotalExVatMinor: number;
@@ -2714,7 +2650,7 @@ export interface QuoteLineDto {
2714
2650
  */
2715
2651
  componentCode?: string | null;
2716
2652
  /**
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.
2653
+ * 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
2654
  * @nullable
2719
2655
  */
2720
2656
  floorKind?: QuoteLineDtoFloorKind;
@@ -2729,7 +2665,7 @@ export interface QuoteVolumeDto {
2729
2665
  }
2730
2666
  export interface QuoteCouponDto {
2731
2667
  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. */
2668
+ /** 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
2669
  discountMinor: number;
2734
2670
  /** Always false: this is the code the customer entered. An automatic campaign is reported in `campaigns`, where it is true. */
2735
2671
  automatic: boolean;
@@ -2770,7 +2706,7 @@ export interface QuoteCampaignDto {
2770
2706
  status: QuoteCampaignDtoStatus;
2771
2707
  /** What this campaign took off, ex-VAT, integer minor units — its share of `lines[].campaignDiscountExVatMinor`, already out of `totals`. */
2772
2708
  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. */
2709
+ /** 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
2710
  discountIncVatMinor: number;
2775
2711
  }
2776
2712
  export interface QuoteBindingDto {
@@ -2814,7 +2750,7 @@ export interface QuoteTotalsDto {
2814
2750
  payableMinor: number;
2815
2751
  /** 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
2752
  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. */
2753
+ /** 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
2754
  discountIncVatMinor: number;
2819
2755
  }
2820
2756
  export interface QuoteBindingOptionDto {
@@ -3008,29 +2944,6 @@ export interface CartItemInputDto {
3008
2944
  /** @nullable */
3009
2945
  metadata?: CartItemInputDtoMetadata;
3010
2946
  }
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
2947
  /**
3035
2948
  * 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
2949
  */
@@ -3090,8 +3003,6 @@ export interface UpdateCartDto {
3090
3003
  estimatedHours?: number | null;
3091
3004
  /** 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
3005
  items?: CartItemInputDto[];
3093
- /** Full reconcile of extra-service lines; same semantics as items. */
3094
- services?: CartServiceInputDto[];
3095
3006
  /** 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
3007
  merchandise?: CartMerchandiseInputDto[];
3097
3008
  }
@@ -3173,7 +3084,7 @@ export interface AvailableServiceDto {
3173
3084
  resolvedServiceZoneId: string;
3174
3085
  minLeadTimeHours: number;
3175
3086
  /**
3176
- * Lowest applicable price; null when none published
3087
+ * 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
3088
  * @nullable
3178
3089
  */
3179
3090
  fromPrice: MoneyDto | null;
@@ -3190,7 +3101,12 @@ export interface SlotPriceDto {
3190
3101
  /** @nullable */
3191
3102
  baseFeeExVat?: string | null;
3192
3103
  /**
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.
3104
+ * 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.
3105
+ * @nullable
3106
+ */
3107
+ zoneSurchargeExVat: string | null;
3108
+ /**
3109
+ * 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
3110
  * @nullable
3195
3111
  */
3196
3112
  windowSurchargeExVat: string | null;
@@ -3229,7 +3145,8 @@ export interface AvailableDayDto {
3229
3145
  weekday: number;
3230
3146
  isHoliday: boolean;
3231
3147
  /**
3232
- * { amount, currencyCode }
3148
+ * Always null — nothing records a day's lowest price. Read the slots' `price` instead.
3149
+ * @deprecated
3233
3150
  * @nullable
3234
3151
  */
3235
3152
  lowestPrice?: MoneyDto | null;
@@ -3316,54 +3233,6 @@ export interface PaginatedTransportServicesDto {
3316
3233
  /** Effective rows skipped applied. */
3317
3234
  offset: number;
3318
3235
  }
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
3236
  export interface TransportServiceOrgGrantDto {
3368
3237
  transportServiceOrgGrantId: string;
3369
3238
  organizationId: string;
@@ -3432,7 +3301,6 @@ export interface TransportServiceDetailDto {
3432
3301
  createdAt: string;
3433
3302
  updatedAt: string;
3434
3303
  zones: TransportServiceZoneDto[];
3435
- activePrices: TransportServicePriceDto[];
3436
3304
  /** 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
3305
  orgGrants: TransportServiceOrgGrantDto[];
3438
3306
  }
@@ -3440,43 +3308,6 @@ export interface TransportServiceZoneInputDto {
3440
3308
  transportServiceZoneId?: string;
3441
3309
  serviceZoneId: string;
3442
3310
  }
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
3311
  export interface TransportServiceOrgGrantInputDto {
3481
3312
  /** The organization to grant this service to. */
3482
3313
  organizationId: string;
@@ -3535,8 +3366,7 @@ export interface CreateTransportServiceDto {
3535
3366
  displayOrder?: number;
3536
3367
  metadata?: CreateTransportServiceDtoMetadata;
3537
3368
  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. */
3369
+ /** 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
3370
  orgGrants?: TransportServiceOrgGrantInputDto[];
3541
3371
  }
3542
3372
  export type TransportServiceDtoSalesOrderType = typeof TransportServiceDtoSalesOrderType[keyof typeof TransportServiceDtoSalesOrderType];
@@ -3654,20 +3484,9 @@ export interface UpdateTransportServiceDto {
3654
3484
  displayOrder?: number;
3655
3485
  metadata?: UpdateTransportServiceDtoMetadata;
3656
3486
  zones?: TransportServiceZoneInputDto[];
3657
- prices?: TransportServicePriceInputDto[];
3658
3487
  /** 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
3488
  orgGrants?: TransportServiceOrgGrantInputDto[];
3660
3489
  }
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
3490
  /**
3672
3491
  * 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
3492
  * @nullable
@@ -3890,7 +3709,7 @@ export declare const CreateSlotConfigDtoSlotKind: {
3890
3709
  readonly PICKUP_WINDOW: "PICKUP_WINDOW";
3891
3710
  };
3892
3711
  /**
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.
3712
+ * 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
3713
  */
3895
3714
  export type CreateSlotConfigDtoWeeklySchedule = {
3896
3715
  [key: string]: unknown;
@@ -3901,7 +3720,7 @@ export interface CreateSlotConfigDto {
3901
3720
  /** NULL = daily-cap-only (no concrete slots). */
3902
3721
  slotKind?: CreateSlotConfigDtoSlotKind;
3903
3722
  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. */
3723
+ /** 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
3724
  weeklySchedule?: CreateSlotConfigDtoWeeklySchedule;
3906
3725
  dayMaxOrders?: number;
3907
3726
  /** bigint */
@@ -4042,7 +3861,7 @@ export interface SlotDto {
4042
3861
  transportSlotConfigId: string | null;
4043
3862
  transportServiceId: string;
4044
3863
  /**
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.
3864
+ * 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
3865
  * @nullable
4047
3866
  */
4048
3867
  serviceZoneId: string | null;
@@ -4075,19 +3894,10 @@ export interface SlotDto {
4075
3894
  */
4076
3895
  baseMaxWeightG: number | null;
4077
3896
  /**
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.
3897
+ * money — the window surcharge: what this window adds on top of the price book's base price (>= 0), in the order's currency.
4086
3898
  * @nullable
4087
3899
  */
4088
3900
  expressSurchargeExVat: string | null;
4089
- /** @nullable */
4090
- currencyCode: string | null;
4091
3901
  status: string;
4092
3902
  manuallyClosed: boolean;
4093
3903
  /** @nullable */
@@ -4147,9 +3957,7 @@ export declare const PatchSlotDtoStatus: {
4147
3957
  export interface PatchSlotDto {
4148
3958
  status?: PatchSlotDtoStatus;
4149
3959
  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. */
3960
+ /** money — the window surcharge, added on top of the price book's base price; never negative. */
4153
3961
  expressSurchargeExVat?: string;
4154
3962
  windowStart?: string;
4155
3963
  windowEnd?: string;
@@ -4189,7 +3997,7 @@ export interface SlotWithAvailabilityDto {
4189
3997
  transportSlotConfigId: string | null;
4190
3998
  transportServiceId: string;
4191
3999
  /**
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.
4000
+ * 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
4001
  * @nullable
4194
4002
  */
4195
4003
  serviceZoneId: string | null;
@@ -4222,19 +4030,10 @@ export interface SlotWithAvailabilityDto {
4222
4030
  */
4223
4031
  baseMaxWeightG: number | null;
4224
4032
  /**
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.
4033
+ * money — the window surcharge: what this window adds on top of the price book's base price (>= 0), in the order's currency.
4233
4034
  * @nullable
4234
4035
  */
4235
4036
  expressSurchargeExVat: string | null;
4236
- /** @nullable */
4237
- currencyCode: string | null;
4238
4037
  status: string;
4239
4038
  manuallyClosed: boolean;
4240
4039
  /** @nullable */
@@ -4307,27 +4106,6 @@ export interface UpdateCapacityOverrideDto {
4307
4106
  effectiveUntil?: string;
4308
4107
  isActive?: boolean;
4309
4108
  }
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
4109
  export interface RouteDto {
4332
4110
  routeId: string;
4333
4111
  warehouseId: string;
@@ -4838,11 +4616,10 @@ export interface TransportLegDto {
4838
4616
  dispatchedAt: string | null;
4839
4617
  /** @nullable */
4840
4618
  completedAt: string | null;
4841
- /** @nullable */
4842
- priceExVat: string | null;
4843
- /** @nullable */
4844
- vatRate: string | null;
4845
- /** @nullable */
4619
+ /**
4620
+ * The order's currency.
4621
+ * @nullable
4622
+ */
4846
4623
  currencyCode: string | null;
4847
4624
  createdAt: string;
4848
4625
  updatedAt: string;
@@ -6192,23 +5969,6 @@ export interface DisposalRequestResultDto {
6192
5969
  /** True when this response replays a previous run of the key. */
6193
5970
  idempotent: boolean;
6194
5971
  }
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
5972
  export interface CancelDisposalRequestDto {
6213
5973
  /**
6214
5974
  * Why the request is being withdrawn.
@@ -7983,8 +7743,6 @@ export interface BillingAccountDto {
7983
7743
  accountingProvider: string;
7984
7744
  /** Payment provider enum. */
7985
7745
  paymentProvider: string;
7986
- /** @nullable */
7987
- priceListId: string | null;
7988
7746
  createdAt: string;
7989
7747
  updatedAt: string;
7990
7748
  }
@@ -8017,7 +7775,6 @@ export interface CreateBillingAccountDto {
8017
7775
  /** ISO 4217 currency code. */
8018
7776
  currencyCode?: string;
8019
7777
  languageCode?: string;
8020
- priceListId?: string;
8021
7778
  }
8022
7779
  export type UpdateBillingAccountDtoCustomerType = typeof UpdateBillingAccountDtoCustomerType[keyof typeof UpdateBillingAccountDtoCustomerType];
8023
7780
  export declare const UpdateBillingAccountDtoCustomerType: {
@@ -8047,7 +7804,6 @@ export interface UpdateBillingAccountDto {
8047
7804
  /** ISO 4217 currency code. */
8048
7805
  currencyCode?: string;
8049
7806
  languageCode?: string;
8050
- priceListId?: string;
8051
7807
  }
8052
7808
  export interface InvoiceDto {
8053
7809
  invoiceId: string;
@@ -8335,8 +8091,8 @@ export interface CreateArticleDto {
8335
8091
  vatInclusiveDefault?: boolean;
8336
8092
  rutEligible?: boolean;
8337
8093
  isActive?: boolean;
8338
- /** Default VAT rate (numeric column → string, e.g. 25.0000). */
8339
- vatRateDefault?: string;
8094
+ /** 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. */
8095
+ vatRateDefault: string;
8340
8096
  }
8341
8097
  export interface UpdateArticleDto {
8342
8098
  code?: string;
@@ -8351,104 +8107,6 @@ export interface UpdateArticleDto {
8351
8107
  /** Default VAT rate (numeric column → string, e.g. 25.0000). */
8352
8108
  vatRateDefault?: string;
8353
8109
  }
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
8110
  export interface EnabledCurrencyDto {
8453
8111
  /** ISO 4217 currency code. */
8454
8112
  currencyCode: string;
@@ -8458,15 +8116,6 @@ export interface EnabledCurrencyDto {
8458
8116
  createdAt: string;
8459
8117
  updatedAt: string;
8460
8118
  }
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
8119
  /**
8471
8120
  * 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
8121
  */
@@ -8495,8 +8144,6 @@ export interface TenantBillingConfigDto {
8495
8144
  * @nullable
8496
8145
  */
8497
8146
  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
8147
  /** 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
8148
  timezone: string;
8502
8149
  /** 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 +8152,6 @@ export interface TenantBillingConfigDto {
8505
8152
  updatedAt: string;
8506
8153
  enabledCurrencies: EnabledCurrencyDto[];
8507
8154
  }
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
8155
  /**
8518
8156
  * 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
8157
  */
@@ -8530,8 +8168,6 @@ export interface UpdateTenantBillingConfigDto {
8530
8168
  requiresPricingApproval?: boolean;
8531
8169
  /** The tenant's own legal-entity registration number (e.g. Swedish orgnummer). */
8532
8170
  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
8171
  /** 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
8172
  timezone?: string;
8537
8173
  /** 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 +8345,6 @@ export interface DiscountRuleDto {
8709
8345
  * @nullable
8710
8346
  */
8711
8347
  billingAccountId: string | null;
8712
- /**
8713
- * Target price list, or null for any list.
8714
- * @nullable
8715
- */
8716
- priceListId: string | null;
8717
8348
  /**
8718
8349
  * Target article, or null for any article.
8719
8350
  * @nullable
@@ -8801,7 +8432,6 @@ export interface CreateDiscountRuleDto {
8801
8432
  currencyCode?: string;
8802
8433
  organizationId?: string;
8803
8434
  billingAccountId?: string;
8804
- priceListId?: string;
8805
8435
  articleId?: string;
8806
8436
  bindingPlanId?: string;
8807
8437
  /** Optional JSON conditions. */
@@ -9502,11 +9132,6 @@ export interface PricingRuleDto {
9502
9132
  * @nullable
9503
9133
  */
9504
9134
  billingAccountId: string | null;
9505
- /**
9506
- * Target price list, or null.
9507
- * @nullable
9508
- */
9509
- priceListId: string | null;
9510
9135
  /** The billable event type these rules price. */
9511
9136
  billableEventType: string;
9512
9137
  /** 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 +9199,6 @@ export interface ApplyTemplateDto {
9574
9199
  currencyCode: string;
9575
9200
  /** Omit for the tenant-wide default; set for a per-customer override. */
9576
9201
  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
9202
  /** Template form values, per the template's uiFormSchema (e.g. { amount_minor: 49900 }). */
9580
9203
  input: ApplyTemplateDtoInput;
9581
9204
  effectiveFrom: string;
@@ -9678,6 +9301,149 @@ export interface SimulatePricingResponseDto {
9678
9301
  basisRows: SimulatedBasisRowDto[];
9679
9302
  projectedInvoiceRowsBeforeDiscounts: ProjectedInvoiceRowDto[];
9680
9303
  }
9304
+ /**
9305
+ * PICKUP quotes one month of storage and the pickup order, as a PICKUP cart; DELIVERY quotes the delivery order.
9306
+ */
9307
+ export type SimulatePricingQuoteDtoOrderType = typeof SimulatePricingQuoteDtoOrderType[keyof typeof SimulatePricingQuoteDtoOrderType];
9308
+ export declare const SimulatePricingQuoteDtoOrderType: {
9309
+ readonly PICKUP: "PICKUP";
9310
+ readonly DELIVERY: "DELIVERY";
9311
+ };
9312
+ /**
9313
+ * The cart's customer type (default personal). Read only by the transport rate card, when a rule bills the quoted price.
9314
+ */
9315
+ export type SimulatePricingQuoteDtoCustomerType = typeof SimulatePricingQuoteDtoCustomerType[keyof typeof SimulatePricingQuoteDtoCustomerType];
9316
+ export declare const SimulatePricingQuoteDtoCustomerType: {
9317
+ readonly business: "business";
9318
+ readonly personal: "personal";
9319
+ };
9320
+ export interface SimulatePricingQuoteDto {
9321
+ /** PICKUP quotes one month of storage and the pickup order, as a PICKUP cart; DELIVERY quotes the delivery order. */
9322
+ orderType: SimulatePricingQuoteDtoOrderType;
9323
+ /** 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. */
9324
+ date?: string;
9325
+ /** Total goods volume in m³ (at most 4 decimals, 0–10000). 0 with no itemCount quotes an empty cart: no storage and no pods. */
9326
+ volumeM3: number;
9327
+ /** 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. */
9328
+ itemCount?: number;
9329
+ /** ISO 4217 currency code the quote is priced in. */
9330
+ currencyCode: string;
9331
+ /** 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. */
9332
+ billingAccountId?: string;
9333
+ /** The cart's customer type (default personal). Read only by the transport rate card, when a rule bills the quoted price. */
9334
+ customerType?: SimulatePricingQuoteDtoCustomerType;
9335
+ /** 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. */
9336
+ serviceZoneId?: string;
9337
+ /** The slot config whose window is booked. Requires windowStart. Its service must sell orderType. */
9338
+ transportSlotConfigId?: string;
9339
+ /** 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. */
9340
+ windowStart?: string;
9341
+ /** 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). */
9342
+ newCustomerInCampaignWindow?: boolean;
9343
+ /** 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. */
9344
+ useDraft?: boolean;
9345
+ }
9346
+ export interface SimulatedPriceBookDraftDto {
9347
+ changeSetId: string;
9348
+ version: number;
9349
+ /** The date publishing now would take the draft live from: its own effective date, or today if that has passed. */
9350
+ effectiveFrom: string;
9351
+ currencyCode: string;
9352
+ }
9353
+ /**
9354
+ * `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.
9355
+ */
9356
+ export type SimulatedPriceBookSourceDtoSource = typeof SimulatedPriceBookSourceDtoSource[keyof typeof SimulatedPriceBookSourceDtoSource];
9357
+ export declare const SimulatedPriceBookSourceDtoSource: {
9358
+ readonly live: "live";
9359
+ readonly draft: "draft";
9360
+ };
9361
+ export interface SimulatedPriceBookSourceDto {
9362
+ /** `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. */
9363
+ source: SimulatedPriceBookSourceDtoSource;
9364
+ /**
9365
+ * The tenant's open draft, whether or not it priced this; null when there is none or useDraft is false.
9366
+ * @nullable
9367
+ */
9368
+ draft: SimulatedPriceBookDraftDto | null;
9369
+ }
9370
+ /**
9371
+ * `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.
9372
+ */
9373
+ export type SimulatedQuoteExcludedCampaignDtoReason = typeof SimulatedQuoteExcludedCampaignDtoReason[keyof typeof SimulatedQuoteExcludedCampaignDtoReason];
9374
+ export declare const SimulatedQuoteExcludedCampaignDtoReason: {
9375
+ readonly estimate_over_cap: "estimate_over_cap";
9376
+ };
9377
+ export interface SimulatedQuoteExcludedCampaignDto {
9378
+ /** The campaign's `billing.coupon` */
9379
+ couponId: string;
9380
+ /** `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. */
9381
+ reason: SimulatedQuoteExcludedCampaignDtoReason;
9382
+ }
9383
+ export interface SimulatedQuoteDeferralDto {
9384
+ /** The `quote.deferred` value this explains. */
9385
+ kind: string;
9386
+ reason: string;
9387
+ }
9388
+ export interface SimulatedQuoteDto {
9389
+ /** ISO 4217 — the currency all amounts are expressed in */
9390
+ currencyCode: string;
9391
+ /** 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`). */
9392
+ lines: QuoteLineDto[];
9393
+ volume: QuoteVolumeDto;
9394
+ /** The automatic campaigns applied (newCustomerInCampaignWindow); status is qualifies. */
9395
+ campaigns: QuoteCampaignDto[];
9396
+ campaignsExcluded: SimulatedQuoteExcludedCampaignDto[];
9397
+ totals: QuoteTotalsDto;
9398
+ /** Components the cart would carry unpriced — the cart quote's `deferred`, with reasons in deferralReasons. */
9399
+ deferred: string[];
9400
+ deferralReasons: SimulatedQuoteDeferralDto[];
9401
+ }
9402
+ /**
9403
+ * Engine-shaped payload, as the real event will carry it once the cart is an order.
9404
+ */
9405
+ export type SimulatedQuoteEventDtoPayload = {
9406
+ [key: string]: unknown;
9407
+ };
9408
+ export interface SimulatedQuoteEventDto {
9409
+ billableEventType: string;
9410
+ basisPeriodStart: string;
9411
+ basisPeriodEnd: string;
9412
+ /** Engine-shaped payload, as the real event will carry it once the cart is an order. */
9413
+ payload: SimulatedQuoteEventDtoPayload;
9414
+ /**
9415
+ * Why none of this event could be priced (two rules on one component); null otherwise.
9416
+ * @nullable
9417
+ */
9418
+ error: string | null;
9419
+ }
9420
+ export interface SimulatedQuoteRuleDto {
9421
+ pricingRuleId: string;
9422
+ calculationMethod: string;
9423
+ ruleScope: string;
9424
+ componentCode: string;
9425
+ stage: number;
9426
+ /** Whether this rule produced at least one basis row for any supplied event. */
9427
+ matched: boolean;
9428
+ /** @nullable */
9429
+ resolutionError: string | null;
9430
+ /** The event type the rule prices. */
9431
+ billableEventType: string;
9432
+ /** Index into events[] of the event the rule was asked to price. */
9433
+ eventIndex: number;
9434
+ }
9435
+ export interface SimulatePricingQuoteResponseDto {
9436
+ /** The date the rules were resolved as of. */
9437
+ pricedAsOf: string;
9438
+ priceBook: SimulatedPriceBookSourceDto;
9439
+ quote: SimulatedQuoteDto;
9440
+ /** 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. */
9441
+ projectedInvoiceRowsBeforeDiscounts: ProjectedInvoiceRowDto[];
9442
+ events: SimulatedQuoteEventDto[];
9443
+ /** 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. */
9444
+ matchedRules: SimulatedQuoteRuleDto[];
9445
+ basisRows: SimulatedBasisRowDto[];
9446
+ }
9681
9447
  export interface ApprovePricingRulesDto {
9682
9448
  /** Pricing rule ids to approve together, atomically. */
9683
9449
  pricingRuleIds: string[];
@@ -10065,15 +9831,8 @@ export interface PriceBookChangeSetDto {
10065
9831
  createdAt: string;
10066
9832
  updatedAt: string;
10067
9833
  }
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
9834
  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. */
9835
+ /** Whether the caller may write the price book: tenant admins and platform admins. */
10077
9836
  writable: boolean;
10078
9837
  /**
10079
9838
  * 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 +11993,7 @@ export interface TenantGoodsDto {
12234
11993
  /** @nullable */
12235
11994
  description?: string | null;
12236
11995
  /**
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.
11996
+ * 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
11997
  * @nullable
12239
11998
  */
12240
11999
  retailPriceExVat?: string | null;
@@ -12289,8 +12048,8 @@ export interface CreateTenantGoodsDto {
12289
12048
  unitPriceExVatMinor: number;
12290
12049
  /** 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
12050
  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;
12051
+ /** 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. */
12052
+ vatRate: string;
12294
12053
  /** 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
12054
  effectiveFrom?: string;
12296
12055
  category?: string;
@@ -12479,7 +12238,7 @@ export interface CheckoutMerchandiseDto {
12479
12238
  /** @nullable */
12480
12239
  description?: string | null;
12481
12240
  /**
12482
- * Display price ex VAT (numeric column → string).
12241
+ * 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
12242
  * @nullable
12484
12243
  */
12485
12244
  retailPriceExVat?: string | null;
@@ -12515,7 +12274,7 @@ export interface MerchandiseEstimateLineDto {
12515
12274
  /** @nullable */
12516
12275
  description?: string | null;
12517
12276
  /**
12518
- * Display price ex VAT (numeric column → string).
12277
+ * 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
12278
  * @nullable
12520
12279
  */
12521
12280
  retailPriceExVat?: string | null;
@@ -13199,23 +12958,6 @@ export declare const TransportServicesControllerListV1FulfilmentMode: {
13199
12958
  readonly DISPATCH_SLOT: "DISPATCH_SLOT";
13200
12959
  readonly BOOKED: "BOOKED";
13201
12960
  };
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
12961
  export type ServiceZonesControllerListV1Params = {
13220
12962
  /**
13221
12963
  * Max rows to return (1–100).
@@ -13321,38 +13063,6 @@ export type CapacityControllerListOverridesV1Params = {
13321
13063
  */
13322
13064
  isActive?: boolean;
13323
13065
  };
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
13066
  export type RoutesControllerListV1Params = {
13357
13067
  /**
13358
13068
  * Max rows to return (1–100).
@@ -13933,32 +13643,6 @@ export type ArticlesControllerListArticlesV1Params = {
13933
13643
  */
13934
13644
  offset?: number;
13935
13645
  };
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
13646
  export type RecurringFeeConfigsControllerListByBillingAccountV1Params = {
13963
13647
  billingAccountId: string;
13964
13648
  };