@vindentech/api-client 0.3.0-next.14 → 0.3.0-next.16

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 (69) hide show
  1. package/dist/generated/_all.d.ts +13 -0
  2. package/dist/generated/_all.d.ts.map +1 -1
  3. package/dist/generated/_all.js +13 -0
  4. package/dist/generated/_all.js.map +1 -1
  5. package/dist/generated/_permissions.d.ts +142 -1
  6. package/dist/generated/_permissions.d.ts.map +1 -1
  7. package/dist/generated/_permissions.js +36 -0
  8. package/dist/generated/_permissions.js.map +1 -1
  9. package/dist/generated/index.schemas.d.ts +1758 -52
  10. package/dist/generated/index.schemas.d.ts.map +1 -1
  11. package/dist/generated/index.schemas.js +583 -0
  12. package/dist/generated/index.schemas.js.map +1 -1
  13. package/dist/generated/me-notification-preferences/me-notification-preferences.d.ts +23 -0
  14. package/dist/generated/me-notification-preferences/me-notification-preferences.d.ts.map +1 -0
  15. package/dist/generated/me-notification-preferences/me-notification-preferences.js +12 -0
  16. package/dist/generated/me-notification-preferences/me-notification-preferences.js.map +1 -0
  17. package/dist/generated/notification-dispatches/notification-dispatches.d.ts +51 -0
  18. package/dist/generated/notification-dispatches/notification-dispatches.d.ts.map +1 -0
  19. package/dist/generated/notification-dispatches/notification-dispatches.js +27 -0
  20. package/dist/generated/notification-dispatches/notification-dispatches.js.map +1 -0
  21. package/dist/generated/notification-events/notification-events.d.ts +44 -0
  22. package/dist/generated/notification-events/notification-events.d.ts.map +1 -0
  23. package/dist/generated/notification-events/notification-events.js +35 -0
  24. package/dist/generated/notification-events/notification-events.js.map +1 -0
  25. package/dist/generated/notification-health/notification-health.d.ts +23 -0
  26. package/dist/generated/notification-health/notification-health.d.ts.map +1 -0
  27. package/dist/generated/notification-health/notification-health.js +12 -0
  28. package/dist/generated/notification-health/notification-health.js.map +1 -0
  29. package/dist/generated/notification-preferences/notification-preferences.d.ts +30 -0
  30. package/dist/generated/notification-preferences/notification-preferences.d.ts.map +1 -0
  31. package/dist/generated/notification-preferences/notification-preferences.js +18 -0
  32. package/dist/generated/notification-preferences/notification-preferences.js.map +1 -0
  33. package/dist/generated/notification-requests/notification-requests.d.ts +30 -0
  34. package/dist/generated/notification-requests/notification-requests.d.ts.map +1 -0
  35. package/dist/generated/notification-requests/notification-requests.js +11 -0
  36. package/dist/generated/notification-requests/notification-requests.js.map +1 -0
  37. package/dist/generated/notification-rules/notification-rules.d.ts +186 -0
  38. package/dist/generated/notification-rules/notification-rules.d.ts.map +1 -0
  39. package/dist/generated/notification-rules/notification-rules.js +88 -0
  40. package/dist/generated/notification-rules/notification-rules.js.map +1 -0
  41. package/dist/generated/notification-settings/notification-settings.d.ts +23 -0
  42. package/dist/generated/notification-settings/notification-settings.d.ts.map +1 -0
  43. package/dist/generated/notification-settings/notification-settings.js +12 -0
  44. package/dist/generated/notification-settings/notification-settings.js.map +1 -0
  45. package/dist/generated/notification-templates/notification-templates.d.ts +305 -0
  46. package/dist/generated/notification-templates/notification-templates.d.ts.map +1 -0
  47. package/dist/generated/notification-templates/notification-templates.js +121 -0
  48. package/dist/generated/notification-templates/notification-templates.js.map +1 -0
  49. package/dist/generated/orders/orders.d.ts +15 -1
  50. package/dist/generated/orders/orders.d.ts.map +1 -1
  51. package/dist/generated/orders/orders.js +12 -0
  52. package/dist/generated/orders/orders.js.map +1 -1
  53. package/dist/generated/sender-identities/sender-identities.d.ts +44 -0
  54. package/dist/generated/sender-identities/sender-identities.d.ts.map +1 -0
  55. package/dist/generated/sender-identities/sender-identities.js +28 -0
  56. package/dist/generated/sender-identities/sender-identities.js.map +1 -0
  57. package/dist/generated/service-points/service-points.d.ts +23 -0
  58. package/dist/generated/service-points/service-points.d.ts.map +1 -0
  59. package/dist/generated/service-points/service-points.js +18 -0
  60. package/dist/generated/service-points/service-points.js.map +1 -0
  61. package/dist/generated/suppressions/suppressions.d.ts +37 -0
  62. package/dist/generated/suppressions/suppressions.d.ts.map +1 -0
  63. package/dist/generated/suppressions/suppressions.js +36 -0
  64. package/dist/generated/suppressions/suppressions.js.map +1 -0
  65. package/dist/generated/unsubscribe/unsubscribe.d.ts +55 -0
  66. package/dist/generated/unsubscribe/unsubscribe.d.ts.map +1 -0
  67. package/dist/generated/unsubscribe/unsubscribe.js +22 -0
  68. package/dist/generated/unsubscribe/unsubscribe.js.map +1 -0
  69. package/package.json +1 -1
@@ -100,6 +100,21 @@ export interface OrderProductDto {
100
100
  quantity: number;
101
101
  status: string;
102
102
  }
