@vindentech/api-client 0.3.0-next.74 → 0.3.0-next.76

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.
@@ -1387,6 +1387,11 @@ export interface OrganizationDto {
1387
1387
  invoiceCountryCode: string | null;
1388
1388
  /** @nullable */
1389
1389
  preferredWarehouseId: string | null;
1390
+ /**
1391
+ * The language this customer's messages are written in (order confirmations, storage notices). null = not stated: the language follows the country of the customer's billing account (SE → sv-SE, FI → fi-FI, otherwise en-GB). A language with no authored template falls back to en-GB, then sv-SE.
1392
+ * @nullable
1393
+ */
1394
+ preferredLocale: string | null;
1390
1395
  /** @nullable */
1391
1396
  metadata: OrganizationDtoMetadata;
1392
1397
  createdAt: string;
@@ -1423,6 +1428,16 @@ export declare const CreateOrganizationDtoType: {
1423
1428
  readonly business: "business";
1424
1429
  readonly personal: "personal";
1425
1430
  };
1431
+ /**
1432
+ * The language this customer's messages are written in (order confirmations, storage notices). null = not stated: the language follows the country of the customer's billing account (SE → sv-SE, FI → fi-FI, otherwise en-GB). A language with no authored template falls back to en-GB, then sv-SE.
1433
+ * @nullable
1434
+ */
1435
+ export type CreateOrganizationDtoPreferredLocale = typeof CreateOrganizationDtoPreferredLocale[keyof typeof CreateOrganizationDtoPreferredLocale] | null;
1436
+ export declare const CreateOrganizationDtoPreferredLocale: {
1437
+ readonly 'sv-SE': "sv-SE";
1438
+ readonly 'en-GB': "en-GB";
1439
+ readonly 'fi-FI': "fi-FI";
1440
+ };
1426
1441
  export type CreateOrganizationDtoMetadata = {
1427
1442
  [key: string]: unknown;
1428
1443
  };
@@ -1440,8 +1455,23 @@ export interface CreateOrganizationDto {
1440
1455
  /** ISO-3166-1 alpha-2. */
1441
1456
  invoiceCountryCode?: string;
1442
1457
  preferredWarehouseId?: string;
1458
+ /**
1459
+ * The language this customer's messages are written in (order confirmations, storage notices). null = not stated: the language follows the country of the customer's billing account (SE → sv-SE, FI → fi-FI, otherwise en-GB). A language with no authored template falls back to en-GB, then sv-SE.
1460
+ * @nullable
1461
+ */
1462
+ preferredLocale?: CreateOrganizationDtoPreferredLocale;
1443
1463
  metadata?: CreateOrganizationDtoMetadata;
1444
1464
  }
1465
+ /**
1466
+ * The language this customer's messages are written in (order confirmations, storage notices). null = not stated: the language follows the country of the customer's billing account (SE → sv-SE, FI → fi-FI, otherwise en-GB). A language with no authored template falls back to en-GB, then sv-SE.
1467
+ * @nullable
1468
+ */
1469
+ export type UpdateOrganizationDtoPreferredLocale = typeof UpdateOrganizationDtoPreferredLocale[keyof typeof UpdateOrganizationDtoPreferredLocale] | null;
1470
+ export declare const UpdateOrganizationDtoPreferredLocale: {
1471
+ readonly 'sv-SE': "sv-SE";
1472
+ readonly 'en-GB': "en-GB";
1473
+ readonly 'fi-FI': "fi-FI";
1474
+ };
1445
1475
  export type UpdateOrganizationDtoMetadata = {
1446
1476
  [key: string]: unknown;
1447
1477
  };
@@ -1456,6 +1486,11 @@ export interface UpdateOrganizationDto {
1456
1486
  /** ISO-3166-1 alpha-2. */
1457
1487
  invoiceCountryCode?: string;
1458
1488
  preferredWarehouseId?: string;
1489
+ /**
1490
+ * The language this customer's messages are written in (order confirmations, storage notices). null = not stated: the language follows the country of the customer's billing account (SE → sv-SE, FI → fi-FI, otherwise en-GB). A language with no authored template falls back to en-GB, then sv-SE.
1491
+ * @nullable
1492
+ */
1493
+ preferredLocale?: UpdateOrganizationDtoPreferredLocale;
1459
1494
  metadata?: UpdateOrganizationDtoMetadata;
1460
1495
  }
1461
1496
  export interface OrganizationMemberDto {
@@ -2627,6 +2662,15 @@ export declare const QuoteLineDtoKind: {
2627
2662
  readonly INSURANCE: "INSURANCE";
2628
2663
  readonly START_FEE: "START_FEE";
2629
2664
  };
2665
+ /**
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.
2667
+ * @nullable
2668
+ */
2669
+ export type QuoteLineDtoFloorKind = typeof QuoteLineDtoFloorKind[keyof typeof QuoteLineDtoFloorKind] | null;
2670
+ export declare const QuoteLineDtoFloorKind: {
2671
+ readonly quantity: "quantity";
2672
+ readonly fee: "fee";
2673
+ };
2630
2674
  export interface QuoteLineDto {
2631
2675
  kind: QuoteLineDtoKind;
2632
2676
  /**
@@ -2654,6 +2698,21 @@ export interface QuoteLineDto {
2654
2698
  vatRate: number;
2655
2699
  /** Whether this line qualifies for the RUT labour deduction */
2656
2700
  rutEligible: boolean;
2701
+ /**
2702
+ * The `billing.pricing_rule` that priced this line, on lines the pricing engine priced (the tenant's price-book mode is `live`). Absent on lines priced from the price list, a slot or the rate card.
2703
+ * @nullable
2704
+ */
2705
+ pricingRuleId?: string | null;
2706
+ /**
2707
+ * The pricing rule's component (e.g. `storage_base`, `transport_base`, `start_fee`) — the same component code the invoice's basis row carries. Present exactly when `pricingRuleId` is.
2708
+ * @nullable
2709
+ */
2710
+ componentCode?: string | null;
2711
+ /**
2712
+ * 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.
2713
+ * @nullable
2714
+ */
2715
+ floorKind?: QuoteLineDtoFloorKind;
2657
2716
  }
2658
2717
  export interface QuoteVolumeDto {
2659
2718
  /** Total goods volume in cm³ */
@@ -2750,12 +2809,12 @@ export interface QuoteResponseDto {
2750
2809
  /** Whether setting `bindingId` on this cart would change the plan in force. False when the organization already holds a contract, because placement never rewrites an in-force binding — the options are then informational only. */
2751
2810
  bindingOptionsSelectable: boolean;
2752
2811
  /**
2753
- * Total RUT labour deduction in minor units. Null when RUT does not apply, and also when every RUT-eligible line was priced from a source that carries no post-deduction price to derive it from (see TRANSPORT_RUT in `deferred`) — null means 'not computed', never 'zero saving'.
2812
+ * Total RUT labour deduction in minor units. Currently always null: no pricing source carries a post-deduction price to derive it from, so a RUT cart with a RUT-eligible line reports TRANSPORT_RUT in `deferred` instead — null means 'not computed', never 'zero saving'.
2754
2813
  * @nullable
2755
2814
  */
2756
2815
  rutDeductionMinor: number | null;
2757
2816
  totals: QuoteTotalsDto;
2758
- /** Components present on the cart that this quote did not price, or reductions it did not apply. Their absence from `totals` is intentional, never a zero charge. Values: GOODS, SERVICE, START_FEE, TRANSPORT (no configured article, price row, or computable rate — no line is emitted at all), INSURANCE (no plan catalogue exists yet), TRANSPORT_PARTIAL (a transport line IS priced from the rate card but excludes a component the cart carries no quantity for — a per-hour rate with no `estimatedHours`, or a per-unit rate with no shipment manifest — so the transport amount is a floor, not the final charge), TRANSPORT_RUT (the line is RUT-eligible but its price source carries no post-deduction price to derive the amount from), MATERIAL_DELIVERY (the cart holds a material:delivery timeslot; its underlying slot may carry a real price, but materials pricing is not yet designed, so it is excluded from `totals` rather than priced as ordinary transport), MERCHANDISE (at least one basketed SKU could not be priced and is excluded from `totals` — it was deactivated after being basketed, it has no active price for today in the cart's currency, or its price rule is malformed. Priceable SKUs in the same basket still appear as MERCHANDISE lines, so this value means 'some of the basket is missing from the total', not 'none of it is priced'). */
2817
+ /** Components present on the cart that this quote did not price, or reductions it did not apply. Their absence from `totals` is intentional, never a zero charge. Values: GOODS, SERVICE, START_FEE, TRANSPORT (no configured article, price row, or computable rate — no line is emitted at all), INSURANCE (no plan catalogue exists yet), TRANSPORT_PARTIAL (a transport line IS priced from the rate card but excludes a component the cart carries no quantity for — a per-hour rate with no `estimatedHours`, or a per-unit rate with no shipment manifest — so the transport amount is a floor, not the final charge), TRANSPORT_RUT (the line is RUT-eligible but its price source carries no post-deduction price to derive the amount from), MATERIAL_DELIVERY (the cart holds a material:delivery timeslot; its underlying slot may carry a real price, but materials pricing is not yet designed, so it is excluded from `totals` rather than priced as ordinary transport), MERCHANDISE (at least one basketed SKU could not be priced and is excluded from `totals` — it was deactivated after being basketed, it has no active price for today in the cart's currency, or its price rule is malformed. Priceable SKUs in the same basket still appear as MERCHANDISE lines, so this value means 'some of the basket is missing from the total', not 'none of it is priced'). When the tenant's price-book mode is `live`, a PICKUP or DELIVERY cart's GOODS, START_FEE and TRANSPORT come from the pricing rules the invoice uses, and one of those values here means a rule could not price this cart — most often because the cart does not yet state what it reads (a volume with a line missing its dimensions, a slot price before a slot is held) — or reads a component that could not be priced; the rest of the cart is still priced. A rule-priced TRANSPORT line carries no post-deduction price, so a RUT cart reports TRANSPORT_RUT for it. TRANSPORT_PARTIAL does not occur in that mode. */
2759
2818
  deferred: string[];
2760
2819
  }
2761
2820
  export interface CartContactInputDto {
@@ -3074,8 +3133,6 @@ export interface SlotPriceDto {
3074
3133
  /** @nullable */
3075
3134
  perM3IncVat?: string | null;
3076
3135
  /** @nullable */
3077
- perM3IncRut?: string | null;
3078
- /** @nullable */
3079
3136
  perHourExVat?: string | null;
3080
3137
  /** @nullable */
3081
3138
  baseFeeExVat?: string | null;
@@ -3178,8 +3235,6 @@ export interface TransportServiceListItemDto {
3178
3235
  tenantCarrierMethodId: string | null;
3179
3236
  /** @nullable */
3180
3237
  originWarehouseId: string | null;
3181
- /** @nullable */
3182
- billingArticleId: string | null;
3183
3238
  customerTypes: TransportServiceListItemDtoCustomerTypesItem[];
3184
3239
  minLeadTimeHours: number;
3185
3240
  customerSelectable: boolean;
@@ -3307,8 +3362,6 @@ export interface TransportServiceDetailDto {
3307
3362
  tenantCarrierMethodId: string | null;
3308
3363
  /** @nullable */
3309
3364
  originWarehouseId: string | null;
3310
- /** @nullable */
3311
- billingArticleId: string | null;
3312
3365
  customerTypes: TransportServiceDetailDtoCustomerTypesItem[];
3313
3366
  minLeadTimeHours: number;
3314
3367
  customerSelectable: boolean;
@@ -3415,7 +3468,6 @@ export interface CreateTransportServiceDto {
3415
3468
  tenantCarrierMethodId?: string;
3416
3469
  /** NULL = any warehouse */
3417
3470
  originWarehouseId?: string;
3418
- billingArticleId?: string;
3419
3471
  customerTypes?: CreateTransportServiceDtoCustomerTypesItem[];
3420
3472
  minLeadTimeHours?: number;
3421
3473
  customerSelectable?: boolean;
@@ -3476,8 +3528,6 @@ export interface TransportServiceDto {
3476
3528
  tenantCarrierMethodId: string | null;
3477
3529
  /** @nullable */
3478
3530
  originWarehouseId: string | null;
3479
- /** @nullable */
3480
- billingArticleId: string | null;
3481
3531
  customerTypes: TransportServiceDtoCustomerTypesItem[];
3482
3532
  minLeadTimeHours: number;
3483
3533
  customerSelectable: boolean;
@@ -3537,7 +3587,6 @@ export interface UpdateTransportServiceDto {
3537
3587
  */
3538
3588
  tenantCarrierMethodId?: string | null;
3539
3589
  originWarehouseId?: string;
3540
- billingArticleId?: string;
3541
3590
  customerTypes?: UpdateTransportServiceDtoCustomerTypesItem[];
3542
3591
  minLeadTimeHours?: number;
3543
3592
  customerSelectable?: boolean;
@@ -3974,8 +4023,6 @@ export interface SlotDto {
3974
4023
  priceExVat: string | null;
3975
4024
  /** @nullable */
3976
4025
  vatRate: string | null;
3977
- /** @nullable */
3978
- priceIncRut: string | null;
3979
4026
  /**
3980
4027
  * money
3981
4028
  * @nullable
@@ -4123,8 +4170,6 @@ export interface SlotWithAvailabilityDto {
4123
4170
  priceExVat: string | null;
4124
4171
  /** @nullable */
4125
4172
  vatRate: string | null;
4126
- /** @nullable */
4127
- priceIncRut: string | null;
4128
4173
  /**
4129
4174
  * money
4130
4175
  * @nullable
@@ -5367,13 +5412,24 @@ export interface PodDetailDto {
5367
5412
  labelId: string | null;
5368
5413
  /** pod_status value */
5369
5414
  status: string;
5370
- /** Unit width (mm) */
5371
- unitWidthMm: number;
5372
- unitHeightMm: number;
5373
- unitDepthMm: number;
5415
+ /**
5416
+ * Unit width (mm). The three dimensions are all set or all null; null means no size has been recorded for this unit yet, and volumeCm3 is then null too.
5417
+ * @nullable
5418
+ */
5419
+ unitWidthMm: number | null;
5420
+ /**
5421
+ * Unit height (mm); null with unitWidthMm.
5422
+ * @nullable
5423
+ */
5424
+ unitHeightMm: number | null;
5425
+ /**
5426
+ * Unit depth (mm); null with unitWidthMm.
5427
+ * @nullable
5428
+ */
5429
+ unitDepthMm: number | null;
5374
5430
  quantity: number;
5375
5431
  /**
5376
- * Volume in cm³ (generated projection)
5432
+ * Volume in cm³ (generated projection); null while the unit has no recorded size.
5377
5433
  * @nullable
5378
5434
  */
5379
5435
  volumeCm3: number | null;
@@ -5432,21 +5488,6 @@ export interface PickStateDto {
5432
5488
  packedQuantity: number | null;
5433
5489
  }
5434
5490
  export interface UpdatePodDto {
5435
- /**
5436
- * Unit width in millimetres.
5437
- * @minimum 1
5438
- */
5439
- unitWidthMm?: number;
5440
- /**
5441
- * Unit height in millimetres.
5442
- * @minimum 1
5443
- */
5444
- unitHeightMm?: number;
5445
- /**
5446
- * Unit depth in millimetres.
5447
- * @minimum 1
5448
- */
5449
- unitDepthMm?: number;
5450
5491
  /**
5451
5492
  * Physical label id (relabel).
5452
5493
  * @maxLength 200
@@ -5470,13 +5511,24 @@ export interface PodDto {
5470
5511
  labelId: string | null;
5471
5512
  /** pod_status value */
5472
5513
  status: string;
5473
- /** Unit width (mm) */
5474
- unitWidthMm: number;
5475
- unitHeightMm: number;
5476
- unitDepthMm: number;
5514
+ /**
5515
+ * Unit width (mm). The three dimensions are all set or all null; null means no size has been recorded for this unit yet, and volumeCm3 is then null too.
5516
+ * @nullable
5517
+ */
5518
+ unitWidthMm: number | null;
5519
+ /**
5520
+ * Unit height (mm); null with unitWidthMm.
5521
+ * @nullable
5522
+ */
5523
+ unitHeightMm: number | null;
5524
+ /**
5525
+ * Unit depth (mm); null with unitWidthMm.
5526
+ * @nullable
5527
+ */
5528
+ unitDepthMm: number | null;
5477
5529
  quantity: number;
5478
5530
  /**
5479
- * Volume in cm³ (generated projection)
5531
+ * Volume in cm³ (generated projection); null while the unit has no recorded size.
5480
5532
  * @nullable
5481
5533
  */
5482
5534
  volumeCm3: number | null;
@@ -6385,8 +6437,8 @@ export interface ReceiveNewProductCommandDto {
6385
6437
  placeholderName: string;
6386
6438
  /** Category FK; a bad id falls back to null + categoryFallbackUsed:true. */
6387
6439
  categoryId?: number;
6388
- /** User-estimated unit dimensions. */
6389
- userEstimatedUnitDimensions: UnitDimensionsDto;
6440
+ /** Measured unit dimensions of the received goods. The pod is recorded as warehouse-measured. */
6441
+ unitDimensions: UnitDimensionsDto;
6390
6442
  /** Destination container. */
6391
6443
  containerId: string;
6392
6444
  /**
@@ -6507,8 +6559,8 @@ export interface AdjustResultDto {
6507
6559
  }
6508
6560
  export interface SyncProductPodDimensionsDto {
6509
6561
  productId: string;
6510
- /** A pod of the product's item. */
6511
- podId: string;
6562
+ /** A pod of the product's item. Optional: the save measures every live pod of the product whose sales order has not completed, whether or not one is named. When sent it must belong to the product (else 404), and the response reports it back. */
6563
+ podId?: string;
6512
6564
  /** Measured unit dimensions. */
6513
6565
  unitDimensions: UnitDimensionsDto;
6514
6566
  /**
@@ -6530,7 +6582,15 @@ export interface SyncedPodDimensionsDto {
6530
6582
  }
6531
6583
  export interface SyncProductPodDimensionsResultDto {
6532
6584
  productId: string;
6533
- pod: SyncedPodDimensionsDto;
6585
+ /**
6586
+ * The pod named by podId, as written. Null when podId was omitted, or when that pod was skipped because its sales order has completed.
6587
+ * @nullable
6588
+ */
6589
+ pod: SyncedPodDimensionsDto | null;
6590
+ /** Live pods of the product this save sized and stamped as measured. */
6591
+ podsWritten: number;
6592
+ /** Live pods of the product left as they were because their sales order has completed: its billable volume is already fixed, and the pod must keep agreeing with it. */
6593
+ podsSkipped: number;
6534
6594
  /** True when this response replays a previous run of the key. */
6535
6595
  idempotent: boolean;
6536
6596
  }
@@ -6665,8 +6725,8 @@ export interface IdentifyPickupItemCommandDto {
6665
6725
  placeholderName: string;
6666
6726
  /** Category id (nullable FK). A bad id falls back to null with categoryFallbackUsed=true. */
6667
6727
  categoryId?: number;
6668
- /** Worker's estimated unit dimensions. */
6669
- userEstimatedUnitDimensions: UnitDimensionsDto;
6728
+ /** Optional estimate of one unit's size, e.g. the driver's. It is stored on the product created by the ad-hoc branch (as the product's estimated dimensions) and never sizes the pod: the pod is created without dimensions until a warehouse measures it. Ignored when salesOrderProductId is sent, since that product already exists. */
6729
+ userEstimatedUnitDimensions?: UnitDimensionsDto;
6670
6730
  /** Storage key of the product image. */
6671
6731
  productImageStorageKey: string;
6672
6732
  damageReport?: DamageReportInputDto;
@@ -6709,8 +6769,8 @@ export interface CheckInNewProductCommandDto {
6709
6769
  placeholderName: string;
6710
6770
  /** Category id (nullable FK). A bad id falls back to null with categoryFallbackUsed=true. */
6711
6771
  categoryId?: number;
6712
- /** Worker's estimated unit dimensions. */
6713
- userEstimatedUnitDimensions: UnitDimensionsDto;
6772
+ /** Measured unit dimensions of the item. The pod is recorded as warehouse-measured. */
6773
+ unitDimensions: UnitDimensionsDto;
6714
6774
  /** Storage key of the product image. */
6715
6775
  productImageStorageKey: string;
6716
6776
  /** Destination container — the pod is put away immediately, no separate check-in/place call. */
@@ -8327,6 +8387,15 @@ export interface EnabledCurrencyDto {
8327
8387
  createdAt: string;
8328
8388
  updatedAt: string;
8329
8389
  }
8390
+ /**
8391
+ * 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.
8392
+ */
8393
+ export type TenantBillingConfigDtoPriceBookMode = typeof TenantBillingConfigDtoPriceBookMode[keyof typeof TenantBillingConfigDtoPriceBookMode];
8394
+ export declare const TenantBillingConfigDtoPriceBookMode: {
8395
+ readonly legacy: "legacy";
8396
+ readonly shadow: "shadow";
8397
+ readonly live: "live";
8398
+ };
8330
8399
  export interface TenantBillingConfigDto {
8331
8400
  tenantBillingConfigId: string;
8332
8401
  tenantId: string;
@@ -8347,10 +8416,21 @@ export interface TenantBillingConfigDto {
8347
8416
  * @nullable
8348
8417
  */
8349
8418
  corporateIdentityNumber: string | null;
8419
+ /** 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. */
8420
+ priceBookMode: TenantBillingConfigDtoPriceBookMode;
8350
8421
  createdAt: string;
8351
8422
  updatedAt: string;
8352
8423
  enabledCurrencies: EnabledCurrencyDto[];
8353
8424
  }
8425
+ /**
8426
+ * 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.
8427
+ */
8428
+ export type UpdateTenantBillingConfigDtoPriceBookMode = typeof UpdateTenantBillingConfigDtoPriceBookMode[keyof typeof UpdateTenantBillingConfigDtoPriceBookMode];
8429
+ export declare const UpdateTenantBillingConfigDtoPriceBookMode: {
8430
+ readonly legacy: "legacy";
8431
+ readonly shadow: "shadow";
8432
+ readonly live: "live";
8433
+ };
8354
8434
  export interface UpdateTenantBillingConfigDto {
8355
8435
  defaultPaymentMethodId?: string;
8356
8436
  defaultPaymentTermId?: string;
@@ -8359,6 +8439,8 @@ export interface UpdateTenantBillingConfigDto {
8359
8439
  requiresPricingApproval?: boolean;
8360
8440
  /** The tenant's own legal-entity registration number (e.g. Swedish orgnummer). */
8361
8441
  corporateIdentityNumber?: string;
8442
+ /** 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. */
8443
+ priceBookMode?: UpdateTenantBillingConfigDtoPriceBookMode;
8362
8444
  changeReason?: string;
8363
8445
  }
8364
8446
  export interface EnabledCurrencyInputDto {
@@ -8841,8 +8923,14 @@ export interface CouponDto {
8841
8923
  durationInMonths: number | null;
8842
8924
  /** @nullable */
8843
8925
  createdFrom: string | null;
8926
+ /** Granted automatically to a qualifying order instead of by code entry (a campaign). Its code is generated and never shown to customers. Set at create only. */
8927
+ autoApply: boolean;
8928
+ /** Whether a code may be used alongside this coupon. false: an account enrolled in it cannot also apply a code. */
8929
+ combinable: boolean;
8844
8930
  /** Lifecycle status (draft / pending_approval / active / archived). */
8845
8931
  lifecycleStatus: string;
8932
+ /** Number of the current definition. A new coupon is 1; every later change to its terms goes up by one, and so does each benefit added, changed or removed — so a coupon created and then given two benefits is 3. Lifecycle, isActive and note changes do not count. A campaign enrolment keeps the version it was granted under. */
8933
+ version: number;
8846
8934
  createdAt: string;
8847
8935
  updatedAt: string;
8848
8936
  }
@@ -8902,8 +8990,14 @@ export interface CouponDetailDto {
8902
8990
  durationInMonths: number | null;
8903
8991
  /** @nullable */
8904
8992
  createdFrom: string | null;
8993
+ /** Granted automatically to a qualifying order instead of by code entry (a campaign). Its code is generated and never shown to customers. Set at create only. */
8994
+ autoApply: boolean;
8995
+ /** Whether a code may be used alongside this coupon. false: an account enrolled in it cannot also apply a code. */
8996
+ combinable: boolean;
8905
8997
  /** Lifecycle status (draft / pending_approval / active / archived). */
8906
8998
  lifecycleStatus: string;
8999
+ /** Number of the current definition. A new coupon is 1; every later change to its terms goes up by one, and so does each benefit added, changed or removed — so a coupon created and then given two benefits is 3. Lifecycle, isActive and note changes do not count. A campaign enrolment keeps the version it was granted under. */
9000
+ version: number;
8907
9001
  createdAt: string;
8908
9002
  updatedAt: string;
8909
9003
  /** The coupon's benefits. */
@@ -8939,8 +9033,12 @@ export declare const CreateCouponDtoCreatedFrom: {
8939
9033
  readonly migration: "migration";
8940
9034
  };
8941
9035
  export interface CreateCouponDto {
8942
- /** Unique coupon code within the tenant. */
8943
- code: string;
9036
+ /** Unique coupon code within the tenant. Required unless autoApply is true; an automatic coupon's code is generated, so omit it. */
9037
+ code?: string;
9038
+ /** Grant automatically to a qualifying order instead of by code entry (default false). Cannot be changed after create. */
9039
+ autoApply?: boolean;
9040
+ /** Whether a code may be used alongside this coupon (default true). */
9041
+ combinable?: boolean;
8944
9042
  name?: string;
8945
9043
  description?: string;
8946
9044
  /** Whether the coupon is active (default true). */
@@ -8982,6 +9080,8 @@ export interface UpdateCouponDto {
8982
9080
  expiresAt?: string | null;
8983
9081
  /** Restrict to new customers only. */
8984
9082
  onlyNewCustomers?: boolean;
9083
+ /** Whether a code may be used alongside this coupon. */
9084
+ combinable?: boolean;
8985
9085
  /**
8986
9086
  * Total redemption cap across all accounts; null = unlimited.
8987
9087
  * @nullable
@@ -9202,6 +9302,13 @@ export interface BillingModelTemplateDto {
9202
9302
  export type PricingRuleDtoParameters = {
9203
9303
  [key: string]: unknown;
9204
9304
  };
9305
+ /**
9306
+ * The template form values this rule was expanded from (the template's uiFormSchema shape), or null. Every rule one template application produced carries the same value.
9307
+ * @nullable
9308
+ */
9309
+ export type PricingRuleDtoTemplateInput = {
9310
+ [key: string]: unknown;
9311
+ } | null;
9205
9312
  export interface PricingRuleDto {
9206
9313
  pricingRuleId: string;
9207
9314
  tenantId: string;
@@ -9249,6 +9356,21 @@ export interface PricingRuleDto {
9249
9356
  * @nullable
9250
9357
  */
9251
9358
  approvedAt: string | null;
9359
+ /**
9360
+ * The price book change set that introduced this rule, or null for a rule written any other way (apply-template, merchandise, imports).
9361
+ * @nullable
9362
+ */
9363
+ changeSetId: string | null;
9364
+ /**
9365
+ * The built-in billing-model template this rule was expanded from, or null for a rule written without one.
9366
+ * @nullable
9367
+ */
9368
+ templateCode: string | null;
9369
+ /**
9370
+ * The template form values this rule was expanded from (the template's uiFormSchema shape), or null. Every rule one template application produced carries the same value.
9371
+ * @nullable
9372
+ */
9373
+ templateInput: PricingRuleDtoTemplateInput;
9252
9374
  createdAt: string;
9253
9375
  updatedAt: string;
9254
9376
  }
@@ -9696,6 +9818,154 @@ export interface PaginatedInvoiceBasisRowsDto {
9696
9818
  /** Effective rows skipped applied. */
9697
9819
  offset: number;
9698
9820
  }
9821
+ export type PriceBookSectionDtoSection = typeof PriceBookSectionDtoSection[keyof typeof PriceBookSectionDtoSection];
9822
+ export declare const PriceBookSectionDtoSection: {
9823
+ readonly storage: "storage";
9824
+ readonly pickup: "pickup";
9825
+ readonly delivery: "delivery";
9826
+ readonly fees: "fees";
9827
+ };
9828
+ export interface PriceBookSectionDto {
9829
+ section: PriceBookSectionDtoSection;
9830
+ /** The billable event types this section prices. */
9831
+ billableEventTypes: string[];
9832
+ /** Tenant-wide active rules in effect today. */
9833
+ rules: PricingRuleDto[];
9834
+ /** Tenant-wide active rules published to start after today. */
9835
+ scheduledRules: PricingRuleDto[];
9836
+ }
9837
+ export type PriceBookChangeSetSectionDtoSection = typeof PriceBookChangeSetSectionDtoSection[keyof typeof PriceBookChangeSetSectionDtoSection];
9838
+ export declare const PriceBookChangeSetSectionDtoSection: {
9839
+ readonly storage: "storage";
9840
+ readonly pickup: "pickup";
9841
+ readonly delivery: "delivery";
9842
+ readonly fees: "fees";
9843
+ };
9844
+ /**
9845
+ * `edited`: publish replaces this section's live rules with `rules` (none, if empty). `unchanged`: publish leaves the section's live rules alone.
9846
+ */
9847
+ export type PriceBookChangeSetSectionDtoState = typeof PriceBookChangeSetSectionDtoState[keyof typeof PriceBookChangeSetSectionDtoState];
9848
+ export declare const PriceBookChangeSetSectionDtoState: {
9849
+ readonly unchanged: "unchanged";
9850
+ readonly edited: "edited";
9851
+ };
9852
+ export interface PriceBookChangeSetSectionDto {
9853
+ section: PriceBookChangeSetSectionDtoSection;
9854
+ /** `edited`: publish replaces this section's live rules with `rules` (none, if empty). `unchanged`: publish leaves the section's live rules alone. */
9855
+ state: PriceBookChangeSetSectionDtoState;
9856
+ /** The draft rules this change set holds for the section. */
9857
+ rules: PricingRuleDto[];
9858
+ }
9859
+ /**
9860
+ * `draft` (editable), `published`, or `discarded`. A published change set whose effectiveFrom is still ahead is scheduled.
9861
+ */
9862
+ export type PriceBookChangeSetDtoStatus = typeof PriceBookChangeSetDtoStatus[keyof typeof PriceBookChangeSetDtoStatus];
9863
+ export declare const PriceBookChangeSetDtoStatus: {
9864
+ readonly draft: "draft";
9865
+ readonly published: "published";
9866
+ readonly discarded: "discarded";
9867
+ };
9868
+ export interface PriceBookChangeSetDto {
9869
+ changeSetId: string;
9870
+ /** ISO 4217 currency every rule in the change set prices in. */
9871
+ currencyCode: string;
9872
+ /** `draft` (editable), `published`, or `discarded`. A published change set whose effectiveFrom is still ahead is scheduled. */
9873
+ status: PriceBookChangeSetDtoStatus;
9874
+ /** Optimistic-concurrency version; send it back on the next write. */
9875
+ version: number;
9876
+ effectiveFrom: string;
9877
+ sections: PriceBookChangeSetSectionDto[];
9878
+ /** @nullable */
9879
+ publishedAt: string | null;
9880
+ createdAt: string;
9881
+ updatedAt: string;
9882
+ }
9883
+ export type PriceBookDtoPriceBookMode = typeof PriceBookDtoPriceBookMode[keyof typeof PriceBookDtoPriceBookMode];
9884
+ export declare const PriceBookDtoPriceBookMode: {
9885
+ readonly legacy: "legacy";
9886
+ readonly shadow: "shadow";
9887
+ readonly live: "live";
9888
+ };
9889
+ export interface PriceBookDto {
9890
+ priceBookMode: PriceBookDtoPriceBookMode;
9891
+ /** Whether the caller may write the price book now: `live` opens it to tenant admins, `shadow` to platform admins only, `legacy` to nobody. */
9892
+ writable: boolean;
9893
+ /**
9894
+ * 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.
9895
+ * @nullable
9896
+ */
9897
+ currencyCode: string | null;
9898
+ sections: PriceBookSectionDto[];
9899
+ /**
9900
+ * The tenant's open draft, or null.
9901
+ * @nullable
9902
+ */
9903
+ draft: PriceBookChangeSetDto | null;
9904
+ }
9905
+ export interface CreatePriceBookChangeSetDto {
9906
+ /** The date the draft takes effect when published: its rules start and the rules it supersedes stop on this date. Not in the past. A section edit or the publish call can move it. */
9907
+ effectiveFrom: string;
9908
+ }
9909
+ /**
9910
+ * Template form values, per the template's uiFormSchema.
9911
+ */
9912
+ export type PriceBookSectionEntryDtoInput = {
9913
+ [key: string]: unknown;
9914
+ };
9915
+ export interface PriceBookSectionEntryDto {
9916
+ /** Built-in template code (see GET /billing/billing-model-templates). Its billableEventType must belong to the section being edited. */
9917
+ templateCode: string;
9918
+ /** The billing article the priced amount posts to — the ledger line on the invoice. */
9919
+ articleId: string;
9920
+ /** Template form values, per the template's uiFormSchema. */
9921
+ input: PriceBookSectionEntryDtoInput;
9922
+ }
9923
+ export interface ReplacePriceBookSectionDto {
9924
+ /** The change set version this edit was made against; a stale version is a 409. */
9925
+ version: number;
9926
+ entries: PriceBookSectionEntryDto[];
9927
+ /** Why the section changed. Stored on every rule the edit writes. */
9928
+ changeReason: string;
9929
+ /** Moves the whole draft's effective date (one date per change set). Not in the past. Omit to keep it. */
9930
+ effectiveFrom?: string;
9931
+ }
9932
+ export interface PreviewPriceBookChangeSetDto {
9933
+ /** Preview as of this effective date instead of the draft's own. Not in the past. */
9934
+ effectiveFrom?: string;
9935
+ }
9936
+ export type PriceBookPublishSectionDtoSection = typeof PriceBookPublishSectionDtoSection[keyof typeof PriceBookPublishSectionDtoSection];
9937
+ export declare const PriceBookPublishSectionDtoSection: {
9938
+ readonly storage: "storage";
9939
+ readonly pickup: "pickup";
9940
+ readonly delivery: "delivery";
9941
+ readonly fees: "fees";
9942
+ };
9943
+ export interface PriceBookPublishSectionDto {
9944
+ section: PriceBookPublishSectionDtoSection;
9945
+ /** Draft rules that go live on effectiveFrom. */
9946
+ activated: PricingRuleDto[];
9947
+ /** Live rules whose window closes on effectiveFrom (they keep pricing until then). */
9948
+ closed: PricingRuleDto[];
9949
+ /** Rules published to start on or after effectiveFrom that never take effect: retired, as DELETE /billing/pricing-rules/:id would. */
9950
+ retired: PricingRuleDto[];
9951
+ }
9952
+ export interface PriceBookPublishResultDto {
9953
+ /** The change set — published after a publish, still the draft after a preview. */
9954
+ changeSet: PriceBookChangeSetDto;
9955
+ effectiveFrom: string;
9956
+ /** One entry per edited section. */
9957
+ sections: PriceBookPublishSectionDto[];
9958
+ }
9959
+ export interface PublishPriceBookChangeSetDto {
9960
+ /** The change set version being published; a stale version is a 409. */
9961
+ version: number;
9962
+ /** Publish on this date instead of the draft's own. Not in the past. */
9963
+ effectiveFrom?: string;
9964
+ }
9965
+ export interface DiscardPriceBookChangeSetDto {
9966
+ /** The change set version being discarded; a stale version is a 409. */
9967
+ version: number;
9968
+ }
9699
9969
  export interface StripeWebhookAckDto {
9700
9970
  /** Always true once the event was accepted. */
9701
9971
  received: boolean;
@@ -13554,6 +13824,14 @@ export type BillableEventsControllerListBillableEventsV1Params = {
13554
13824
  * Filter by the operational source row id.
13555
13825
  */
13556
13826
  sourceId?: string;
13827
+ /**
13828
+ * Only events charged to this billing account. An event not yet resolved to an account has no billingAccountId and is never returned by this filter.
13829
+ */
13830
+ billingAccountId?: string;
13831
+ /**
13832
+ * Only events of this type — one of the keys GET /billing/billable-event-types returns.
13833
+ */
13834
+ eventType?: string;
13557
13835
  };
13558
13836
  export type InvoiceBasisRowsControllerListInvoiceBasisRowsV1Params = {
13559
13837
  /**