103
+ export interface OrderEstimateItemDto {
104
+ /**
105
+ * What the customer called it.
106
+ * @nullable
107
+ */
108
+ reference: string | null;
109
+ /** How many of this type the customer expects to hand over. */
110
+ quantity: number;
111
+ /** @nullable */
112
+ lengthMm: number | null;
113
+ /** @nullable */
114
+ widthMm: number | null;
115
+ /** @nullable */
116
+ heightMm: number | null;
117
+ }
103
118
  export interface OrderEstimateDto {
104
119
  volumeCm3: number;
105
120
  /** @nullable */
@@ -116,6 +131,11 @@ export interface OrderEstimateDto {
116
131
  isHousehold: boolean | null;
117
132
  /** @nullable */
118
133
  comment: string | null;
134
+ /**
135
+ * The declared expected lines the estimate's volumeCm3 / itemCount are computed from; null on an estimate that carries only the aggregate figures.
136
+ * @nullable
137
+ */
138
+ estimatedItems: OrderEstimateItemDto[] | null;
119
139
  }
120
140
  export interface OrderLegDto {
121
141
  orderTransportLegId: string;
@@ -145,6 +165,13 @@ export interface OrderLegDto {
145
165
  city: string | null;
146
166
  /** @nullable */
147
167
  countryCode: string | null;
168
+ /**
169
+ * Opaque provider-specific service-point (parcel locker) id; DELIVERY legs only.
170
+ * @nullable
171
+ */
172
+ servicePointId: string | null;
173
+ /** @nullable */
174
+ servicePointProvider: string | null;
148
175
  /** @nullable */
149
176
  floorLevel: number | null;
150
177
  /** @nullable */
@@ -238,6 +265,11 @@ export interface OrderDetailDto {
238
265
  /** @nullable */
239
266
  estimate: OrderDetailDtoEstimate;
240
267
  legs: OrderLegDto[];
268
+ /**
269
+ * The transport_slot id of this order's material:delivery reservation, if any — derived from the originating cart, not a stored column.
270
+ * @nullable
271
+ */
272
+ materialsTimeslotId: string | null;
241
273
  }
242
274
  export type OrderTimelineEventDtoKind = typeof OrderTimelineEventDtoKind[keyof typeof OrderTimelineEventDtoKind];
243
275
  export declare const OrderTimelineEventDtoKind: {
@@ -449,6 +481,27 @@ export interface EditOrderItemsDto {
449
481
  /** Full desired set of product lines. Omit a stored line to remove it; an empty array removes all removable lines. */
450
482
  items: OrderItemInput[];
451
483
  }
484
+ export interface EstimateItemInputDto {
485
+ /** What the customer calls the goods (free text). */
486
+ reference: string;
487
+ /**
488
+ * How many of this type the customer expects.
489
+ * @minimum 1
490
+ */
491
+ quantity: number;
492
+ /** @minimum 1 */
493
+ lengthMm?: number;
494
+ /** @minimum 1 */
495
+ widthMm?: number;
496
+ /** @minimum 1 */
497
+ heightMm?: number;
498
+ }
499
+ export interface EditOrderEstimateDto {
500
+ /** Full desired set of declared expected lines; an empty array clears them (and zeroes the estimate's volume). */
501
+ estimatedItems: EstimateItemInputDto[];
502
+ /** Customer-visible note stored on the estimate. */
503
+ comment?: string;
504
+ }
452
505
  /**
453
506
  * Target sales_order status. Must be reachable from the order's current status via sales_order_status_transition. The terminal targets COMPLETED / CANCELLED are rejected here (transition_requires_named_command) — use POST /complete, /deliver-all, or /cancel.
454
507
  */
@@ -1535,6 +1588,29 @@ export interface AnonymousSessionDto {
1535
1588
  sessionToken: string;
1536
1589
  expiresAt: string;
1537
1590
  }
1591
+ export interface UnsubscribePageDto {
1592
+ /** The `messaging.message_category` the opt-out applies to. */
1593
+ category: string;
1594
+ /** The channel the opt-out applies to. Email-only in v1. */
1595
+ channel: string;
1596
+ /** The tenant's display name, for the page's branding line. */
1597
+ tenantDisplayName: string;
1598
+ /** Whether the token is past its expiry. An expired token still opts out, but the POST requires `confirmed: true` — it answers 409 confirm_required otherwise. */
1599
+ expired: boolean;
1600
+ }
1601
+ export interface ConfirmUnsubscribeDto {
1602
+ /** Set true to complete an opt-out with an EXPIRED token. The GET response's `expired` flag is what tells the page to ask; without it an expired token answers 409 confirm_required. */
1603
+ confirmed?: boolean;
1604
+ /** RFC 8058 one-click. A conforming mail client posts this as `application/x-www-form-urlencoded` with the exact value `One-Click`; no other caller sets it. Any value is accepted by validation, but only `One-Click` (case-insensitive) is treated as a one-click request. */
1605
+ 'List-Unsubscribe'?: string;
1606
+ }
1607
+ export interface UnsubscribeResultDto {
1608
+ /** Always true when the request succeeded. */
1609
+ optedOut: boolean;
1610
+ category: string;
1611
+ channel: string;
1612
+ tenantDisplayName: string;
1613
+ }
1538
1614
  export type CreateCartDtoCartType = typeof CreateCartDtoCartType[keyof typeof CreateCartDtoCartType];
1539
1615
  export declare const CreateCartDtoCartType: {
1540
1616
  readonly PICKUP_ESTIMATE: "PICKUP_ESTIMATE";
@@ -1592,6 +1668,41 @@ export interface CartLocationDto {
1592
1668
  /** @nullable */
1593
1669
  extraStorageM2: number | null;
1594
1670
  }
1671
+ /**
1672
+ * @nullable
1673
+ */
1674
+ export type CartDeliveryLocationDtoServicePointProvider = typeof CartDeliveryLocationDtoServicePointProvider[keyof typeof CartDeliveryLocationDtoServicePointProvider] | null;
1675
+ export declare const CartDeliveryLocationDtoServicePointProvider: {
1676
+ readonly POSTI: "POSTI";
1677
+ };
1678
+ export interface CartDeliveryLocationDto {
1679
+ /** @nullable */
1680
+ addressLine1: string | null;
1681
+ /** @nullable */
1682
+ addressLine2: string | null;
1683
+ /** @nullable */
1684
+ zipCode: string | null;
1685
+ /** @nullable */
1686
+ city: string | null;
1687
+ /** @nullable */
1688
+ countryCode: string | null;
1689
+ /** @nullable */
1690
+ squareMeters: number | null;
1691
+ /** @nullable */
1692
+ numberOfRooms: number | null;
1693
+ /** @nullable */
1694
+ floor: number | null;
1695
+ /** @nullable */
1696
+ elevatorType: string | null;
1697
+ /** @nullable */
1698
+ isBackyardHouse: boolean | null;
1699
+ /** @nullable */
1700
+ extraStorageM2: number | null;
1701
+ /** @nullable */
1702
+ servicePointId: string | null;
1703
+ /** @nullable */
1704
+ servicePointProvider: CartDeliveryLocationDtoServicePointProvider;
1705
+ }
1595
1706
  /**
1596
1707
  * @nullable
1597
1708
  */
@@ -1600,7 +1711,13 @@ export type CartItemDtoMetadata = {
1600
1711
  } | null;
1601
1712
  export interface CartItemDto {
1602
1713
  cartProductId: string;
1603
- productReference: string;
1714
+ /**
1715
+ * The product this line stands for; null on an estimate line.
1716
+ * @nullable
1717
+ */
1718
+ productId: string | null;
1719
+ /** @nullable */
1720
+ productReference: string | null;
1604
1721
  quantity: number;
1605
1722
  /** @nullable */
1606
1723
  lengthMm: number | null;
@@ -1637,6 +1754,11 @@ export interface CartHoldDto {
1637
1754
  reservationId: string;
1638
1755
  /** @nullable */
1639
1756
  slotId: string | null;
1757
+ /**
1758
+ * Which cart component this hold is for (move:pickup | move:delivery | material:delivery); null = legacy single-component cart.
1759
+ * @nullable
1760
+ */
1761
+ componentKey: string | null;
1640
1762
  /** HELD | CONFIRMED | EXPIRED | CANCELLED */
1641
1763
  status: string;
1642
1764
  /** @nullable */
@@ -1684,9 +1806,14 @@ export interface CartDto {
1684
1806
  customer: CartContactDto;
1685
1807
  contact: CartContactDto;
1686
1808
  pickup: CartLocationDto;
1687
- delivery: CartLocationDto;
1809
+ delivery: CartDeliveryLocationDto;
1688
1810
  /** @nullable */
1689
1811
  estimatedHours: string | null;
1812
+ /**
1813
+ * The transport_slot id of this cart's material:delivery hold, if any — derived from holds[], not a stored column.
1814
+ * @nullable
1815
+ */
1816
+ materialsTimeslotId: string | null;
1690
1817
  /**
1691
1818
  * Versioned pricing payload (schema_version tracked server-side)
1692
1819
  * @nullable
@@ -1711,6 +1838,7 @@ export declare const QuoteLineDtoKind: {
1711
1838
  readonly MERCHANDISE: "MERCHANDISE";
1712
1839
  readonly TRANSPORT: "TRANSPORT";
1713
1840
  readonly INSURANCE: "INSURANCE";
1841
+ readonly START_FEE: "START_FEE";
1714
1842
  };
1715
1843
  export interface QuoteLineDto {
1716
1844
  kind: QuoteLineDtoKind;
@@ -1730,11 +1858,45 @@ export interface QuoteLineDto {
1730
1858
  /** Whether this line qualifies for the RUT labour deduction */
1731
1859
  rutEligible: boolean;
1732
1860
  }
1861
+ export interface QuoteVolumeDto {
1862
+ /** Total goods volume in cm³ */
1863
+ totalCm3: number;
1864
+ /** Total goods volume in m³, rounded to 4 decimal places */
1865
+ totalM3: number;
1866
+ /** Cart lines missing at least one dimension */
1867
+ incompleteLines: number;
1868
+ }
1733
1869
  export interface QuoteCouponDto {
1734
1870
  code: string;
1735
1871
  /** Discount applied to the payable total, integer minor units */
1736
1872
  discountMinor: number;
1737
1873
  }
1874
+ export interface QuoteBindingDto {
1875
+ bindingPlanId: string;
1876
+ code: string;
1877
+ displayName: string;
1878
+ /**
1879
+ * Null or 0 = flexible, no binding
1880
+ * @nullable
1881
+ */
1882
+ durationMonths: number | null;
1883
+ /** True when this plan came from the organization's active contract rather than the cart's selection */
1884
+ fromContract: boolean;
1885
+ }
1886
+ export interface QuoteDiscountDto {
1887
+ /** binding_period | campaign | contract | ... */
1888
+ ruleType: string;
1889
+ /**
1890
+ * Article code the rate applies to; null = every article
1891
+ * @nullable
1892
+ */
1893
+ articleCode: string | null;
1894
+ /**
1895
+ * Basis points (1000 = 10.00%)
1896
+ * @nullable
1897
+ */
1898
+ discountPercentBps: number | null;
1899
+ }
1738
1900
  export interface QuoteTotalsDto {
1739
1901
  /** Sum of line totals ex-VAT, minor units */
1740
1902
  exVatMinor: number;
@@ -1749,20 +1911,34 @@ export interface QuoteTotalsDto {
1749
1911
  * @nullable
1750
1912
  */
1751
1913
  export type QuoteResponseDtoCoupon = QuoteCouponDto | null;
1914
+ /**
1915
+ * The binding plan in force for this quote, or null when there is none
1916
+ * @nullable
1917
+ */
1918
+ export type QuoteResponseDtoBinding = QuoteBindingDto | null;
1752
1919
  export interface QuoteResponseDto {
1753
1920
  cartId: string;
1754
1921
  /** ISO 4217 — the currency all amounts are expressed in */
1755
1922
  currencyCode: string;
1756
1923
  lines: QuoteLineDto[];
1924
+ /** Goods volume — the basis for per-m³ rates */
1925
+ volume: QuoteVolumeDto;
1757
1926
  /** @nullable */
1758
1927
  coupon: QuoteResponseDtoCoupon;
1759
1928
  /**
1760
- * Total RUT labour deduction in minor units, or null when RUT does not apply
1929
+ * The binding plan in force for this quote, or null when there is none
1930
+ * @nullable
1931
+ */
1932
+ binding: QuoteResponseDtoBinding;
1933
+ /** The in-force binding plan's rate matrix — display data, NOT reflected in `totals` (see QuoteDiscountDto and the BINDING_DISCOUNT entry in `deferred`) */
1934
+ discounts: QuoteDiscountDto[];
1935
+ /**
1936
+ * 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'.
1761
1937
  * @nullable
1762
1938
  */
1763
1939
  rutDeductionMinor: number | null;
1764
1940
  totals: QuoteTotalsDto;
1765
- /** Component kinds present on the cart that are not yet priced server-side (no backing price source): GOODS, SERVICE, INSURANCE, BINDING. Their absence from `lines` is intentional, not a zero charge. */
1941
+ /** 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), BINDING_DISCOUNT (the plan carries rates in `discounts` that invoicing does not yet honour, so the totals exclude them), 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). */
1766
1942
  deferred: string[];
1767
1943
  }
1768
1944
  /**
@@ -1889,6 +2065,129 @@ export interface CartLocationInputDto {
1889
2065
  /** @nullable */
1890
2066
  extraStorageM2?: CartLocationInputDtoExtraStorageM2;
1891
2067
  }
2068
+ /**
2069
+ * @nullable
2070
+ */
2071
+ export type CartDeliveryLocationInputDtoAddressLine1 = {
2072
+ [key: string]: unknown;
2073
+ } | null;
2074
+ /**
2075
+ * @nullable
2076
+ */
2077
+ export type CartDeliveryLocationInputDtoAddressLine2 = {
2078
+ [key: string]: unknown;
2079
+ } | null;
2080
+ /**
2081
+ * @nullable
2082
+ */
2083
+ export type CartDeliveryLocationInputDtoZipCode = {
2084
+ [key: string]: unknown;
2085
+ } | null;
2086
+ /**
2087
+ * @nullable
2088
+ */
2089
+ export type CartDeliveryLocationInputDtoCity = {
2090
+ [key: string]: unknown;
2091
+ } | null;
2092
+ /**
2093
+ * ISO 3166-1 alpha-2
2094
+ * @nullable
2095
+ */
2096
+ export type CartDeliveryLocationInputDtoCountryCode = {
2097
+ [key: string]: unknown;
2098
+ } | null;
2099
+ /**
2100
+ * @nullable
2101
+ */
2102
+ export type CartDeliveryLocationInputDtoSquareMeters = {
2103
+ [key: string]: unknown;
2104
+ } | null;
2105
+ /**
2106
+ * @nullable
2107
+ */
2108
+ export type CartDeliveryLocationInputDtoNumberOfRooms = {
2109
+ [key: string]: unknown;
2110
+ } | null;
2111
+ /**
2112
+ * @nullable
2113
+ */
2114
+ export type CartDeliveryLocationInputDtoFloor = {
2115
+ [key: string]: unknown;
2116
+ } | null;
2117
+ /**
2118
+ * Value from the elevator_type lookup (e.g. NONE, SMALL, BIG)
2119
+ * @nullable
2120
+ */
2121
+ export type CartDeliveryLocationInputDtoElevatorType = {
2122
+ [key: string]: unknown;
2123
+ } | null;
2124
+ /**
2125
+ * @nullable
2126
+ */
2127
+ export type CartDeliveryLocationInputDtoIsBackyardHouse = {
2128
+ [key: string]: unknown;
2129
+ } | null;
2130
+ /**
2131
+ * @nullable
2132
+ */
2133
+ export type CartDeliveryLocationInputDtoExtraStorageM2 = {
2134
+ [key: string]: unknown;
2135
+ } | null;
2136
+ /**
2137
+ * Opaque provider-specific id; requires servicePointProvider alongside it.
2138
+ * @nullable
2139
+ */
2140
+ export type CartDeliveryLocationInputDtoServicePointId = {
2141
+ [key: string]: unknown;
2142
+ } | null;
2143
+ /**
2144
+ * Required alongside servicePointId.
2145
+ * @nullable
2146
+ */
2147
+ export type CartDeliveryLocationInputDtoServicePointProvider = typeof CartDeliveryLocationInputDtoServicePointProvider[keyof typeof CartDeliveryLocationInputDtoServicePointProvider] | null;
2148
+ export declare const CartDeliveryLocationInputDtoServicePointProvider: {
2149
+ readonly POSTI: "POSTI";
2150
+ };
2151
+ export interface CartDeliveryLocationInputDto {
2152
+ /** @nullable */
2153
+ addressLine1?: CartDeliveryLocationInputDtoAddressLine1;
2154
+ /** @nullable */
2155
+ addressLine2?: CartDeliveryLocationInputDtoAddressLine2;
2156
+ /** @nullable */
2157
+ zipCode?: CartDeliveryLocationInputDtoZipCode;
2158
+ /** @nullable */
2159
+ city?: CartDeliveryLocationInputDtoCity;
2160
+ /**
2161
+ * ISO 3166-1 alpha-2
2162
+ * @nullable
2163
+ */
2164
+ countryCode?: CartDeliveryLocationInputDtoCountryCode;
2165
+ /** @nullable */
2166
+ squareMeters?: CartDeliveryLocationInputDtoSquareMeters;
2167
+ /** @nullable */
2168
+ numberOfRooms?: CartDeliveryLocationInputDtoNumberOfRooms;
2169
+ /** @nullable */
2170
+ floor?: CartDeliveryLocationInputDtoFloor;
2171
+ /**
2172
+ * Value from the elevator_type lookup (e.g. NONE, SMALL, BIG)
2173
+ * @nullable
2174
+ */
2175
+ elevatorType?: CartDeliveryLocationInputDtoElevatorType;
2176
+ /** @nullable */
2177
+ isBackyardHouse?: CartDeliveryLocationInputDtoIsBackyardHouse;
2178
+ /** @nullable */
2179
+ extraStorageM2?: CartDeliveryLocationInputDtoExtraStorageM2;
2180
+ /**
2181
+ * Opaque provider-specific id; requires servicePointProvider alongside it.
2182
+ * @nullable
2183
+ */
2184
+ servicePointId?: CartDeliveryLocationInputDtoServicePointId;
2185
+ /**
2186
+ * Required alongside servicePointId.
2187
+ * @nullable
2188
+ */
2189
+ servicePointProvider?: CartDeliveryLocationInputDtoServicePointProvider;
2190
+ }
1892
2191
  /**
1893
2192
  * @nullable
1894
2193
  */
@@ -1916,8 +2215,10 @@ export type CartItemInputDtoMetadata = {
1916
2215
  export interface CartItemInputDto {
1917
2216
  /** Present = reconcile against this existing line; absent = insert a new line. Lines missing from the submitted array are removed. */
1918
2217
  cartProductId?: string;
1919
- /** Catalog string, not an FK — resolved at placement */
1920
- productReference: string;
2218
+ /** An existing product this line stands for — a CONCRETE line, materialised at placement as an order line against that product. Must belong to the cart's organization, so it requires a claimed (non-guest) cart. Omit it for an ESTIMATE line: `productReference` then carries what the customer typed, and placement snapshots the line onto the order's estimate instead of creating an order line. */
2219
+ productId?: string;
2220
+ /** Catalog string, not an FK. Required when `productId` is absent (an estimate line names its goods this way); optional alongside `productId`, where the product carries the name. */
2221
+ productReference?: string;
1921
2222
  /** @minimum 1 */
1922
2223
  quantity: number;
1923
2224
  /** @nullable */
@@ -1991,7 +2292,7 @@ export type UpdateCartDtoInsuranceId = {
1991
2292
  [key: string]: unknown;
1992
2293
  } | null;
1993
2294
  /**
1994
- * Opaque billing plan id (deferred FK)
2295
+ * Selected binding plan. Validated against the tenant's active billing.binding_plan rows — an unknown, inactive or foreign-tenant plan is rejected with 422 invalid_binding_plan. Null clears the selection.
1995
2296
  * @nullable
1996
2297
  */
1997
2298
  export type UpdateCartDtoBindingId = {
@@ -2018,7 +2319,7 @@ export type UpdateCartDtoPickup = CartLocationInputDto | null;
2018
2319
  /**
2019
2320
  * @nullable
2020
2321
  */
2021
- export type UpdateCartDtoDelivery = CartLocationInputDto | null;
2322
+ export type UpdateCartDtoDelivery = CartDeliveryLocationInputDto | null;
2022
2323
  /**
2023
2324
  * @nullable
2024
2325
  */
@@ -2041,7 +2342,7 @@ export interface UpdateCartDto {
2041
2342
  */
2042
2343
  insuranceId?: UpdateCartDtoInsuranceId;
2043
2344
  /**
2044
- * Opaque billing plan id (deferred FK)
2345
+ * Selected binding plan. Validated against the tenant's active billing.binding_plan rows — an unknown, inactive or foreign-tenant plan is rejected with 422 invalid_binding_plan. Null clears the selection.
2045
2346
  * @nullable
2046
2347
  */
2047
2348
  bindingId?: UpdateCartDtoBindingId;
@@ -2066,6 +2367,15 @@ export interface ClaimCartDto {
2066
2367
  /** Staff claim-on-behalf target organization. Org users always claim into their own organization. */
2067
2368
  organizationId?: string;
2068
2369
  }
2370
+ /**
2371
+ * Which cart component this hold is for. Omit for the legacy single-component behavior (the move itself) — a cart's leg-producing holds must be either all omitted or all explicit, never mixed.
2372
+ */
2373
+ export type HoldTimeslotDtoComponentKey = typeof HoldTimeslotDtoComponentKey[keyof typeof HoldTimeslotDtoComponentKey];
2374
+ export declare const HoldTimeslotDtoComponentKey: {
2375
+ readonly 'move:pickup': "move:pickup";
2376
+ readonly 'move:delivery': "move:delivery";
2377
+ readonly 'material:delivery': "material:delivery";
2378
+ };
2069
2379
  /**
2070
2380
  * @nullable
2071
2381
  */
@@ -2082,6 +2392,8 @@ export interface HoldTimeslotDto {
2082
2392
  expectedRevision: number;
2083
2393
  /** transport_slot id to draw capacity from */
2084
2394
  timeslotId: string;
2395
+ /** Which cart component this hold is for. Omit for the legacy single-component behavior (the move itself) — a cart's leg-producing holds must be either all omitted or all explicit, never mixed. */
2396
+ componentKey?: HoldTimeslotDtoComponentKey;
2085
2397
  /** @minimum 1 */
2086
2398
  quantityOrders?: number;
2087
2399
  /** @nullable */
@@ -7007,6 +7319,7 @@ export declare const CreateEmployeeAssignmentDtoKind: {
7007
7319
  export type CreateEmployeeAssignmentDtoRole = typeof CreateEmployeeAssignmentDtoRole[keyof typeof CreateEmployeeAssignmentDtoRole];
7008
7320
  export declare const CreateEmployeeAssignmentDtoRole: {
7009
7321
  readonly 'operations-manager': "operations-manager";
7322
+ readonly 'customer-service': "customer-service";
7010
7323
  readonly 'warehouse-admin': "warehouse-admin";
7011
7324
  readonly 'warehouse-operator': "warehouse-operator";
7012
7325
  readonly 'carrier-admin': "carrier-admin";
@@ -7078,6 +7391,7 @@ export interface EmployeeAssignmentSyncResultDto {
7078
7391
  export type UpdateEmployeeAssignmentDtoRole = typeof UpdateEmployeeAssignmentDtoRole[keyof typeof UpdateEmployeeAssignmentDtoRole];
7079
7392
  export declare const UpdateEmployeeAssignmentDtoRole: {
7080
7393
  readonly 'operations-manager': "operations-manager";
7394
+ readonly 'customer-service': "customer-service";
7081
7395
  readonly 'warehouse-admin': "warehouse-admin";
7082
7396
  readonly 'warehouse-operator': "warehouse-operator";
7083
7397
  readonly 'carrier-admin': "carrier-admin";
@@ -7097,51 +7411,1144 @@ export interface OffboardEmployeeDto {
7097
7411
  /** Free-text reason, recorded in the service log for ops follow-up. `employee_assignment` has no column for it, so it is not stored on the row or echoed back. */
7098
7412
  reason?: string;
7099
7413
  }
7100
- export type OrdersControllerListV1Params = {
7101
- /**
7102
- * Max rows to return (1–100).
7103
- * @minimum 1
7104
- * @maximum 100
7105
- */
7106
- limit?: number;
7107
- /**
7108
- * Rows to skip.
7109
- * @minimum 0
7110
- */
7111
- offset?: number;
7112
- /**
7113
- * Filter by sales_order status. Repeatable — pass ?status=A&status=B for a set; a single value is accepted too.
7114
- */
7115
- status?: string[];
7116
- type?: OrdersControllerListV1Type;
7117
- /**
7118
- * Narrow to one organization (within the caller's RLS scope).
7119
- */
7120
- organizationId?: string;
7121
- /**
7122
- * created_at lower bound, inclusive (ISO-8601).
7123
- */
7124
- fromDate?: string;
7125
- /**
7126
- * created_at upper bound, inclusive (ISO-8601).
7127
- */
7128
- toDate?: string;
7414
+ export type NotificationEventSummaryDtoDefaultCategory = typeof NotificationEventSummaryDtoDefaultCategory[keyof typeof NotificationEventSummaryDtoDefaultCategory];
7415
+ export declare const NotificationEventSummaryDtoDefaultCategory: {
7416
+ readonly marketing: "marketing";
7417
+ readonly operational: "operational";
7418
+ readonly transactional: "transactional";
7419
+ readonly billing: "billing";
7420
+ readonly security: "security";
7421
+ readonly system: "system";
7422
+ };
7423
+ export type NotificationEventSummaryDtoAvailableChannelsItem = typeof NotificationEventSummaryDtoAvailableChannelsItem[keyof typeof NotificationEventSummaryDtoAvailableChannelsItem];
7424
+ export declare const NotificationEventSummaryDtoAvailableChannelsItem: {
7425
+ readonly email: "email";
7426
+ readonly sms: "sms";
7427
+ readonly push: "push";
7428
+ readonly webhook: "webhook";
7429
+ };
7430
+ export type NotificationEventSummaryDtoLifecycleStatus = typeof NotificationEventSummaryDtoLifecycleStatus[keyof typeof NotificationEventSummaryDtoLifecycleStatus];
7431
+ export declare const NotificationEventSummaryDtoLifecycleStatus: {
7432
+ readonly active: "active";
7433
+ readonly deprecated: "deprecated";
7434
+ readonly retired: "retired";
7435
+ };
7436
+ export interface NotificationEventSummaryDto {
7437
+ eventKey: string;
7438
+ version: number;
7439
+ displayName: string;
7440
+ /** @nullable */
7441
+ description: string | null;
7442
+ defaultCategory: NotificationEventSummaryDtoDefaultCategory;
7443
+ availableChannels: NotificationEventSummaryDtoAvailableChannelsItem[];
7444
+ lifecycleStatus: NotificationEventSummaryDtoLifecycleStatus;
7445
+ /** @nullable */
7446
+ supersededByVersion: number | null;
7447
+ }
7448
+ /**
7449
+ * @nullable
7450
+ */
7451
+ export type ContractPathDtoExampleValue = {
7452
+ [key: string]: unknown;
7453
+ } | null;
7454
+ export interface ContractPathDto {
7455
+ path: string;
7456
+ type: string;
7457
+ format?: string;
7458
+ required: boolean;
7459
+ pii: boolean;
7460
+ display_label: string;
7461
+ /** @nullable */
7462
+ example_value?: ContractPathDtoExampleValue;
7463
+ }
7464
+ export type NotificationEventDtoDefaultCategory = typeof NotificationEventDtoDefaultCategory[keyof typeof NotificationEventDtoDefaultCategory];
7465
+ export declare const NotificationEventDtoDefaultCategory: {
7466
+ readonly marketing: "marketing";
7467
+ readonly operational: "operational";
7468
+ readonly transactional: "transactional";
7469
+ readonly billing: "billing";
7470
+ readonly security: "security";
7471
+ readonly system: "system";
7472
+ };
7473
+ export type NotificationEventDtoAvailableChannelsItem = typeof NotificationEventDtoAvailableChannelsItem[keyof typeof NotificationEventDtoAvailableChannelsItem];
7474
+ export declare const NotificationEventDtoAvailableChannelsItem: {
7475
+ readonly email: "email";
7476
+ readonly sms: "sms";
7477
+ readonly push: "push";
7478
+ readonly webhook: "webhook";
7479
+ };
7480
+ export type NotificationEventDtoLifecycleStatus = typeof NotificationEventDtoLifecycleStatus[keyof typeof NotificationEventDtoLifecycleStatus];
7481
+ export declare const NotificationEventDtoLifecycleStatus: {
7482
+ readonly active: "active";
7483
+ readonly deprecated: "deprecated";
7484
+ readonly retired: "retired";
7129
7485
  };
7130
- export type OrdersControllerListV1Type = typeof OrdersControllerListV1Type[keyof typeof OrdersControllerListV1Type];
7131
- export declare const OrdersControllerListV1Type: {
7132
- readonly PICKUP: "PICKUP";
7133
- readonly DELIVERY: "DELIVERY";
7134
- readonly MOVE: "MOVE";
7135
- readonly DROP_OFF: "DROP_OFF";
7136
- readonly TRANSFER: "TRANSFER";
7137
- readonly PICKING: "PICKING";
7138
- readonly MERCHANDISE_SALE: "MERCHANDISE_SALE";
7486
+ /**
7487
+ * JSON Schema (draft 2020-12) for the event payload.
7488
+ */
7489
+ export type NotificationEventDtoContract = {
7490
+ [key: string]: unknown;
7139
7491
  };
7140
- export type OrderGroupsControllerListV1Params = {
7141
- /**
7142
- * Max rows to return (1–100).
7143
- * @minimum 1
7144
- * @maximum 100
7492
+ export interface NotificationEventDto {
7493
+ eventKey: string;
7494
+ version: number;
7495
+ displayName: string;
7496
+ /** @nullable */
7497
+ description: string | null;
7498
+ defaultCategory: NotificationEventDtoDefaultCategory;
7499
+ availableChannels: NotificationEventDtoAvailableChannelsItem[];
7500
+ lifecycleStatus: NotificationEventDtoLifecycleStatus;
7501
+ /** @nullable */
7502
+ supersededByVersion: number | null;
7503
+ /** JSON Schema (draft 2020-12) for the event payload. */
7504
+ contract: NotificationEventDtoContract;
7505
+ contractPaths: ContractPathDto[];
7506
+ createdAt: string;
7507
+ updatedAt: string;
7508
+ }
7509
+ export type RecipientSpecDtoKind = typeof RecipientSpecDtoKind[keyof typeof RecipientSpecDtoKind];
7510
+ export declare const RecipientSpecDtoKind: {
7511
+ readonly event_field: "event_field";
7512
+ readonly org_contact_role: "org_contact_role";
7513
+ readonly tenant_role: "tenant_role";
7514
+ readonly static_email: "static_email";
7515
+ readonly static_phone: "static_phone";
7516
+ };
7517
+ /**
7518
+ * Delivery slot. `cc`/`bcc` are email-only.
7519
+ */
7520
+ export type RecipientSpecDtoDelivery = typeof RecipientSpecDtoDelivery[keyof typeof RecipientSpecDtoDelivery];
7521
+ export declare const RecipientSpecDtoDelivery: {
7522
+ readonly to: "to";
7523
+ readonly cc: "cc";
7524
+ readonly bcc: "bcc";
7525
+ };
7526
+ export interface RecipientSpecDto {
7527
+ kind: RecipientSpecDtoKind;
7528
+ /** Contract path for `event_field` specs — must exist in the event's contractPaths. */
7529
+ path?: string;
7530
+ /** Role for `org_contact_role` / `tenant_role` specs. */
7531
+ role?: string;
7532
+ /** Literal address for `static_email` / `static_phone`. */
7533
+ value?: string;
7534
+ /** Delivery slot. `cc`/`bcc` are email-only. */
7535
+ delivery?: RecipientSpecDtoDelivery;
7536
+ }
7537
+ export type NotificationRuleDtoChannel = typeof NotificationRuleDtoChannel[keyof typeof NotificationRuleDtoChannel];
7538
+ export declare const NotificationRuleDtoChannel: {
7539
+ readonly email: "email";
7540
+ readonly sms: "sms";
7541
+ readonly push: "push";
7542
+ readonly webhook: "webhook";
7543
+ };
7544
+ export type NotificationRuleDtoCategory = typeof NotificationRuleDtoCategory[keyof typeof NotificationRuleDtoCategory];
7545
+ export declare const NotificationRuleDtoCategory: {
7546
+ readonly marketing: "marketing";
7547
+ readonly operational: "operational";
7548
+ readonly transactional: "transactional";
7549
+ readonly billing: "billing";
7550
+ readonly security: "security";
7551
+ readonly system: "system";
7552
+ };
7553
+ export interface NotificationRuleDto {
7554
+ tenantNotificationRuleId: string;
7555
+ eventKey: string;
7556
+ eventVersion: number;
7557
+ channel: NotificationRuleDtoChannel;
7558
+ category: NotificationRuleDtoCategory;
7559
+ isEnabled: boolean;
7560
+ /** @nullable */
7561
+ notificationTemplateId: string | null;
7562
+ recipients: RecipientSpecDto[];
7563
+ createdAt: string;
7564
+ updatedAt: string;
7565
+ }
7566
+ export type CreateNotificationRuleDtoChannel = typeof CreateNotificationRuleDtoChannel[keyof typeof CreateNotificationRuleDtoChannel];
7567
+ export declare const CreateNotificationRuleDtoChannel: {
7568
+ readonly email: "email";
7569
+ readonly sms: "sms";
7570
+ readonly push: "push";
7571
+ readonly webhook: "webhook";
7572
+ };
7573
+ /**
7574
+ * Defaults to the event's category. Only operational ↔ transactional relabelling is permitted (02 §3).
7575
+ */
7576
+ export type CreateNotificationRuleDtoCategory = typeof CreateNotificationRuleDtoCategory[keyof typeof CreateNotificationRuleDtoCategory];
7577
+ export declare const CreateNotificationRuleDtoCategory: {
7578
+ readonly marketing: "marketing";
7579
+ readonly operational: "operational";
7580
+ readonly transactional: "transactional";
7581
+ readonly billing: "billing";
7582
+ readonly security: "security";
7583
+ readonly system: "system";
7584
+ };
7585
+ /**
7586
+ * NULL falls back to the platform system template for (event, channel, locale).
7587
+ */
7588
+ export type CreateNotificationRuleDtoNotificationTemplateId = {
7589
+ [key: string]: unknown;
7590
+ };
7591
+ export interface CreateNotificationRuleDto {
7592
+ /** Must exist in the event catalog and not be retired. */
7593
+ eventKey: string;
7594
+ /** The contract version to pin to. Defaults to the event's active version — the rule stays on it until an explicit migration. */
7595
+ eventVersion?: number;
7596
+ channel: CreateNotificationRuleDtoChannel;
7597
+ /** Defaults to the event's category. Only operational ↔ transactional relabelling is permitted (02 §3). */
7598
+ category?: CreateNotificationRuleDtoCategory;
7599
+ /** NULL falls back to the platform system template for (event, channel, locale). */
7600
+ notificationTemplateId?: CreateNotificationRuleDtoNotificationTemplateId;
7601
+ /** Validated against the pinned version's contractPaths at save (02 §5). */
7602
+ recipients: RecipientSpecDto[];
7603
+ }
7604
+ export type UpdateNotificationRuleDtoCategory = typeof UpdateNotificationRuleDtoCategory[keyof typeof UpdateNotificationRuleDtoCategory];
7605
+ export declare const UpdateNotificationRuleDtoCategory: {
7606
+ readonly marketing: "marketing";
7607
+ readonly operational: "operational";
7608
+ readonly transactional: "transactional";
7609
+ readonly billing: "billing";
7610
+ readonly security: "security";
7611
+ readonly system: "system";
7612
+ };
7613
+ export interface UpdateNotificationRuleDto {
7614
+ /** Migrate the rule to another contract version. Rejected (`event_version_migration_invalid`) when a recipient path or a template variable does not exist there. */
7615
+ eventVersion?: number;
7616
+ category?: UpdateNotificationRuleDtoCategory;
7617
+ /** @nullable */
7618
+ notificationTemplateId?: string | null;
7619
+ recipients?: RecipientSpecDto[];
7620
+ }
7621
+ export interface EnableRuleDto {
7622
+ /** The estimate shown in the confirmation panel (from `GET …/recipient-estimate`). */
7623
+ confirmedRecipientEstimate: number;
7624
+ /** Required above the typed-confirmation threshold: the tenant slug, typed by the admin. */
7625
+ typedConfirmation?: string;
7626
+ }
7627
+ export type RecipientSpecEstimateDtoKind = typeof RecipientSpecEstimateDtoKind[keyof typeof RecipientSpecEstimateDtoKind];
7628
+ export declare const RecipientSpecEstimateDtoKind: {
7629
+ readonly event_field: "event_field";
7630
+ readonly org_contact_role: "org_contact_role";
7631
+ readonly tenant_role: "tenant_role";
7632
+ readonly static_email: "static_email";
7633
+ readonly static_phone: "static_phone";
7634
+ };
7635
+ export interface RecipientSpecEstimateDto {
7636
+ /** Index into the rule's recipients array. */
7637
+ specIndex: number;
7638
+ kind: RecipientSpecEstimateDtoKind;
7639
+ /** Addresses this spec resolves to per event. */
7640
+ estimate: number;
7641
+ }
7642
+ export type RecipientEstimateDtoBasis = typeof RecipientEstimateDtoBasis[keyof typeof RecipientEstimateDtoBasis];
7643
+ export declare const RecipientEstimateDtoBasis: {
7644
+ readonly recent_events: "recent_events";
7645
+ readonly preview_data: "preview_data";
7646
+ };
7647
+ export interface RecipientEstimateDto {
7648
+ /** Addresses one firing of this event would reach. */
7649
+ estimate: number;
7650
+ /** How many sample events the estimate averaged over. */
7651
+ sampleSize: number;
7652
+ basis: RecipientEstimateDtoBasis;
7653
+ perSpec: RecipientSpecEstimateDto[];
7654
+ }
7655
+ export type NotificationTemplateDtoChannel = typeof NotificationTemplateDtoChannel[keyof typeof NotificationTemplateDtoChannel];
7656
+ export declare const NotificationTemplateDtoChannel: {
7657
+ readonly email: "email";
7658
+ readonly sms: "sms";
7659
+ readonly push: "push";
7660
+ readonly webhook: "webhook";
7661
+ };
7662
+ export type NotificationTemplateDtoEngine = typeof NotificationTemplateDtoEngine[keyof typeof NotificationTemplateDtoEngine];
7663
+ export declare const NotificationTemplateDtoEngine: {
7664
+ readonly handlebars: "handlebars";
7665
+ readonly mjml: "mjml";
7666
+ readonly react_email: "react_email";
7667
+ readonly plain_text: "plain_text";
7668
+ };
7669
+ export interface NotificationTemplateDto {
7670
+ notificationTemplateId: string;
7671
+ /** @nullable */
7672
+ organizationId: string | null;
7673
+ channel: NotificationTemplateDtoChannel;
7674
+ eventKey: string;
7675
+ locale: string;
7676
+ name: string;
7677
+ engine: NotificationTemplateDtoEngine;
7678
+ isSystem: boolean;
7679
+ /** @nullable */
7680
+ publishedVersionId: string | null;
7681
+ createdAt: string;
7682
+ updatedAt: string;
7683
+ }
7684
+ export interface PaginatedNotificationTemplatesDto {
7685
+ /** The page of rows. */
7686
+ items: NotificationTemplateDto[];
7687
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
7688
+ total: number;
7689
+ /** Effective max rows applied (after defaults/clamp). */
7690
+ limit: number;
7691
+ /** Effective rows skipped applied. */
7692
+ offset: number;
7693
+ }
7694
+ export type CreateNotificationTemplateDtoChannel = typeof CreateNotificationTemplateDtoChannel[keyof typeof CreateNotificationTemplateDtoChannel];
7695
+ export declare const CreateNotificationTemplateDtoChannel: {
7696
+ readonly email: "email";
7697
+ readonly sms: "sms";
7698
+ readonly push: "push";
7699
+ readonly webhook: "webhook";
7700
+ };
7701
+ export interface CreateNotificationTemplateDto {
7702
+ eventKey: string;
7703
+ channel: CreateNotificationTemplateDtoChannel;
7704
+ locale?: string;
7705
+ name: string;
7706
+ /** NULL = the tenant default; set = that organization's override. */
7707
+ organizationId?: string;
7708
+ /** Clone this template's published content into the first draft — the Customize action on a system template, and the tenant-default → org-override path. */
7709
+ sourceTemplateId?: string;
7710
+ }
7711
+ export type TemplateVersionSummaryDtoLifecycleStatus = typeof TemplateVersionSummaryDtoLifecycleStatus[keyof typeof TemplateVersionSummaryDtoLifecycleStatus];
7712
+ export declare const TemplateVersionSummaryDtoLifecycleStatus: {
7713
+ readonly draft: "draft";
7714
+ readonly published: "published";
7715
+ readonly archived: "archived";
7716
+ };
7717
+ export interface TemplateVersionSummaryDto {
7718
+ notificationTemplateVersionId: string;
7719
+ notificationTemplateId: string;
7720
+ version: number;
7721
+ lifecycleStatus: TemplateVersionSummaryDtoLifecycleStatus;
7722
+ eventVersion: number;
7723
+ createdAt: string;
7724
+ /** @nullable */
7725
+ publishedAt: string | null;
7726
+ /** @nullable */
7727
+ archivedAt: string | null;
7728
+ }
7729
+ export type NotificationTemplateDetailDtoChannel = typeof NotificationTemplateDetailDtoChannel[keyof typeof NotificationTemplateDetailDtoChannel];
7730
+ export declare const NotificationTemplateDetailDtoChannel: {
7731
+ readonly email: "email";
7732
+ readonly sms: "sms";
7733
+ readonly push: "push";
7734
+ readonly webhook: "webhook";
7735
+ };
7736
+ export type NotificationTemplateDetailDtoEngine = typeof NotificationTemplateDetailDtoEngine[keyof typeof NotificationTemplateDetailDtoEngine];
7737
+ export declare const NotificationTemplateDetailDtoEngine: {
7738
+ readonly handlebars: "handlebars";
7739
+ readonly mjml: "mjml";
7740
+ readonly react_email: "react_email";
7741
+ readonly plain_text: "plain_text";
7742
+ };
7743
+ export interface NotificationTemplateDetailDto {
7744
+ notificationTemplateId: string;
7745
+ /** @nullable */
7746
+ organizationId: string | null;
7747
+ channel: NotificationTemplateDetailDtoChannel;
7748
+ eventKey: string;
7749
+ locale: string;
7750
+ name: string;
7751
+ engine: NotificationTemplateDetailDtoEngine;
7752
+ isSystem: boolean;
7753
+ /** @nullable */
7754
+ publishedVersionId: string | null;
7755
+ createdAt: string;
7756
+ updatedAt: string;
7757
+ versions: TemplateVersionSummaryDto[];
7758
+ }
7759
+ export interface UpdateNotificationTemplateDto {
7760
+ /** The only mutable field: event, channel, locale and organization are the template's identity. */
7761
+ name: string;
7762
+ }
7763
+ export interface CreateTemplateVersionDto {
7764
+ /** Start from this version's content. Cloning an ARCHIVED version is the rollback-with-edits path; the archived row itself is never mutated. */
7765
+ cloneFromVersionId?: string;
7766
+ /** The contract version to author against. Defaults to the cloned version's, else the event's active version. */
7767
+ eventVersion?: number;
7768
+ }
7769
+ export type TemplateVersionDtoLifecycleStatus = typeof TemplateVersionDtoLifecycleStatus[keyof typeof TemplateVersionDtoLifecycleStatus];
7770
+ export declare const TemplateVersionDtoLifecycleStatus: {
7771
+ readonly draft: "draft";
7772
+ readonly published: "published";
7773
+ readonly archived: "archived";
7774
+ };
7775
+ /**
7776
+ * @nullable
7777
+ */
7778
+ export type TemplateVersionDtoPreviewData = {
7779
+ [key: string]: unknown;
7780
+ } | null;
7781
+ export interface TemplateVersionDto {
7782
+ notificationTemplateVersionId: string;
7783
+ notificationTemplateId: string;
7784
+ version: number;
7785
+ lifecycleStatus: TemplateVersionDtoLifecycleStatus;
7786
+ eventVersion: number;
7787
+ createdAt: string;
7788
+ /** @nullable */
7789
+ publishedAt: string | null;
7790
+ /** @nullable */
7791
+ archivedAt: string | null;
7792
+ /** @nullable */
7793
+ subject: string | null;
7794
+ /** @nullable */
7795
+ preheader: string | null;
7796
+ /** @nullable */
7797
+ bodyHtml: string | null;
7798
+ /** @nullable */
7799
+ bodyText: string | null;
7800
+ referencedVariables: string[];
7801
+ /** @nullable */
7802
+ previewData: TemplateVersionDtoPreviewData;
7803
+ /** @nullable */
7804
+ fromAddress: string | null;
7805
+ /** @nullable */
7806
+ replyTo: string | null;
7807
+ }
7808
+ /**
7809
+ * Sample payload for preview and test-send — contract-validated against eventVersion.
7810
+ */
7811
+ export type UpdateTemplateVersionDtoPreviewData = {
7812
+ [key: string]: unknown;
7813
+ };
7814
+ export interface UpdateTemplateVersionDto {
7815
+ /**
7816
+ * @maxLength 500
7817
+ * @nullable
7818
+ */
7819
+ subject?: string | null;
7820
+ /** @nullable */
7821
+ preheader?: string | null;
7822
+ /**
7823
+ * Raw HTML — requires the `template:author_html` capability (04 §5.1).
7824
+ * @nullable
7825
+ */
7826
+ bodyHtml?: string | null;
7827
+ /**
7828
+ * The plain-text alternative for email; THE message for SMS.
7829
+ * @nullable
7830
+ */
7831
+ bodyText?: string | null;
7832
+ /** @nullable */
7833
+ fromAddress?: string | null;
7834
+ /** @nullable */
7835
+ replyTo?: string | null;
7836
+ /** Sample payload for preview and test-send — contract-validated against eventVersion. */
7837
+ previewData?: UpdateTemplateVersionDtoPreviewData;
7838
+ /** Re-target the draft at another contract version. */
7839
+ eventVersion?: number;
7840
+ }
7841
+ /**
7842
+ * Defaults to the version's previewData; a supplied payload is contract-validated first.
7843
+ */
7844
+ export type PreviewTemplateVersionDtoPayload = {
7845
+ [key: string]: unknown;
7846
+ };
7847
+ export interface PreviewTemplateVersionDto {
7848
+ /** Defaults to the version's previewData; a supplied payload is contract-validated first. */
7849
+ payload?: PreviewTemplateVersionDtoPayload;
7850
+ }
7851
+ export type SanitizationWarningDtoKind = typeof SanitizationWarningDtoKind[keyof typeof SanitizationWarningDtoKind];
7852
+ export declare const SanitizationWarningDtoKind: {
7853
+ readonly stripped_tag: "stripped_tag";
7854
+ readonly stripped_attribute: "stripped_attribute";
7855
+ readonly stripped_style: "stripped_style";
7856
+ };
7857
+ export interface SanitizationWarningDto {
7858
+ kind: SanitizationWarningDtoKind;
7859
+ detail: string;
7860
+ }
7861
+ export interface TemplatePreviewDto {
7862
+ subject: string;
7863
+ html: string;
7864
+ text: string;
7865
+ /** SMS only: the segment count for this render. */
7866
+ smsSegments?: number;
7867
+ sanitizationWarnings: SanitizationWarningDto[];
7868
+ links: string[];
7869
+ /** Engine errors. A non-empty list means the version cannot render this payload. */
7870
+ renderErrors: string[];
7871
+ }
7872
+ /**
7873
+ * Defaults to the version's previewData.
7874
+ */
7875
+ export type TestSendDtoPayload = {
7876
+ [key: string]: unknown;
7877
+ };
7878
+ export interface TestSendDto {
7879
+ /** Format-validated per channel. */
7880
+ to: string;
7881
+ /** Defaults to the version's previewData. */
7882
+ payload?: TestSendDtoPayload;
7883
+ }
7884
+ /**
7885
+ * `suppressed` when the address carries an active suppression: the row is written terminal, not sent. A test cannot punch through a hard block.
7886
+ */
7887
+ export type TestSendResultDtoGateOutcome = typeof TestSendResultDtoGateOutcome[keyof typeof TestSendResultDtoGateOutcome];
7888
+ export declare const TestSendResultDtoGateOutcome: {
7889
+ readonly queued: "queued";
7890
+ readonly suppressed: "suppressed";
7891
+ };
7892
+ export interface TestSendResultDto {
7893
+ notificationDispatchId: string;
7894
+ /** `suppressed` when the address carries an active suppression: the row is written terminal, not sent. A test cannot punch through a hard block. */
7895
+ gateOutcome: TestSendResultDtoGateOutcome;
7896
+ }
7897
+ export interface PublishFailureDto {
7898
+ /** The 02 §4.2 check that failed. */
7899
+ gate: string;
7900
+ detail: string;
7901
+ /** The content field the failure is in. */
7902
+ field?: string;
7903
+ }
7904
+ export type PublishedTemplateVersionDtoLifecycleStatus = typeof PublishedTemplateVersionDtoLifecycleStatus[keyof typeof PublishedTemplateVersionDtoLifecycleStatus];
7905
+ export declare const PublishedTemplateVersionDtoLifecycleStatus: {
7906
+ readonly draft: "draft";
7907
+ readonly published: "published";
7908
+ readonly archived: "archived";
7909
+ };
7910
+ /**
7911
+ * @nullable
7912
+ */
7913
+ export type PublishedTemplateVersionDtoPreviewData = {
7914
+ [key: string]: unknown;
7915
+ } | null;
7916
+ export interface PublishedTemplateVersionDto {
7917
+ notificationTemplateVersionId: string;
7918
+ notificationTemplateId: string;
7919
+ version: number;
7920
+ lifecycleStatus: PublishedTemplateVersionDtoLifecycleStatus;
7921
+ eventVersion: number;
7922
+ createdAt: string;
7923
+ /** @nullable */
7924
+ publishedAt: string | null;
7925
+ /** @nullable */
7926
+ archivedAt: string | null;
7927
+ /** @nullable */
7928
+ subject: string | null;
7929
+ /** @nullable */
7930
+ preheader: string | null;
7931
+ /** @nullable */
7932
+ bodyHtml: string | null;
7933
+ /** @nullable */
7934
+ bodyText: string | null;
7935
+ referencedVariables: string[];
7936
+ /** @nullable */
7937
+ previewData: PublishedTemplateVersionDtoPreviewData;
7938
+ /** @nullable */
7939
+ fromAddress: string | null;
7940
+ /** @nullable */
7941
+ replyTo: string | null;
7942
+ warnings: PublishFailureDto[];
7943
+ }
7944
+ export type PreferenceDtoCategory = typeof PreferenceDtoCategory[keyof typeof PreferenceDtoCategory];
7945
+ export declare const PreferenceDtoCategory: {
7946
+ readonly marketing: "marketing";
7947
+ readonly operational: "operational";
7948
+ readonly transactional: "transactional";
7949
+ readonly billing: "billing";
7950
+ readonly security: "security";
7951
+ readonly system: "system";
7952
+ };
7953
+ /**
7954
+ * @nullable
7955
+ */
7956
+ export type PreferenceDtoChannel = typeof PreferenceDtoChannel[keyof typeof PreferenceDtoChannel] | null;
7957
+ export declare const PreferenceDtoChannel: {
7958
+ readonly email: "email";
7959
+ readonly sms: "sms";
7960
+ readonly push: "push";
7961
+ readonly webhook: "webhook";
7962
+ };
7963
+ export interface PreferenceDto {
7964
+ notificationPreferenceId: string;
7965
+ /** @nullable */
7966
+ userSub: string | null;
7967
+ /** @nullable */
7968
+ contactAddress: string | null;
7969
+ category: PreferenceDtoCategory;
7970
+ /** @nullable */
7971
+ channel: PreferenceDtoChannel;
7972
+ isEnabled: boolean;
7973
+ source: string;
7974
+ updatedAt: string;
7975
+ }
7976
+ export type AddressVerdictDtoCategory = typeof AddressVerdictDtoCategory[keyof typeof AddressVerdictDtoCategory];
7977
+ export declare const AddressVerdictDtoCategory: {
7978
+ readonly marketing: "marketing";
7979
+ readonly operational: "operational";
7980
+ readonly transactional: "transactional";
7981
+ readonly billing: "billing";
7982
+ readonly security: "security";
7983
+ readonly system: "system";
7984
+ };
7985
+ export type AddressVerdictDtoChannel = typeof AddressVerdictDtoChannel[keyof typeof AddressVerdictDtoChannel];
7986
+ export declare const AddressVerdictDtoChannel: {
7987
+ readonly email: "email";
7988
+ readonly sms: "sms";
7989
+ readonly push: "push";
7990
+ readonly webhook: "webhook";
7991
+ };
7992
+ /**
7993
+ * @nullable
7994
+ */
7995
+ export type AddressVerdictDtoBlockedBy = typeof AddressVerdictDtoBlockedBy[keyof typeof AddressVerdictDtoBlockedBy] | null;
7996
+ export declare const AddressVerdictDtoBlockedBy: {
7997
+ readonly suppression: "suppression";
7998
+ readonly preference: "preference";
7999
+ };
8000
+ export type AddressVerdictDtoMatrixRule = typeof AddressVerdictDtoMatrixRule[keyof typeof AddressVerdictDtoMatrixRule];
8001
+ export declare const AddressVerdictDtoMatrixRule: {
8002
+ readonly hard_bounce_always_wins: "hard_bounce_always_wins";
8003
+ readonly complaint_always_wins: "complaint_always_wins";
8004
+ readonly sms_stop_legal_hard_block: "sms_stop_legal_hard_block";
8005
+ readonly manual_suppression: "manual_suppression";
8006
+ readonly provider_suppression: "provider_suppression";
8007
+ readonly preference_opt_out: "preference_opt_out";
8008
+ readonly billing_category_opt_out_ignored: "billing_category_opt_out_ignored";
8009
+ readonly category_not_preference_suppressible: "category_not_preference_suppressible";
8010
+ readonly no_block: "no_block";
8011
+ };
8012
+ export interface AddressVerdictDto {
8013
+ category: AddressVerdictDtoCategory;
8014
+ channel: AddressVerdictDtoChannel;
8015
+ wouldSend: boolean;
8016
+ /** @nullable */
8017
+ blockedBy: AddressVerdictDtoBlockedBy;
8018
+ matrixRule: AddressVerdictDtoMatrixRule;
8019
+ /** @nullable */
8020
+ recordId: string | null;
8021
+ }
8022
+ export interface AddressInspectionDto {
8023
+ address: string;
8024
+ verdicts: AddressVerdictDto[];
8025
+ }
8026
+ export type SuppressionDtoChannel = typeof SuppressionDtoChannel[keyof typeof SuppressionDtoChannel];
8027
+ export declare const SuppressionDtoChannel: {
8028
+ readonly email: "email";
8029
+ readonly sms: "sms";
8030
+ readonly push: "push";
8031
+ readonly webhook: "webhook";
8032
+ };
8033
+ export type SuppressionDtoReason = typeof SuppressionDtoReason[keyof typeof SuppressionDtoReason];
8034
+ export declare const SuppressionDtoReason: {
8035
+ readonly hard_bounce: "hard_bounce";
8036
+ readonly complaint: "complaint";
8037
+ readonly sms_stop: "sms_stop";
8038
+ readonly manual: "manual";
8039
+ readonly provider_suppression: "provider_suppression";
8040
+ };
8041
+ /**
8042
+ * @nullable
8043
+ */
8044
+ export type SuppressionDtoSourceProvider = typeof SuppressionDtoSourceProvider[keyof typeof SuppressionDtoSourceProvider] | null;
8045
+ export declare const SuppressionDtoSourceProvider: {
8046
+ readonly ses: "ses";
8047
+ readonly aws_eum_sms: "aws_eum_sms";
8048
+ readonly apns: "apns";
8049
+ readonly fcm: "fcm";
8050
+ };
8051
+ export interface SuppressionDto {
8052
+ suppressionId: string;
8053
+ channel: SuppressionDtoChannel;
8054
+ address: string;
8055
+ reason: SuppressionDtoReason;
8056
+ /** @nullable */
8057
+ sourceProvider: SuppressionDtoSourceProvider;
8058
+ createdAt: string;
8059
+ /** @nullable */
8060
+ expiresAt: string | null;
8061
+ /** @nullable */
8062
+ releasedAt: string | null;
8063
+ /** @nullable */
8064
+ releasedByUserSub: string | null;
8065
+ }
8066
+ export interface PaginatedSuppressionsDto {
8067
+ /** The page of rows. */
8068
+ items: SuppressionDto[];
8069
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
8070
+ total: number;
8071
+ /** Effective max rows applied (after defaults/clamp). */
8072
+ limit: number;
8073
+ /** Effective rows skipped applied. */
8074
+ offset: number;
8075
+ }
8076
+ export type NotificationDispatchDtoChannel = typeof NotificationDispatchDtoChannel[keyof typeof NotificationDispatchDtoChannel];
8077
+ export declare const NotificationDispatchDtoChannel: {
8078
+ readonly email: "email";
8079
+ readonly sms: "sms";
8080
+ readonly push: "push";
8081
+ readonly webhook: "webhook";
8082
+ };
8083
+ export type NotificationDispatchDtoCategory = typeof NotificationDispatchDtoCategory[keyof typeof NotificationDispatchDtoCategory];
8084
+ export declare const NotificationDispatchDtoCategory: {
8085
+ readonly marketing: "marketing";
8086
+ readonly operational: "operational";
8087
+ readonly transactional: "transactional";
8088
+ readonly billing: "billing";
8089
+ readonly security: "security";
8090
+ readonly system: "system";
8091
+ };
8092
+ /**
8093
+ * @nullable
8094
+ */
8095
+ export type NotificationDispatchDtoProvider = typeof NotificationDispatchDtoProvider[keyof typeof NotificationDispatchDtoProvider] | null;
8096
+ export declare const NotificationDispatchDtoProvider: {
8097
+ readonly ses: "ses";
8098
+ readonly aws_eum_sms: "aws_eum_sms";
8099
+ readonly apns: "apns";
8100
+ readonly fcm: "fcm";
8101
+ };
8102
+ export type NotificationDispatchDtoRecipientKind = typeof NotificationDispatchDtoRecipientKind[keyof typeof NotificationDispatchDtoRecipientKind];
8103
+ export declare const NotificationDispatchDtoRecipientKind: {
8104
+ readonly event_field: "event_field";
8105
+ readonly org_contact_role: "org_contact_role";
8106
+ readonly tenant_role: "tenant_role";
8107
+ readonly static_email: "static_email";
8108
+ readonly static_phone: "static_phone";
8109
+ };
8110
+ export type NotificationDispatchDtoStatus = typeof NotificationDispatchDtoStatus[keyof typeof NotificationDispatchDtoStatus];
8111
+ export declare const NotificationDispatchDtoStatus: {
8112
+ readonly queued: "queued";
8113
+ readonly rendering: "rendering";
8114
+ readonly render_failed: "render_failed";
8115
+ readonly suppressed: "suppressed";
8116
+ readonly skipped_opt_out: "skipped_opt_out";
8117
+ readonly skipped_disabled: "skipped_disabled";
8118
+ readonly skipped_cost_capped: "skipped_cost_capped";
8119
+ readonly sent: "sent";
8120
+ readonly delivered: "delivered";
8121
+ readonly opened: "opened";
8122
+ readonly clicked: "clicked";
8123
+ readonly soft_bounced: "soft_bounced";
8124
+ readonly hard_bounced: "hard_bounced";
8125
+ readonly complaint: "complaint";
8126
+ readonly failed: "failed";
8127
+ readonly dead_lettered: "dead_lettered";
8128
+ readonly permanently_failed: "permanently_failed";
8129
+ };
8130
+ export interface NotificationDispatchDto {
8131
+ notificationDispatchId: string;
8132
+ /** @nullable */
8133
+ organizationId: string | null;
8134
+ /** @nullable */
8135
+ notificationRequestId: string | null;
8136
+ /** @nullable */
8137
+ tenantNotificationRuleId: string | null;
8138
+ /** @nullable */
8139
+ notificationTemplateVersionId: string | null;
8140
+ channel: NotificationDispatchDtoChannel;
8141
+ category: NotificationDispatchDtoCategory;
8142
+ /** @nullable */
8143
+ provider: NotificationDispatchDtoProvider;
8144
+ /** @nullable */
8145
+ providerMessageId: string | null;
8146
+ recipientKind: NotificationDispatchDtoRecipientKind;
8147
+ recipientAddress: string;
8148
+ /** @nullable */
8149
+ recipientName: string | null;
8150
+ /**
8151
+ * to | cc | bcc
8152
+ * @nullable
8153
+ */
8154
+ recipientRole: string | null;
8155
+ /** @nullable */
8156
+ fromAddress: string | null;
8157
+ /** @nullable */
8158
+ subject: string | null;
8159
+ /** @nullable */
8160
+ locale: string | null;
8161
+ status: NotificationDispatchDtoStatus;
8162
+ isTest: boolean;
8163
+ attemptCount: number;
8164
+ /** @nullable */
8165
+ errorMessage: string | null;
8166
+ queuedAt: string;
8167
+ /** @nullable */
8168
+ sentAt: string | null;
8169
+ /** @nullable */
8170
+ deliveredAt: string | null;
8171
+ /** @nullable */
8172
+ failedAt: string | null;
8173
+ createdAt: string;
8174
+ }
8175
+ export interface PaginatedNotificationDispatchesDto {
8176
+ /** The page of rows. */
8177
+ items: NotificationDispatchDto[];
8178
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
8179
+ total: number;
8180
+ /** Effective max rows applied (after defaults/clamp). */
8181
+ limit: number;
8182
+ /** Effective rows skipped applied. */
8183
+ offset: number;
8184
+ }
8185
+ export type ResolutionReasonDtoKind = typeof ResolutionReasonDtoKind[keyof typeof ResolutionReasonDtoKind];
8186
+ export declare const ResolutionReasonDtoKind: {
8187
+ readonly event_field: "event_field";
8188
+ readonly org_contact_role: "org_contact_role";
8189
+ readonly tenant_role: "tenant_role";
8190
+ readonly static_email: "static_email";
8191
+ readonly static_phone: "static_phone";
8192
+ };
8193
+ export interface ResolutionReasonDto {
8194
+ rule_id?: string;
8195
+ spec_index?: number;
8196
+ kind?: ResolutionReasonDtoKind;
8197
+ role?: string;
8198
+ path?: string;
8199
+ /** The source row the address came from. */
8200
+ source_id?: string;
8201
+ }
8202
+ export type DeliveryEventDtoProvider = typeof DeliveryEventDtoProvider[keyof typeof DeliveryEventDtoProvider];
8203
+ export declare const DeliveryEventDtoProvider: {
8204
+ readonly ses: "ses";
8205
+ readonly aws_eum_sms: "aws_eum_sms";
8206
+ readonly apns: "apns";
8207
+ readonly fcm: "fcm";
8208
+ };
8209
+ /**
8210
+ * @nullable
8211
+ */
8212
+ export type DeliveryEventDtoEventData = {
8213
+ [key: string]: unknown;
8214
+ } | null;
8215
+ export interface DeliveryEventDto {
8216
+ deliveryEventId: string;
8217
+ provider: DeliveryEventDtoProvider;
8218
+ /** @nullable */
8219
+ providerMessageId: string | null;
8220
+ /** delivered | bounce | complaint | open | click | sms_delivered | sms_failed */
8221
+ eventType: string;
8222
+ /** @nullable */
8223
+ eventData: DeliveryEventDtoEventData;
8224
+ eventAt: string;
8225
+ receivedAt: string;
8226
+ }
8227
+ export type NotificationDispatchDetailDtoChannel = typeof NotificationDispatchDetailDtoChannel[keyof typeof NotificationDispatchDetailDtoChannel];
8228
+ export declare const NotificationDispatchDetailDtoChannel: {
8229
+ readonly email: "email";
8230
+ readonly sms: "sms";
8231
+ readonly push: "push";
8232
+ readonly webhook: "webhook";
8233
+ };
8234
+ export type NotificationDispatchDetailDtoCategory = typeof NotificationDispatchDetailDtoCategory[keyof typeof NotificationDispatchDetailDtoCategory];
8235
+ export declare const NotificationDispatchDetailDtoCategory: {
8236
+ readonly marketing: "marketing";
8237
+ readonly operational: "operational";
8238
+ readonly transactional: "transactional";
8239
+ readonly billing: "billing";
8240
+ readonly security: "security";
8241
+ readonly system: "system";
8242
+ };
8243
+ /**
8244
+ * @nullable
8245
+ */
8246
+ export type NotificationDispatchDetailDtoProvider = typeof NotificationDispatchDetailDtoProvider[keyof typeof NotificationDispatchDetailDtoProvider] | null;
8247
+ export declare const NotificationDispatchDetailDtoProvider: {
8248
+ readonly ses: "ses";
8249
+ readonly aws_eum_sms: "aws_eum_sms";
8250
+ readonly apns: "apns";
8251
+ readonly fcm: "fcm";
8252
+ };
8253
+ export type NotificationDispatchDetailDtoRecipientKind = typeof NotificationDispatchDetailDtoRecipientKind[keyof typeof NotificationDispatchDetailDtoRecipientKind];
8254
+ export declare const NotificationDispatchDetailDtoRecipientKind: {
8255
+ readonly event_field: "event_field";
8256
+ readonly org_contact_role: "org_contact_role";
8257
+ readonly tenant_role: "tenant_role";
8258
+ readonly static_email: "static_email";
8259
+ readonly static_phone: "static_phone";
8260
+ };
8261
+ export type NotificationDispatchDetailDtoStatus = typeof NotificationDispatchDetailDtoStatus[keyof typeof NotificationDispatchDetailDtoStatus];
8262
+ export declare const NotificationDispatchDetailDtoStatus: {
8263
+ readonly queued: "queued";
8264
+ readonly rendering: "rendering";
8265
+ readonly render_failed: "render_failed";
8266
+ readonly suppressed: "suppressed";
8267
+ readonly skipped_opt_out: "skipped_opt_out";
8268
+ readonly skipped_disabled: "skipped_disabled";
8269
+ readonly skipped_cost_capped: "skipped_cost_capped";
8270
+ readonly sent: "sent";
8271
+ readonly delivered: "delivered";
8272
+ readonly opened: "opened";
8273
+ readonly clicked: "clicked";
8274
+ readonly soft_bounced: "soft_bounced";
8275
+ readonly hard_bounced: "hard_bounced";
8276
+ readonly complaint: "complaint";
8277
+ readonly failed: "failed";
8278
+ readonly dead_lettered: "dead_lettered";
8279
+ readonly permanently_failed: "permanently_failed";
8280
+ };
8281
+ /**
8282
+ * @nullable
8283
+ */
8284
+ export type NotificationDispatchDetailDtoResolutionReason = ResolutionReasonDto | null;
8285
+ export interface NotificationDispatchDetailDto {
8286
+ notificationDispatchId: string;
8287
+ /** @nullable */
8288
+ organizationId: string | null;
8289
+ /** @nullable */
8290
+ notificationRequestId: string | null;
8291
+ /** @nullable */
8292
+ tenantNotificationRuleId: string | null;
8293
+ /** @nullable */
8294
+ notificationTemplateVersionId: string | null;
8295
+ channel: NotificationDispatchDetailDtoChannel;
8296
+ category: NotificationDispatchDetailDtoCategory;
8297
+ /** @nullable */
8298
+ provider: NotificationDispatchDetailDtoProvider;
8299
+ /** @nullable */
8300
+ providerMessageId: string | null;
8301
+ recipientKind: NotificationDispatchDetailDtoRecipientKind;
8302
+ recipientAddress: string;
8303
+ /** @nullable */
8304
+ recipientName: string | null;
8305
+ /**
8306
+ * to | cc | bcc
8307
+ * @nullable
8308
+ */
8309
+ recipientRole: string | null;
8310
+ /** @nullable */
8311
+ fromAddress: string | null;
8312
+ /** @nullable */
8313
+ subject: string | null;
8314
+ /** @nullable */
8315
+ locale: string | null;
8316
+ status: NotificationDispatchDetailDtoStatus;
8317
+ isTest: boolean;
8318
+ attemptCount: number;
8319
+ /** @nullable */
8320
+ errorMessage: string | null;
8321
+ queuedAt: string;
8322
+ /** @nullable */
8323
+ sentAt: string | null;
8324
+ /** @nullable */
8325
+ deliveredAt: string | null;
8326
+ /** @nullable */
8327
+ failedAt: string | null;
8328
+ createdAt: string;
8329
+ /** @nullable */
8330
+ resolutionReason: NotificationDispatchDetailDtoResolutionReason;
8331
+ /** @nullable */
8332
+ renderedBody: string | null;
8333
+ /** false when the tenant has body storage off, or the row is older than the 90-day scrub window, or the body was never stored. */
8334
+ bodyRetained: boolean;
8335
+ deliveryEvents: DeliveryEventDto[];
8336
+ }
8337
+ export type DispatchStatusCountDtoStatus = typeof DispatchStatusCountDtoStatus[keyof typeof DispatchStatusCountDtoStatus];
8338
+ export declare const DispatchStatusCountDtoStatus: {
8339
+ readonly queued: "queued";
8340
+ readonly rendering: "rendering";
8341
+ readonly render_failed: "render_failed";
8342
+ readonly suppressed: "suppressed";
8343
+ readonly skipped_opt_out: "skipped_opt_out";
8344
+ readonly skipped_disabled: "skipped_disabled";
8345
+ readonly skipped_cost_capped: "skipped_cost_capped";
8346
+ readonly sent: "sent";
8347
+ readonly delivered: "delivered";
8348
+ readonly opened: "opened";
8349
+ readonly clicked: "clicked";
8350
+ readonly soft_bounced: "soft_bounced";
8351
+ readonly hard_bounced: "hard_bounced";
8352
+ readonly complaint: "complaint";
8353
+ readonly failed: "failed";
8354
+ readonly dead_lettered: "dead_lettered";
8355
+ readonly permanently_failed: "permanently_failed";
8356
+ };
8357
+ export interface DispatchStatusCountDto {
8358
+ status: DispatchStatusCountDtoStatus;
8359
+ count: number;
8360
+ }
8361
+ export type NotificationRequestDtoEventPayload = {
8362
+ [key: string]: unknown;
8363
+ };
8364
+ export type NotificationRequestDtoStatus = typeof NotificationRequestDtoStatus[keyof typeof NotificationRequestDtoStatus];
8365
+ export declare const NotificationRequestDtoStatus: {
8366
+ readonly received: "received";
8367
+ readonly matched: "matched";
8368
+ readonly no_match: "no_match";
8369
+ readonly fanned_out: "fanned_out";
8370
+ readonly failed: "failed";
8371
+ };
8372
+ export interface NotificationRequestDto {
8373
+ notificationRequestId: string;
8374
+ /** @nullable */
8375
+ organizationId: string | null;
8376
+ eventKey: string;
8377
+ eventVersion: number;
8378
+ idempotencyKey: string;
8379
+ /** @nullable */
8380
+ sourceOutboxEventKey: string | null;
8381
+ eventPayload: NotificationRequestDtoEventPayload;
8382
+ status: NotificationRequestDtoStatus;
8383
+ /** @nullable */
8384
+ matchedRuleCount: number | null;
8385
+ createdAt: string;
8386
+ /** @nullable */
8387
+ processedAt: string | null;
8388
+ dispatchStatusCounts: DispatchStatusCountDto[];
8389
+ /** Total dispatches fanned out from this request. */
8390
+ dispatchCount: number;
8391
+ }
8392
+ export interface HealthRateWindowDto {
8393
+ numerator: number;
8394
+ denominator: number;
8395
+ /** @nullable */
8396
+ rate: number | null;
8397
+ }
8398
+ export interface HealthRateDto {
8399
+ last7Days: HealthRateWindowDto;
8400
+ last30Days: HealthRateWindowDto;
8401
+ }
8402
+ export interface HealthCountDto {
8403
+ last7Days: number;
8404
+ last30Days: number;
8405
+ }
8406
+ export interface NotificationHealthDto {
8407
+ bounceRate: HealthRateDto;
8408
+ complaintRate: HealthRateDto;
8409
+ renderFailureRate: HealthRateDto;
8410
+ suppressionGrowth: HealthCountDto;
8411
+ computedAt: string;
8412
+ }
8413
+ export interface NotificationSettingsDto {
8414
+ sendingPaused: boolean;
8415
+ /** @nullable */
8416
+ pausedByUserSub: string | null;
8417
+ /** @nullable */
8418
+ pausedAt: string | null;
8419
+ /** @nullable */
8420
+ pauseReason: string | null;
8421
+ smsEnabled: boolean;
8422
+ storeRenderedNotifications: boolean;
8423
+ /** @nullable */
8424
+ sendCapPerDay: number | null;
8425
+ /** @nullable */
8426
+ smsSpendCeiling: number | null;
8427
+ }
8428
+ export type SenderIdentityDtoChannel = typeof SenderIdentityDtoChannel[keyof typeof SenderIdentityDtoChannel];
8429
+ export declare const SenderIdentityDtoChannel: {
8430
+ readonly email: "email";
8431
+ readonly sms: "sms";
8432
+ readonly push: "push";
8433
+ readonly webhook: "webhook";
8434
+ };
8435
+ export type SenderIdentityDtoProvider = typeof SenderIdentityDtoProvider[keyof typeof SenderIdentityDtoProvider];
8436
+ export declare const SenderIdentityDtoProvider: {
8437
+ readonly ses: "ses";
8438
+ readonly aws_eum_sms: "aws_eum_sms";
8439
+ readonly apns: "apns";
8440
+ readonly fcm: "fcm";
8441
+ };
8442
+ export type SenderIdentityDtoVerificationStatus = typeof SenderIdentityDtoVerificationStatus[keyof typeof SenderIdentityDtoVerificationStatus];
8443
+ export declare const SenderIdentityDtoVerificationStatus: {
8444
+ readonly pending: "pending";
8445
+ readonly verified: "verified";
8446
+ readonly failed: "failed";
8447
+ };
8448
+ export interface SenderIdentityDto {
8449
+ senderIdentityId: string;
8450
+ channel: SenderIdentityDtoChannel;
8451
+ provider: SenderIdentityDtoProvider;
8452
+ identityValue: string;
8453
+ /** @nullable */
8454
+ displayName: string | null;
8455
+ /** @nullable */
8456
+ providerConfigRef: string | null;
8457
+ /** @nullable */
8458
+ providerIdentityArn: string | null;
8459
+ verificationStatus: SenderIdentityDtoVerificationStatus;
8460
+ isDefault: boolean;
8461
+ createdAt: string;
8462
+ updatedAt: string;
8463
+ }
8464
+ export interface SenderDnsRecordDto {
8465
+ recordType: string;
8466
+ name: string;
8467
+ value: string;
8468
+ }
8469
+ export type SenderIdentityDetailDtoChannel = typeof SenderIdentityDetailDtoChannel[keyof typeof SenderIdentityDetailDtoChannel];
8470
+ export declare const SenderIdentityDetailDtoChannel: {
8471
+ readonly email: "email";
8472
+ readonly sms: "sms";
8473
+ readonly push: "push";
8474
+ readonly webhook: "webhook";
8475
+ };
8476
+ export type SenderIdentityDetailDtoProvider = typeof SenderIdentityDetailDtoProvider[keyof typeof SenderIdentityDetailDtoProvider];
8477
+ export declare const SenderIdentityDetailDtoProvider: {
8478
+ readonly ses: "ses";
8479
+ readonly aws_eum_sms: "aws_eum_sms";
8480
+ readonly apns: "apns";
8481
+ readonly fcm: "fcm";
8482
+ };
8483
+ export type SenderIdentityDetailDtoVerificationStatus = typeof SenderIdentityDetailDtoVerificationStatus[keyof typeof SenderIdentityDetailDtoVerificationStatus];
8484
+ export declare const SenderIdentityDetailDtoVerificationStatus: {
8485
+ readonly pending: "pending";
8486
+ readonly verified: "verified";
8487
+ readonly failed: "failed";
8488
+ };
8489
+ export interface SenderIdentityDetailDto {
8490
+ senderIdentityId: string;
8491
+ channel: SenderIdentityDetailDtoChannel;
8492
+ provider: SenderIdentityDetailDtoProvider;
8493
+ identityValue: string;
8494
+ /** @nullable */
8495
+ displayName: string | null;
8496
+ /** @nullable */
8497
+ providerConfigRef: string | null;
8498
+ /** @nullable */
8499
+ providerIdentityArn: string | null;
8500
+ verificationStatus: SenderIdentityDetailDtoVerificationStatus;
8501
+ isDefault: boolean;
8502
+ createdAt: string;
8503
+ updatedAt: string;
8504
+ /** DKIM/DNS records to publish for an email identity. Empty until the SES read lands with the verify command in the write slice. */
8505
+ dnsRecords: SenderDnsRecordDto[];
8506
+ }
8507
+ export type OrdersControllerListV1Params = {
8508
+ /**
8509
+ * Max rows to return (1–100).
8510
+ * @minimum 1
8511
+ * @maximum 100
8512
+ */
8513
+ limit?: number;
8514
+ /**
8515
+ * Rows to skip.
8516
+ * @minimum 0
8517
+ */
8518
+ offset?: number;
8519
+ /**
8520
+ * Filter by sales_order status. Repeatable — pass ?status=A&status=B for a set; a single value is accepted too.
8521
+ */
8522
+ status?: string[];
8523
+ type?: OrdersControllerListV1Type;
8524
+ /**
8525
+ * Narrow to one organization (within the caller's RLS scope).
8526
+ */
8527
+ organizationId?: string;
8528
+ /**
8529
+ * created_at lower bound, inclusive (ISO-8601).
8530
+ */
8531
+ fromDate?: string;
8532
+ /**
8533
+ * created_at upper bound, inclusive (ISO-8601).
8534
+ */
8535
+ toDate?: string;
8536
+ };
8537
+ export type OrdersControllerListV1Type = typeof OrdersControllerListV1Type[keyof typeof OrdersControllerListV1Type];
8538
+ export declare const OrdersControllerListV1Type: {
8539
+ readonly PICKUP: "PICKUP";
8540
+ readonly DELIVERY: "DELIVERY";
8541
+ readonly MOVE: "MOVE";
8542
+ readonly DROP_OFF: "DROP_OFF";
8543
+ readonly TRANSFER: "TRANSFER";
8544
+ readonly PICKING: "PICKING";
8545
+ readonly MERCHANDISE_SALE: "MERCHANDISE_SALE";
8546
+ };
8547
+ export type OrderGroupsControllerListV1Params = {
8548
+ /**
8549
+ * Max rows to return (1–100).
8550
+ * @minimum 1
8551
+ * @maximum 100
7145
8552
  */
7146
8553
  limit?: number;
7147
8554
  /**
@@ -7842,6 +9249,25 @@ export declare const LookupsControllerListV1Kind: {
7842
9249
  readonly 'transport-slot-kind': "transport-slot-kind";
7843
9250
  readonly 'organization-type': "organization-type";
7844
9251
  };
9252
+ export type ServicePointsControllerListV1Params = {
9253
+ /**
9254
+ * Postal code to search near.
9255
+ */
9256
+ zipCode?: string;
9257
+ /**
9258
+ * ISO 3166-1 alpha-2
9259
+ */
9260
+ countryCode?: string;
9261
+ provider?: ServicePointsControllerListV1Provider;
9262
+ /**
9263
+ * Provider-specific service-point type filter.
9264
+ */
9265
+ type?: string;
9266
+ };
9267
+ export type ServicePointsControllerListV1Provider = typeof ServicePointsControllerListV1Provider[keyof typeof ServicePointsControllerListV1Provider];
9268
+ export declare const ServicePointsControllerListV1Provider: {
9269
+ readonly POSTI: "POSTI";
9270
+ };
7845
9271
  export type IntegrationsControllerGetByIdV1200 = StripeAccountDto | FortnoxAccountDto;
7846
9272
  export type BillingAccountsControllerListAccountsV1Params = {
7847
9273
  /**
@@ -8088,4 +9514,284 @@ export declare const EmployeeAssignmentsControllerListV1Kind: {
8088
9514
  readonly carrier: "carrier";
8089
9515
  readonly tenant_wide: "tenant_wide";
8090
9516
  };
9517
+ export type NotificationEventsControllerListV1Params = {
9518
+ /**
9519
+ * Filter on defaultCategory.
9520
+ */
9521
+ category?: NotificationEventsControllerListV1Category;
9522
+ /**
9523
+ * Only events whose availableChannels contain this channel.
9524
+ */
9525
+ channel?: NotificationEventsControllerListV1Channel;
9526
+ /**
9527
+ * Filter on lifecycleStatus. Omitted, every lifecycle is returned.
9528
+ */
9529
+ lifecycle?: NotificationEventsControllerListV1Lifecycle;
9530
+ };
9531
+ export type NotificationEventsControllerListV1Category = typeof NotificationEventsControllerListV1Category[keyof typeof NotificationEventsControllerListV1Category];
9532
+ export declare const NotificationEventsControllerListV1Category: {
9533
+ readonly marketing: "marketing";
9534
+ readonly operational: "operational";
9535
+ readonly transactional: "transactional";
9536
+ readonly billing: "billing";
9537
+ readonly security: "security";
9538
+ readonly system: "system";
9539
+ };
9540
+ export type NotificationEventsControllerListV1Channel = typeof NotificationEventsControllerListV1Channel[keyof typeof NotificationEventsControllerListV1Channel];
9541
+ export declare const NotificationEventsControllerListV1Channel: {
9542
+ readonly email: "email";
9543
+ readonly sms: "sms";
9544
+ readonly push: "push";
9545
+ readonly webhook: "webhook";
9546
+ };
9547
+ export type NotificationEventsControllerListV1Lifecycle = typeof NotificationEventsControllerListV1Lifecycle[keyof typeof NotificationEventsControllerListV1Lifecycle];
9548
+ export declare const NotificationEventsControllerListV1Lifecycle: {
9549
+ readonly active: "active";
9550
+ readonly deprecated: "deprecated";
9551
+ readonly retired: "retired";
9552
+ };
9553
+ export type NotificationEventsControllerGetByKeyV1Params = {
9554
+ /**
9555
+ * Pin a contract version. Omitted, the active version is returned — the one a new rule or template would be authored against.
9556
+ * @minimum 1
9557
+ */
9558
+ version?: number;
9559
+ };
9560
+ export type NotificationRulesControllerListV1Params = {
9561
+ /**
9562
+ * Filter to one event.
9563
+ */
9564
+ eventKey?: string;
9565
+ channel?: NotificationRulesControllerListV1Channel;
9566
+ category?: NotificationRulesControllerListV1Category;
9567
+ /**
9568
+ * Filter on isEnabled. Omitted, both enabled and disabled rules are returned.
9569
+ */
9570
+ enabled?: boolean;
9571
+ };
9572
+ export type NotificationRulesControllerListV1Channel = typeof NotificationRulesControllerListV1Channel[keyof typeof NotificationRulesControllerListV1Channel];
9573
+ export declare const NotificationRulesControllerListV1Channel: {
9574
+ readonly email: "email";
9575
+ readonly sms: "sms";
9576
+ readonly push: "push";
9577
+ readonly webhook: "webhook";
9578
+ };
9579
+ export type NotificationRulesControllerListV1Category = typeof NotificationRulesControllerListV1Category[keyof typeof NotificationRulesControllerListV1Category];
9580
+ export declare const NotificationRulesControllerListV1Category: {
9581
+ readonly marketing: "marketing";
9582
+ readonly operational: "operational";
9583
+ readonly transactional: "transactional";
9584
+ readonly billing: "billing";
9585
+ readonly security: "security";
9586
+ readonly system: "system";
9587
+ };
9588
+ export type NotificationTemplatesControllerListV1Params = {
9589
+ /**
9590
+ * Max rows to return (1–100).
9591
+ * @minimum 1
9592
+ * @maximum 100
9593
+ */
9594
+ limit?: number;
9595
+ /**
9596
+ * Rows to skip.
9597
+ * @minimum 0
9598
+ */
9599
+ offset?: number;
9600
+ /**
9601
+ * Filter to one event.
9602
+ */
9603
+ eventKey?: string;
9604
+ channel?: NotificationTemplatesControllerListV1Channel;
9605
+ /**
9606
+ * `tenant` = the tenant defaults (organizationId IS NULL); `organization` = org overrides.
9607
+ */
9608
+ scope?: NotificationTemplatesControllerListV1Scope;
9609
+ /**
9610
+ * Narrow to one organization's overrides. Implies scope=organization.
9611
+ */
9612
+ organizationId?: string;
9613
+ locale?: string;
9614
+ /**
9615
+ * Filter on the state of the template's versions: `published` returns templates with a live version, `draft` those with an unpublished draft.
9616
+ */
9617
+ state?: NotificationTemplatesControllerListV1State;
9618
+ };
9619
+ export type NotificationTemplatesControllerListV1Channel = typeof NotificationTemplatesControllerListV1Channel[keyof typeof NotificationTemplatesControllerListV1Channel];
9620
+ export declare const NotificationTemplatesControllerListV1Channel: {
9621
+ readonly email: "email";
9622
+ readonly sms: "sms";
9623
+ readonly push: "push";
9624
+ readonly webhook: "webhook";
9625
+ };
9626
+ export type NotificationTemplatesControllerListV1Scope = typeof NotificationTemplatesControllerListV1Scope[keyof typeof NotificationTemplatesControllerListV1Scope];
9627
+ export declare const NotificationTemplatesControllerListV1Scope: {
9628
+ readonly tenant: "tenant";
9629
+ readonly organization: "organization";
9630
+ };
9631
+ export type NotificationTemplatesControllerListV1State = typeof NotificationTemplatesControllerListV1State[keyof typeof NotificationTemplatesControllerListV1State];
9632
+ export declare const NotificationTemplatesControllerListV1State: {
9633
+ readonly draft: "draft";
9634
+ readonly published: "published";
9635
+ readonly archived: "archived";
9636
+ };
9637
+ export type NotificationPreferencesControllerSearchV1Params = {
9638
+ /**
9639
+ * The subject's Keycloak sub. Mutually exclusive with `address`; one is required.
9640
+ */
9641
+ userSub?: string;
9642
+ /**
9643
+ * The subject's email or phone. Mutually exclusive with `userSub`; one is required.
9644
+ */
9645
+ address?: string;
9646
+ };
9647
+ export type SuppressionsControllerInspectV1Params = {
9648
+ /**
9649
+ * The email or phone to evaluate.
9650
+ */
9651
+ address: string;
9652
+ /**
9653
+ * Narrow to one category. Omitted, every category is evaluated.
9654
+ */
9655
+ category?: SuppressionsControllerInspectV1Category;
9656
+ /**
9657
+ * Narrow to one channel. Omitted, email and sms are evaluated.
9658
+ */
9659
+ channel?: SuppressionsControllerInspectV1Channel;
9660
+ };
9661
+ export type SuppressionsControllerInspectV1Category = typeof SuppressionsControllerInspectV1Category[keyof typeof SuppressionsControllerInspectV1Category];
9662
+ export declare const SuppressionsControllerInspectV1Category: {
9663
+ readonly marketing: "marketing";
9664
+ readonly operational: "operational";
9665
+ readonly transactional: "transactional";
9666
+ readonly billing: "billing";
9667
+ readonly security: "security";
9668
+ readonly system: "system";
9669
+ };
9670
+ export type SuppressionsControllerInspectV1Channel = typeof SuppressionsControllerInspectV1Channel[keyof typeof SuppressionsControllerInspectV1Channel];
9671
+ export declare const SuppressionsControllerInspectV1Channel: {
9672
+ readonly email: "email";
9673
+ readonly sms: "sms";
9674
+ readonly push: "push";
9675
+ readonly webhook: "webhook";
9676
+ };
9677
+ export type SuppressionsControllerListV1Params = {
9678
+ /**
9679
+ * Max rows to return (1–100).
9680
+ * @minimum 1
9681
+ * @maximum 100
9682
+ */
9683
+ limit?: number;
9684
+ /**
9685
+ * Rows to skip.
9686
+ * @minimum 0
9687
+ */
9688
+ offset?: number;
9689
+ /**
9690
+ * Exact-match on the normalized address.
9691
+ */
9692
+ address?: string;
9693
+ channel?: SuppressionsControllerListV1Channel;
9694
+ reason?: SuppressionsControllerListV1Reason;
9695
+ /**
9696
+ * `true` (the default) returns only blocks still in force — not released and not expired. `false` returns only the released/expired history; omit nothing to get both.
9697
+ */
9698
+ active?: boolean;
9699
+ };
9700
+ export type SuppressionsControllerListV1Channel = typeof SuppressionsControllerListV1Channel[keyof typeof SuppressionsControllerListV1Channel];
9701
+ export declare const SuppressionsControllerListV1Channel: {
9702
+ readonly email: "email";
9703
+ readonly sms: "sms";
9704
+ readonly push: "push";
9705
+ readonly webhook: "webhook";
9706
+ };
9707
+ export type SuppressionsControllerListV1Reason = typeof SuppressionsControllerListV1Reason[keyof typeof SuppressionsControllerListV1Reason];
9708
+ export declare const SuppressionsControllerListV1Reason: {
9709
+ readonly hard_bounce: "hard_bounce";
9710
+ readonly complaint: "complaint";
9711
+ readonly sms_stop: "sms_stop";
9712
+ readonly manual: "manual";
9713
+ readonly provider_suppression: "provider_suppression";
9714
+ };
9715
+ export type NotificationDispatchesControllerListV1Params = {
9716
+ /**
9717
+ * Max rows to return (1–100).
9718
+ * @minimum 1
9719
+ * @maximum 100
9720
+ */
9721
+ limit?: number;
9722
+ /**
9723
+ * Rows to skip.
9724
+ * @minimum 0
9725
+ */
9726
+ offset?: number;
9727
+ status?: NotificationDispatchesControllerListV1Status;
9728
+ category?: NotificationDispatchesControllerListV1Category;
9729
+ channel?: NotificationDispatchesControllerListV1Channel;
9730
+ /**
9731
+ * Exact-match on the snapshotted recipient address.
9732
+ */
9733
+ recipientAddress?: string;
9734
+ /**
9735
+ * Filter by business event, resolved through the parent notification_request.
9736
+ */
9737
+ eventKey?: string;
9738
+ /**
9739
+ * Test-sends are hidden by default. `true` shows only them; omit for the default.
9740
+ */
9741
+ isTest?: boolean;
9742
+ /**
9743
+ * Inclusive lower bound on createdAt. Defaults to 30 days ago.
9744
+ */
9745
+ createdFrom?: string;
9746
+ /**
9747
+ * Exclusive upper bound on createdAt. Defaults to now.
9748
+ */
9749
+ createdTo?: string;
9750
+ };
9751
+ export type NotificationDispatchesControllerListV1Status = typeof NotificationDispatchesControllerListV1Status[keyof typeof NotificationDispatchesControllerListV1Status];
9752
+ export declare const NotificationDispatchesControllerListV1Status: {
9753
+ readonly queued: "queued";
9754
+ readonly rendering: "rendering";
9755
+ readonly render_failed: "render_failed";
9756
+ readonly suppressed: "suppressed";
9757
+ readonly skipped_opt_out: "skipped_opt_out";
9758
+ readonly skipped_disabled: "skipped_disabled";
9759
+ readonly skipped_cost_capped: "skipped_cost_capped";
9760
+ readonly sent: "sent";
9761
+ readonly delivered: "delivered";
9762
+ readonly opened: "opened";
9763
+ readonly clicked: "clicked";
9764
+ readonly soft_bounced: "soft_bounced";
9765
+ readonly hard_bounced: "hard_bounced";
9766
+ readonly complaint: "complaint";
9767
+ readonly failed: "failed";
9768
+ readonly dead_lettered: "dead_lettered";
9769
+ readonly permanently_failed: "permanently_failed";
9770
+ };
9771
+ export type NotificationDispatchesControllerListV1Category = typeof NotificationDispatchesControllerListV1Category[keyof typeof NotificationDispatchesControllerListV1Category];
9772
+ export declare const NotificationDispatchesControllerListV1Category: {
9773
+ readonly marketing: "marketing";
9774
+ readonly operational: "operational";
9775
+ readonly transactional: "transactional";
9776
+ readonly billing: "billing";
9777
+ readonly security: "security";
9778
+ readonly system: "system";
9779
+ };
9780
+ export type NotificationDispatchesControllerListV1Channel = typeof NotificationDispatchesControllerListV1Channel[keyof typeof NotificationDispatchesControllerListV1Channel];
9781
+ export declare const NotificationDispatchesControllerListV1Channel: {
9782
+ readonly email: "email";
9783
+ readonly sms: "sms";
9784
+ readonly push: "push";
9785
+ readonly webhook: "webhook";
9786
+ };
9787
+ export type SenderIdentitiesControllerListV1Params = {
9788
+ channel?: SenderIdentitiesControllerListV1Channel;
9789
+ };
9790
+ export type SenderIdentitiesControllerListV1Channel = typeof SenderIdentitiesControllerListV1Channel[keyof typeof SenderIdentitiesControllerListV1Channel];
9791
+ export declare const SenderIdentitiesControllerListV1Channel: {
9792
+ readonly email: "email";
9793
+ readonly sms: "sms";
9794
+ readonly push: "push";
9795
+ readonly webhook: "webhook";
9796
+ };
8091
9797
  //# sourceMappingURL=index.schemas.d.ts.map