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

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 (65) hide show
  1. package/dist/generated/_all.d.ts +12 -0
  2. package/dist/generated/_all.d.ts.map +1 -1
  3. package/dist/generated/_all.js +12 -0
  4. package/dist/generated/_all.js.map +1 -1
  5. package/dist/generated/_permissions.d.ts +82 -1
  6. package/dist/generated/_permissions.d.ts.map +1 -1
  7. package/dist/generated/_permissions.js +21 -0
  8. package/dist/generated/_permissions.js.map +1 -1
  9. package/dist/generated/index.schemas.d.ts +1212 -7
  10. package/dist/generated/index.schemas.d.ts.map +1 -1
  11. package/dist/generated/index.schemas.js +497 -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 +44 -0
  38. package/dist/generated/notification-rules/notification-rules.d.ts.map +1 -0
  39. package/dist/generated/notification-rules/notification-rules.js +28 -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 +65 -0
  46. package/dist/generated/notification-templates/notification-templates.d.ts.map +1 -0
  47. package/dist/generated/notification-templates/notification-templates.js +37 -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/suppressions/suppressions.d.ts +37 -0
  58. package/dist/generated/suppressions/suppressions.d.ts.map +1 -0
  59. package/dist/generated/suppressions/suppressions.js +36 -0
  60. package/dist/generated/suppressions/suppressions.js.map +1 -0
  61. package/dist/generated/unsubscribe/unsubscribe.d.ts +55 -0
  62. package/dist/generated/unsubscribe/unsubscribe.d.ts.map +1 -0
  63. package/dist/generated/unsubscribe/unsubscribe.js +22 -0
  64. package/dist/generated/unsubscribe/unsubscribe.js.map +1 -0
  65. 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;
@@ -449,6 +469,27 @@ export interface EditOrderItemsDto {
449
469
  /** Full desired set of product lines. Omit a stored line to remove it; an empty array removes all removable lines. */
450
470
  items: OrderItemInput[];
451
471
  }
472
+ export interface EstimateItemInputDto {
473
+ /** What the customer calls the goods (free text). */
474
+ reference: string;
475
+ /**
476
+ * How many of this type the customer expects.
477
+ * @minimum 1
478
+ */
479
+ quantity: number;
480
+ /** @minimum 1 */
481
+ lengthMm?: number;
482
+ /** @minimum 1 */
483
+ widthMm?: number;
484
+ /** @minimum 1 */
485
+ heightMm?: number;
486
+ }
487
+ export interface EditOrderEstimateDto {
488
+ /** Full desired set of declared expected lines; an empty array clears them (and zeroes the estimate's volume). */
489
+ estimatedItems: EstimateItemInputDto[];
490
+ /** Customer-visible note stored on the estimate. */
491
+ comment?: string;
492
+ }
452
493
  /**
453
494
  * 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
495
  */
@@ -1535,6 +1576,29 @@ export interface AnonymousSessionDto {
1535
1576
  sessionToken: string;
1536
1577
  expiresAt: string;
1537
1578
  }
1579
+ export interface UnsubscribePageDto {
1580
+ /** The `messaging.message_category` the opt-out applies to. */
1581
+ category: string;
1582
+ /** The channel the opt-out applies to. Email-only in v1. */
1583
+ channel: string;
1584
+ /** The tenant's display name, for the page's branding line. */
1585
+ tenantDisplayName: string;
1586
+ /** 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. */
1587
+ expired: boolean;
1588
+ }
1589
+ export interface ConfirmUnsubscribeDto {
1590
+ /** 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. */
1591
+ confirmed?: boolean;
1592
+ /** 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. */
1593
+ 'List-Unsubscribe'?: string;
1594
+ }
1595
+ export interface UnsubscribeResultDto {
1596
+ /** Always true when the request succeeded. */
1597
+ optedOut: boolean;
1598
+ category: string;
1599
+ channel: string;
1600
+ tenantDisplayName: string;
1601
+ }
1538
1602
  export type CreateCartDtoCartType = typeof CreateCartDtoCartType[keyof typeof CreateCartDtoCartType];
1539
1603
  export declare const CreateCartDtoCartType: {
1540
1604
  readonly PICKUP_ESTIMATE: "PICKUP_ESTIMATE";
@@ -1600,7 +1664,13 @@ export type CartItemDtoMetadata = {
1600
1664
  } | null;
1601
1665
  export interface CartItemDto {
1602
1666
  cartProductId: string;
1603
- productReference: string;
1667
+ /**
1668
+ * The product this line stands for; null on an estimate line.
1669
+ * @nullable
1670
+ */
1671
+ productId: string | null;
1672
+ /** @nullable */
1673
+ productReference: string | null;
1604
1674
  quantity: number;
1605
1675
  /** @nullable */
1606
1676
  lengthMm: number | null;
@@ -1711,6 +1781,7 @@ export declare const QuoteLineDtoKind: {
1711
1781
  readonly MERCHANDISE: "MERCHANDISE";
1712
1782
  readonly TRANSPORT: "TRANSPORT";
1713
1783
  readonly INSURANCE: "INSURANCE";
1784
+ readonly START_FEE: "START_FEE";
1714
1785
  };
1715
1786
  export interface QuoteLineDto {
1716
1787
  kind: QuoteLineDtoKind;
@@ -1730,11 +1801,45 @@ export interface QuoteLineDto {
1730
1801
  /** Whether this line qualifies for the RUT labour deduction */
1731
1802
  rutEligible: boolean;
1732
1803
  }
1804
+ export interface QuoteVolumeDto {
1805
+ /** Total goods volume in cm³ */
1806
+ totalCm3: number;
1807
+ /** Total goods volume in m³, rounded to 4 decimal places */
1808
+ totalM3: number;
1809
+ /** Cart lines missing at least one dimension */
1810
+ incompleteLines: number;
1811
+ }
1733
1812
  export interface QuoteCouponDto {
1734
1813
  code: string;
1735
1814
  /** Discount applied to the payable total, integer minor units */
1736
1815
  discountMinor: number;
1737
1816
  }
1817
+ export interface QuoteBindingDto {
1818
+ bindingPlanId: string;
1819
+ code: string;
1820
+ displayName: string;
1821
+ /**
1822
+ * Null or 0 = flexible, no binding
1823
+ * @nullable
1824
+ */
1825
+ durationMonths: number | null;
1826
+ /** True when this plan came from the organization's active contract rather than the cart's selection */
1827
+ fromContract: boolean;
1828
+ }
1829
+ export interface QuoteDiscountDto {
1830
+ /** binding_period | campaign | contract | ... */
1831
+ ruleType: string;
1832
+ /**
1833
+ * Article code the rate applies to; null = every article
1834
+ * @nullable
1835
+ */
1836
+ articleCode: string | null;
1837
+ /**
1838
+ * Basis points (1000 = 10.00%)
1839
+ * @nullable
1840
+ */
1841
+ discountPercentBps: number | null;
1842
+ }
1738
1843
  export interface QuoteTotalsDto {
1739
1844
  /** Sum of line totals ex-VAT, minor units */
1740
1845
  exVatMinor: number;
@@ -1749,20 +1854,34 @@ export interface QuoteTotalsDto {
1749
1854
  * @nullable
1750
1855
  */
1751
1856
  export type QuoteResponseDtoCoupon = QuoteCouponDto | null;
1857
+ /**
1858
+ * The binding plan in force for this quote, or null when there is none
1859
+ * @nullable
1860
+ */
1861
+ export type QuoteResponseDtoBinding = QuoteBindingDto | null;
1752
1862
  export interface QuoteResponseDto {
1753
1863
  cartId: string;
1754
1864
  /** ISO 4217 — the currency all amounts are expressed in */
1755
1865
  currencyCode: string;
1756
1866
  lines: QuoteLineDto[];
1867
+ /** Goods volume — the basis for per-m³ rates */
1868
+ volume: QuoteVolumeDto;
1757
1869
  /** @nullable */
1758
1870
  coupon: QuoteResponseDtoCoupon;
1759
1871
  /**
1760
- * Total RUT labour deduction in minor units, or null when RUT does not apply
1872
+ * The binding plan in force for this quote, or null when there is none
1873
+ * @nullable
1874
+ */
1875
+ binding: QuoteResponseDtoBinding;
1876
+ /** The in-force binding plan's rate matrix — display data, NOT reflected in `totals` (see QuoteDiscountDto and the BINDING_DISCOUNT entry in `deferred`) */
1877
+ discounts: QuoteDiscountDto[];
1878
+ /**
1879
+ * 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
1880
  * @nullable
1762
1881
  */
1763
1882
  rutDeductionMinor: number | null;
1764
1883
  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. */
1884
+ /** 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), INSURANCE (no plan catalogue exists yet), 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). */
1766
1885
  deferred: string[];
1767
1886
  }
1768
1887
  /**
@@ -1916,8 +2035,10 @@ export type CartItemInputDtoMetadata = {
1916
2035
  export interface CartItemInputDto {
1917
2036
  /** Present = reconcile against this existing line; absent = insert a new line. Lines missing from the submitted array are removed. */
1918
2037
  cartProductId?: string;
1919
- /** Catalog string, not an FK — resolved at placement */
1920
- productReference: string;
2038
+ /** 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. */
2039
+ productId?: string;
2040
+ /** 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. */
2041
+ productReference?: string;
1921
2042
  /** @minimum 1 */
1922
2043
  quantity: number;
1923
2044
  /** @nullable */
@@ -1991,7 +2112,7 @@ export type UpdateCartDtoInsuranceId = {
1991
2112
  [key: string]: unknown;
1992
2113
  } | null;
1993
2114
  /**
1994
- * Opaque billing plan id (deferred FK)
2115
+ * 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
2116
  * @nullable
1996
2117
  */
1997
2118
  export type UpdateCartDtoBindingId = {
@@ -2041,7 +2162,7 @@ export interface UpdateCartDto {
2041
2162
  */
2042
2163
  insuranceId?: UpdateCartDtoInsuranceId;
2043
2164
  /**
2044
- * Opaque billing plan id (deferred FK)
2165
+ * 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
2166
  * @nullable
2046
2167
  */
2047
2168
  bindingId?: UpdateCartDtoBindingId;
@@ -7007,6 +7128,7 @@ export declare const CreateEmployeeAssignmentDtoKind: {
7007
7128
  export type CreateEmployeeAssignmentDtoRole = typeof CreateEmployeeAssignmentDtoRole[keyof typeof CreateEmployeeAssignmentDtoRole];
7008
7129
  export declare const CreateEmployeeAssignmentDtoRole: {
7009
7130
  readonly 'operations-manager': "operations-manager";
7131
+ readonly 'customer-service': "customer-service";
7010
7132
  readonly 'warehouse-admin': "warehouse-admin";
7011
7133
  readonly 'warehouse-operator': "warehouse-operator";
7012
7134
  readonly 'carrier-admin': "carrier-admin";
@@ -7078,6 +7200,7 @@ export interface EmployeeAssignmentSyncResultDto {
7078
7200
  export type UpdateEmployeeAssignmentDtoRole = typeof UpdateEmployeeAssignmentDtoRole[keyof typeof UpdateEmployeeAssignmentDtoRole];
7079
7201
  export declare const UpdateEmployeeAssignmentDtoRole: {
7080
7202
  readonly 'operations-manager': "operations-manager";
7203
+ readonly 'customer-service': "customer-service";
7081
7204
  readonly 'warehouse-admin': "warehouse-admin";
7082
7205
  readonly 'warehouse-operator': "warehouse-operator";
7083
7206
  readonly 'carrier-admin': "carrier-admin";
@@ -7097,6 +7220,808 @@ export interface OffboardEmployeeDto {
7097
7220
  /** 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
7221
  reason?: string;
7099
7222
  }
7223
+ export type NotificationEventSummaryDtoDefaultCategory = typeof NotificationEventSummaryDtoDefaultCategory[keyof typeof NotificationEventSummaryDtoDefaultCategory];
7224
+ export declare const NotificationEventSummaryDtoDefaultCategory: {
7225
+ readonly marketing: "marketing";
7226
+ readonly operational: "operational";
7227
+ readonly transactional: "transactional";
7228
+ readonly billing: "billing";
7229
+ readonly security: "security";
7230
+ readonly system: "system";
7231
+ };
7232
+ export type NotificationEventSummaryDtoAvailableChannelsItem = typeof NotificationEventSummaryDtoAvailableChannelsItem[keyof typeof NotificationEventSummaryDtoAvailableChannelsItem];
7233
+ export declare const NotificationEventSummaryDtoAvailableChannelsItem: {
7234
+ readonly email: "email";
7235
+ readonly sms: "sms";
7236
+ readonly push: "push";
7237
+ readonly webhook: "webhook";
7238
+ };
7239
+ export type NotificationEventSummaryDtoLifecycleStatus = typeof NotificationEventSummaryDtoLifecycleStatus[keyof typeof NotificationEventSummaryDtoLifecycleStatus];
7240
+ export declare const NotificationEventSummaryDtoLifecycleStatus: {
7241
+ readonly active: "active";
7242
+ readonly deprecated: "deprecated";
7243
+ readonly retired: "retired";
7244
+ };
7245
+ export interface NotificationEventSummaryDto {
7246
+ eventKey: string;
7247
+ version: number;
7248
+ displayName: string;
7249
+ /** @nullable */
7250
+ description: string | null;
7251
+ defaultCategory: NotificationEventSummaryDtoDefaultCategory;
7252
+ availableChannels: NotificationEventSummaryDtoAvailableChannelsItem[];
7253
+ lifecycleStatus: NotificationEventSummaryDtoLifecycleStatus;
7254
+ /** @nullable */
7255
+ supersededByVersion: number | null;
7256
+ }
7257
+ /**
7258
+ * @nullable
7259
+ */
7260
+ export type ContractPathDtoExampleValue = {
7261
+ [key: string]: unknown;
7262
+ } | null;
7263
+ export interface ContractPathDto {
7264
+ path: string;
7265
+ type: string;
7266
+ format?: string;
7267
+ required: boolean;
7268
+ pii: boolean;
7269
+ display_label: string;
7270
+ /** @nullable */
7271
+ example_value?: ContractPathDtoExampleValue;
7272
+ }
7273
+ export type NotificationEventDtoDefaultCategory = typeof NotificationEventDtoDefaultCategory[keyof typeof NotificationEventDtoDefaultCategory];
7274
+ export declare const NotificationEventDtoDefaultCategory: {
7275
+ readonly marketing: "marketing";
7276
+ readonly operational: "operational";
7277
+ readonly transactional: "transactional";
7278
+ readonly billing: "billing";
7279
+ readonly security: "security";
7280
+ readonly system: "system";
7281
+ };
7282
+ export type NotificationEventDtoAvailableChannelsItem = typeof NotificationEventDtoAvailableChannelsItem[keyof typeof NotificationEventDtoAvailableChannelsItem];
7283
+ export declare const NotificationEventDtoAvailableChannelsItem: {
7284
+ readonly email: "email";
7285
+ readonly sms: "sms";
7286
+ readonly push: "push";
7287
+ readonly webhook: "webhook";
7288
+ };
7289
+ export type NotificationEventDtoLifecycleStatus = typeof NotificationEventDtoLifecycleStatus[keyof typeof NotificationEventDtoLifecycleStatus];
7290
+ export declare const NotificationEventDtoLifecycleStatus: {
7291
+ readonly active: "active";
7292
+ readonly deprecated: "deprecated";
7293
+ readonly retired: "retired";
7294
+ };
7295
+ /**
7296
+ * JSON Schema (draft 2020-12) for the event payload.
7297
+ */
7298
+ export type NotificationEventDtoContract = {
7299
+ [key: string]: unknown;
7300
+ };
7301
+ export interface NotificationEventDto {
7302
+ eventKey: string;
7303
+ version: number;
7304
+ displayName: string;
7305
+ /** @nullable */
7306
+ description: string | null;
7307
+ defaultCategory: NotificationEventDtoDefaultCategory;
7308
+ availableChannels: NotificationEventDtoAvailableChannelsItem[];
7309
+ lifecycleStatus: NotificationEventDtoLifecycleStatus;
7310
+ /** @nullable */
7311
+ supersededByVersion: number | null;
7312
+ /** JSON Schema (draft 2020-12) for the event payload. */
7313
+ contract: NotificationEventDtoContract;
7314
+ contractPaths: ContractPathDto[];
7315
+ createdAt: string;
7316
+ updatedAt: string;
7317
+ }
7318
+ export type RecipientSpecDtoKind = typeof RecipientSpecDtoKind[keyof typeof RecipientSpecDtoKind];
7319
+ export declare const RecipientSpecDtoKind: {
7320
+ readonly event_field: "event_field";
7321
+ readonly org_contact_role: "org_contact_role";
7322
+ readonly tenant_role: "tenant_role";
7323
+ readonly static_email: "static_email";
7324
+ readonly static_phone: "static_phone";
7325
+ };
7326
+ /**
7327
+ * Delivery slot. `cc`/`bcc` are email-only.
7328
+ */
7329
+ export type RecipientSpecDtoDelivery = typeof RecipientSpecDtoDelivery[keyof typeof RecipientSpecDtoDelivery];
7330
+ export declare const RecipientSpecDtoDelivery: {
7331
+ readonly to: "to";
7332
+ readonly cc: "cc";
7333
+ readonly bcc: "bcc";
7334
+ };
7335
+ export interface RecipientSpecDto {
7336
+ kind: RecipientSpecDtoKind;
7337
+ /** Contract path for `event_field` specs — must exist in the event's contractPaths. */
7338
+ path?: string;
7339
+ /** Role for `org_contact_role` / `tenant_role` specs. */
7340
+ role?: string;
7341
+ /** Literal address for `static_email` / `static_phone`. */
7342
+ value?: string;
7343
+ /** Delivery slot. `cc`/`bcc` are email-only. */
7344
+ delivery?: RecipientSpecDtoDelivery;
7345
+ }
7346
+ export type NotificationRuleDtoChannel = typeof NotificationRuleDtoChannel[keyof typeof NotificationRuleDtoChannel];
7347
+ export declare const NotificationRuleDtoChannel: {
7348
+ readonly email: "email";
7349
+ readonly sms: "sms";
7350
+ readonly push: "push";
7351
+ readonly webhook: "webhook";
7352
+ };
7353
+ export type NotificationRuleDtoCategory = typeof NotificationRuleDtoCategory[keyof typeof NotificationRuleDtoCategory];
7354
+ export declare const NotificationRuleDtoCategory: {
7355
+ readonly marketing: "marketing";
7356
+ readonly operational: "operational";
7357
+ readonly transactional: "transactional";
7358
+ readonly billing: "billing";
7359
+ readonly security: "security";
7360
+ readonly system: "system";
7361
+ };
7362
+ export interface NotificationRuleDto {
7363
+ tenantNotificationRuleId: string;
7364
+ eventKey: string;
7365
+ eventVersion: number;
7366
+ channel: NotificationRuleDtoChannel;
7367
+ category: NotificationRuleDtoCategory;
7368
+ isEnabled: boolean;
7369
+ /** @nullable */
7370
+ notificationTemplateId: string | null;
7371
+ recipients: RecipientSpecDto[];
7372
+ createdAt: string;
7373
+ updatedAt: string;
7374
+ }
7375
+ export type NotificationTemplateDtoChannel = typeof NotificationTemplateDtoChannel[keyof typeof NotificationTemplateDtoChannel];
7376
+ export declare const NotificationTemplateDtoChannel: {
7377
+ readonly email: "email";
7378
+ readonly sms: "sms";
7379
+ readonly push: "push";
7380
+ readonly webhook: "webhook";
7381
+ };
7382
+ export type NotificationTemplateDtoEngine = typeof NotificationTemplateDtoEngine[keyof typeof NotificationTemplateDtoEngine];
7383
+ export declare const NotificationTemplateDtoEngine: {
7384
+ readonly handlebars: "handlebars";
7385
+ readonly mjml: "mjml";
7386
+ readonly react_email: "react_email";
7387
+ readonly plain_text: "plain_text";
7388
+ };
7389
+ export interface NotificationTemplateDto {
7390
+ notificationTemplateId: string;
7391
+ /** @nullable */
7392
+ organizationId: string | null;
7393
+ channel: NotificationTemplateDtoChannel;
7394
+ eventKey: string;
7395
+ locale: string;
7396
+ name: string;
7397
+ engine: NotificationTemplateDtoEngine;
7398
+ isSystem: boolean;
7399
+ /** @nullable */
7400
+ publishedVersionId: string | null;
7401
+ createdAt: string;
7402
+ updatedAt: string;
7403
+ }
7404
+ export interface PaginatedNotificationTemplatesDto {
7405
+ /** The page of rows. */
7406
+ items: NotificationTemplateDto[];
7407
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
7408
+ total: number;
7409
+ /** Effective max rows applied (after defaults/clamp). */
7410
+ limit: number;
7411
+ /** Effective rows skipped applied. */
7412
+ offset: number;
7413
+ }
7414
+ export type TemplateVersionSummaryDtoLifecycleStatus = typeof TemplateVersionSummaryDtoLifecycleStatus[keyof typeof TemplateVersionSummaryDtoLifecycleStatus];
7415
+ export declare const TemplateVersionSummaryDtoLifecycleStatus: {
7416
+ readonly draft: "draft";
7417
+ readonly published: "published";
7418
+ readonly archived: "archived";
7419
+ };
7420
+ export interface TemplateVersionSummaryDto {
7421
+ notificationTemplateVersionId: string;
7422
+ notificationTemplateId: string;
7423
+ version: number;
7424
+ lifecycleStatus: TemplateVersionSummaryDtoLifecycleStatus;
7425
+ eventVersion: number;
7426
+ createdAt: string;
7427
+ /** @nullable */
7428
+ publishedAt: string | null;
7429
+ /** @nullable */
7430
+ archivedAt: string | null;
7431
+ }
7432
+ export type NotificationTemplateDetailDtoChannel = typeof NotificationTemplateDetailDtoChannel[keyof typeof NotificationTemplateDetailDtoChannel];
7433
+ export declare const NotificationTemplateDetailDtoChannel: {
7434
+ readonly email: "email";
7435
+ readonly sms: "sms";
7436
+ readonly push: "push";
7437
+ readonly webhook: "webhook";
7438
+ };
7439
+ export type NotificationTemplateDetailDtoEngine = typeof NotificationTemplateDetailDtoEngine[keyof typeof NotificationTemplateDetailDtoEngine];
7440
+ export declare const NotificationTemplateDetailDtoEngine: {
7441
+ readonly handlebars: "handlebars";
7442
+ readonly mjml: "mjml";
7443
+ readonly react_email: "react_email";
7444
+ readonly plain_text: "plain_text";
7445
+ };
7446
+ export interface NotificationTemplateDetailDto {
7447
+ notificationTemplateId: string;
7448
+ /** @nullable */
7449
+ organizationId: string | null;
7450
+ channel: NotificationTemplateDetailDtoChannel;
7451
+ eventKey: string;
7452
+ locale: string;
7453
+ name: string;
7454
+ engine: NotificationTemplateDetailDtoEngine;
7455
+ isSystem: boolean;
7456
+ /** @nullable */
7457
+ publishedVersionId: string | null;
7458
+ createdAt: string;
7459
+ updatedAt: string;
7460
+ versions: TemplateVersionSummaryDto[];
7461
+ }
7462
+ export type PreferenceDtoCategory = typeof PreferenceDtoCategory[keyof typeof PreferenceDtoCategory];
7463
+ export declare const PreferenceDtoCategory: {
7464
+ readonly marketing: "marketing";
7465
+ readonly operational: "operational";
7466
+ readonly transactional: "transactional";
7467
+ readonly billing: "billing";
7468
+ readonly security: "security";
7469
+ readonly system: "system";
7470
+ };
7471
+ /**
7472
+ * @nullable
7473
+ */
7474
+ export type PreferenceDtoChannel = typeof PreferenceDtoChannel[keyof typeof PreferenceDtoChannel] | null;
7475
+ export declare const PreferenceDtoChannel: {
7476
+ readonly email: "email";
7477
+ readonly sms: "sms";
7478
+ readonly push: "push";
7479
+ readonly webhook: "webhook";
7480
+ };
7481
+ export interface PreferenceDto {
7482
+ notificationPreferenceId: string;
7483
+ /** @nullable */
7484
+ userSub: string | null;
7485
+ /** @nullable */
7486
+ contactAddress: string | null;
7487
+ category: PreferenceDtoCategory;
7488
+ /** @nullable */
7489
+ channel: PreferenceDtoChannel;
7490
+ isEnabled: boolean;
7491
+ source: string;
7492
+ updatedAt: string;
7493
+ }
7494
+ export type AddressVerdictDtoCategory = typeof AddressVerdictDtoCategory[keyof typeof AddressVerdictDtoCategory];
7495
+ export declare const AddressVerdictDtoCategory: {
7496
+ readonly marketing: "marketing";
7497
+ readonly operational: "operational";
7498
+ readonly transactional: "transactional";
7499
+ readonly billing: "billing";
7500
+ readonly security: "security";
7501
+ readonly system: "system";
7502
+ };
7503
+ export type AddressVerdictDtoChannel = typeof AddressVerdictDtoChannel[keyof typeof AddressVerdictDtoChannel];
7504
+ export declare const AddressVerdictDtoChannel: {
7505
+ readonly email: "email";
7506
+ readonly sms: "sms";
7507
+ readonly push: "push";
7508
+ readonly webhook: "webhook";
7509
+ };
7510
+ /**
7511
+ * @nullable
7512
+ */
7513
+ export type AddressVerdictDtoBlockedBy = typeof AddressVerdictDtoBlockedBy[keyof typeof AddressVerdictDtoBlockedBy] | null;
7514
+ export declare const AddressVerdictDtoBlockedBy: {
7515
+ readonly suppression: "suppression";
7516
+ readonly preference: "preference";
7517
+ };
7518
+ export type AddressVerdictDtoMatrixRule = typeof AddressVerdictDtoMatrixRule[keyof typeof AddressVerdictDtoMatrixRule];
7519
+ export declare const AddressVerdictDtoMatrixRule: {
7520
+ readonly hard_bounce_always_wins: "hard_bounce_always_wins";
7521
+ readonly complaint_always_wins: "complaint_always_wins";
7522
+ readonly sms_stop_legal_hard_block: "sms_stop_legal_hard_block";
7523
+ readonly manual_suppression: "manual_suppression";
7524
+ readonly provider_suppression: "provider_suppression";
7525
+ readonly preference_opt_out: "preference_opt_out";
7526
+ readonly billing_category_opt_out_ignored: "billing_category_opt_out_ignored";
7527
+ readonly category_not_preference_suppressible: "category_not_preference_suppressible";
7528
+ readonly no_block: "no_block";
7529
+ };
7530
+ export interface AddressVerdictDto {
7531
+ category: AddressVerdictDtoCategory;
7532
+ channel: AddressVerdictDtoChannel;
7533
+ wouldSend: boolean;
7534
+ /** @nullable */
7535
+ blockedBy: AddressVerdictDtoBlockedBy;
7536
+ matrixRule: AddressVerdictDtoMatrixRule;
7537
+ /** @nullable */
7538
+ recordId: string | null;
7539
+ }
7540
+ export interface AddressInspectionDto {
7541
+ address: string;
7542
+ verdicts: AddressVerdictDto[];
7543
+ }
7544
+ export type SuppressionDtoChannel = typeof SuppressionDtoChannel[keyof typeof SuppressionDtoChannel];
7545
+ export declare const SuppressionDtoChannel: {
7546
+ readonly email: "email";
7547
+ readonly sms: "sms";
7548
+ readonly push: "push";
7549
+ readonly webhook: "webhook";
7550
+ };
7551
+ export type SuppressionDtoReason = typeof SuppressionDtoReason[keyof typeof SuppressionDtoReason];
7552
+ export declare const SuppressionDtoReason: {
7553
+ readonly hard_bounce: "hard_bounce";
7554
+ readonly complaint: "complaint";
7555
+ readonly sms_stop: "sms_stop";
7556
+ readonly manual: "manual";
7557
+ readonly provider_suppression: "provider_suppression";
7558
+ };
7559
+ /**
7560
+ * @nullable
7561
+ */
7562
+ export type SuppressionDtoSourceProvider = typeof SuppressionDtoSourceProvider[keyof typeof SuppressionDtoSourceProvider] | null;
7563
+ export declare const SuppressionDtoSourceProvider: {
7564
+ readonly ses: "ses";
7565
+ readonly aws_eum_sms: "aws_eum_sms";
7566
+ readonly apns: "apns";
7567
+ readonly fcm: "fcm";
7568
+ };
7569
+ export interface SuppressionDto {
7570
+ suppressionId: string;
7571
+ channel: SuppressionDtoChannel;
7572
+ address: string;
7573
+ reason: SuppressionDtoReason;
7574
+ /** @nullable */
7575
+ sourceProvider: SuppressionDtoSourceProvider;
7576
+ createdAt: string;
7577
+ /** @nullable */
7578
+ expiresAt: string | null;
7579
+ /** @nullable */
7580
+ releasedAt: string | null;
7581
+ /** @nullable */
7582
+ releasedByUserSub: string | null;
7583
+ }
7584
+ export interface PaginatedSuppressionsDto {
7585
+ /** The page of rows. */
7586
+ items: SuppressionDto[];
7587
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
7588
+ total: number;
7589
+ /** Effective max rows applied (after defaults/clamp). */
7590
+ limit: number;
7591
+ /** Effective rows skipped applied. */
7592
+ offset: number;
7593
+ }
7594
+ export type NotificationDispatchDtoChannel = typeof NotificationDispatchDtoChannel[keyof typeof NotificationDispatchDtoChannel];
7595
+ export declare const NotificationDispatchDtoChannel: {
7596
+ readonly email: "email";
7597
+ readonly sms: "sms";
7598
+ readonly push: "push";
7599
+ readonly webhook: "webhook";
7600
+ };
7601
+ export type NotificationDispatchDtoCategory = typeof NotificationDispatchDtoCategory[keyof typeof NotificationDispatchDtoCategory];
7602
+ export declare const NotificationDispatchDtoCategory: {
7603
+ readonly marketing: "marketing";
7604
+ readonly operational: "operational";
7605
+ readonly transactional: "transactional";
7606
+ readonly billing: "billing";
7607
+ readonly security: "security";
7608
+ readonly system: "system";
7609
+ };
7610
+ /**
7611
+ * @nullable
7612
+ */
7613
+ export type NotificationDispatchDtoProvider = typeof NotificationDispatchDtoProvider[keyof typeof NotificationDispatchDtoProvider] | null;
7614
+ export declare const NotificationDispatchDtoProvider: {
7615
+ readonly ses: "ses";
7616
+ readonly aws_eum_sms: "aws_eum_sms";
7617
+ readonly apns: "apns";
7618
+ readonly fcm: "fcm";
7619
+ };
7620
+ export type NotificationDispatchDtoRecipientKind = typeof NotificationDispatchDtoRecipientKind[keyof typeof NotificationDispatchDtoRecipientKind];
7621
+ export declare const NotificationDispatchDtoRecipientKind: {
7622
+ readonly event_field: "event_field";
7623
+ readonly org_contact_role: "org_contact_role";
7624
+ readonly tenant_role: "tenant_role";
7625
+ readonly static_email: "static_email";
7626
+ readonly static_phone: "static_phone";
7627
+ };
7628
+ export type NotificationDispatchDtoStatus = typeof NotificationDispatchDtoStatus[keyof typeof NotificationDispatchDtoStatus];
7629
+ export declare const NotificationDispatchDtoStatus: {
7630
+ readonly queued: "queued";
7631
+ readonly rendering: "rendering";
7632
+ readonly render_failed: "render_failed";
7633
+ readonly suppressed: "suppressed";
7634
+ readonly skipped_opt_out: "skipped_opt_out";
7635
+ readonly skipped_disabled: "skipped_disabled";
7636
+ readonly skipped_cost_capped: "skipped_cost_capped";
7637
+ readonly sent: "sent";
7638
+ readonly delivered: "delivered";
7639
+ readonly opened: "opened";
7640
+ readonly clicked: "clicked";
7641
+ readonly soft_bounced: "soft_bounced";
7642
+ readonly hard_bounced: "hard_bounced";
7643
+ readonly complaint: "complaint";
7644
+ readonly failed: "failed";
7645
+ readonly dead_lettered: "dead_lettered";
7646
+ readonly permanently_failed: "permanently_failed";
7647
+ };
7648
+ export interface NotificationDispatchDto {
7649
+ notificationDispatchId: string;
7650
+ /** @nullable */
7651
+ organizationId: string | null;
7652
+ /** @nullable */
7653
+ notificationRequestId: string | null;
7654
+ /** @nullable */
7655
+ tenantNotificationRuleId: string | null;
7656
+ /** @nullable */
7657
+ notificationTemplateVersionId: string | null;
7658
+ channel: NotificationDispatchDtoChannel;
7659
+ category: NotificationDispatchDtoCategory;
7660
+ /** @nullable */
7661
+ provider: NotificationDispatchDtoProvider;
7662
+ /** @nullable */
7663
+ providerMessageId: string | null;
7664
+ recipientKind: NotificationDispatchDtoRecipientKind;
7665
+ recipientAddress: string;
7666
+ /** @nullable */
7667
+ recipientName: string | null;
7668
+ /**
7669
+ * to | cc | bcc
7670
+ * @nullable
7671
+ */
7672
+ recipientRole: string | null;
7673
+ /** @nullable */
7674
+ fromAddress: string | null;
7675
+ /** @nullable */
7676
+ subject: string | null;
7677
+ /** @nullable */
7678
+ locale: string | null;
7679
+ status: NotificationDispatchDtoStatus;
7680
+ isTest: boolean;
7681
+ attemptCount: number;
7682
+ /** @nullable */
7683
+ errorMessage: string | null;
7684
+ queuedAt: string;
7685
+ /** @nullable */
7686
+ sentAt: string | null;
7687
+ /** @nullable */
7688
+ deliveredAt: string | null;
7689
+ /** @nullable */
7690
+ failedAt: string | null;
7691
+ createdAt: string;
7692
+ }
7693
+ export interface PaginatedNotificationDispatchesDto {
7694
+ /** The page of rows. */
7695
+ items: NotificationDispatchDto[];
7696
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
7697
+ total: number;
7698
+ /** Effective max rows applied (after defaults/clamp). */
7699
+ limit: number;
7700
+ /** Effective rows skipped applied. */
7701
+ offset: number;
7702
+ }
7703
+ export type ResolutionReasonDtoKind = typeof ResolutionReasonDtoKind[keyof typeof ResolutionReasonDtoKind];
7704
+ export declare const ResolutionReasonDtoKind: {
7705
+ readonly event_field: "event_field";
7706
+ readonly org_contact_role: "org_contact_role";
7707
+ readonly tenant_role: "tenant_role";
7708
+ readonly static_email: "static_email";
7709
+ readonly static_phone: "static_phone";
7710
+ };
7711
+ export interface ResolutionReasonDto {
7712
+ rule_id?: string;
7713
+ spec_index?: number;
7714
+ kind?: ResolutionReasonDtoKind;
7715
+ role?: string;
7716
+ path?: string;
7717
+ /** The source row the address came from. */
7718
+ source_id?: string;
7719
+ }
7720
+ export type DeliveryEventDtoProvider = typeof DeliveryEventDtoProvider[keyof typeof DeliveryEventDtoProvider];
7721
+ export declare const DeliveryEventDtoProvider: {
7722
+ readonly ses: "ses";
7723
+ readonly aws_eum_sms: "aws_eum_sms";
7724
+ readonly apns: "apns";
7725
+ readonly fcm: "fcm";
7726
+ };
7727
+ /**
7728
+ * @nullable
7729
+ */
7730
+ export type DeliveryEventDtoEventData = {
7731
+ [key: string]: unknown;
7732
+ } | null;
7733
+ export interface DeliveryEventDto {
7734
+ deliveryEventId: string;
7735
+ provider: DeliveryEventDtoProvider;
7736
+ /** @nullable */
7737
+ providerMessageId: string | null;
7738
+ /** delivered | bounce | complaint | open | click | sms_delivered | sms_failed */
7739
+ eventType: string;
7740
+ /** @nullable */
7741
+ eventData: DeliveryEventDtoEventData;
7742
+ eventAt: string;
7743
+ receivedAt: string;
7744
+ }
7745
+ export type NotificationDispatchDetailDtoChannel = typeof NotificationDispatchDetailDtoChannel[keyof typeof NotificationDispatchDetailDtoChannel];
7746
+ export declare const NotificationDispatchDetailDtoChannel: {
7747
+ readonly email: "email";
7748
+ readonly sms: "sms";
7749
+ readonly push: "push";
7750
+ readonly webhook: "webhook";
7751
+ };
7752
+ export type NotificationDispatchDetailDtoCategory = typeof NotificationDispatchDetailDtoCategory[keyof typeof NotificationDispatchDetailDtoCategory];
7753
+ export declare const NotificationDispatchDetailDtoCategory: {
7754
+ readonly marketing: "marketing";
7755
+ readonly operational: "operational";
7756
+ readonly transactional: "transactional";
7757
+ readonly billing: "billing";
7758
+ readonly security: "security";
7759
+ readonly system: "system";
7760
+ };
7761
+ /**
7762
+ * @nullable
7763
+ */
7764
+ export type NotificationDispatchDetailDtoProvider = typeof NotificationDispatchDetailDtoProvider[keyof typeof NotificationDispatchDetailDtoProvider] | null;
7765
+ export declare const NotificationDispatchDetailDtoProvider: {
7766
+ readonly ses: "ses";
7767
+ readonly aws_eum_sms: "aws_eum_sms";
7768
+ readonly apns: "apns";
7769
+ readonly fcm: "fcm";
7770
+ };
7771
+ export type NotificationDispatchDetailDtoRecipientKind = typeof NotificationDispatchDetailDtoRecipientKind[keyof typeof NotificationDispatchDetailDtoRecipientKind];
7772
+ export declare const NotificationDispatchDetailDtoRecipientKind: {
7773
+ readonly event_field: "event_field";
7774
+ readonly org_contact_role: "org_contact_role";
7775
+ readonly tenant_role: "tenant_role";
7776
+ readonly static_email: "static_email";
7777
+ readonly static_phone: "static_phone";
7778
+ };
7779
+ export type NotificationDispatchDetailDtoStatus = typeof NotificationDispatchDetailDtoStatus[keyof typeof NotificationDispatchDetailDtoStatus];
7780
+ export declare const NotificationDispatchDetailDtoStatus: {
7781
+ readonly queued: "queued";
7782
+ readonly rendering: "rendering";
7783
+ readonly render_failed: "render_failed";
7784
+ readonly suppressed: "suppressed";
7785
+ readonly skipped_opt_out: "skipped_opt_out";
7786
+ readonly skipped_disabled: "skipped_disabled";
7787
+ readonly skipped_cost_capped: "skipped_cost_capped";
7788
+ readonly sent: "sent";
7789
+ readonly delivered: "delivered";
7790
+ readonly opened: "opened";
7791
+ readonly clicked: "clicked";
7792
+ readonly soft_bounced: "soft_bounced";
7793
+ readonly hard_bounced: "hard_bounced";
7794
+ readonly complaint: "complaint";
7795
+ readonly failed: "failed";
7796
+ readonly dead_lettered: "dead_lettered";
7797
+ readonly permanently_failed: "permanently_failed";
7798
+ };
7799
+ /**
7800
+ * @nullable
7801
+ */
7802
+ export type NotificationDispatchDetailDtoResolutionReason = ResolutionReasonDto | null;
7803
+ export interface NotificationDispatchDetailDto {
7804
+ notificationDispatchId: string;
7805
+ /** @nullable */
7806
+ organizationId: string | null;
7807
+ /** @nullable */
7808
+ notificationRequestId: string | null;
7809
+ /** @nullable */
7810
+ tenantNotificationRuleId: string | null;
7811
+ /** @nullable */
7812
+ notificationTemplateVersionId: string | null;
7813
+ channel: NotificationDispatchDetailDtoChannel;
7814
+ category: NotificationDispatchDetailDtoCategory;
7815
+ /** @nullable */
7816
+ provider: NotificationDispatchDetailDtoProvider;
7817
+ /** @nullable */
7818
+ providerMessageId: string | null;
7819
+ recipientKind: NotificationDispatchDetailDtoRecipientKind;
7820
+ recipientAddress: string;
7821
+ /** @nullable */
7822
+ recipientName: string | null;
7823
+ /**
7824
+ * to | cc | bcc
7825
+ * @nullable
7826
+ */
7827
+ recipientRole: string | null;
7828
+ /** @nullable */
7829
+ fromAddress: string | null;
7830
+ /** @nullable */
7831
+ subject: string | null;
7832
+ /** @nullable */
7833
+ locale: string | null;
7834
+ status: NotificationDispatchDetailDtoStatus;
7835
+ isTest: boolean;
7836
+ attemptCount: number;
7837
+ /** @nullable */
7838
+ errorMessage: string | null;
7839
+ queuedAt: string;
7840
+ /** @nullable */
7841
+ sentAt: string | null;
7842
+ /** @nullable */
7843
+ deliveredAt: string | null;
7844
+ /** @nullable */
7845
+ failedAt: string | null;
7846
+ createdAt: string;
7847
+ /** @nullable */
7848
+ resolutionReason: NotificationDispatchDetailDtoResolutionReason;
7849
+ /** @nullable */
7850
+ renderedBody: string | null;
7851
+ /** 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. */
7852
+ bodyRetained: boolean;
7853
+ deliveryEvents: DeliveryEventDto[];
7854
+ }
7855
+ export type DispatchStatusCountDtoStatus = typeof DispatchStatusCountDtoStatus[keyof typeof DispatchStatusCountDtoStatus];
7856
+ export declare const DispatchStatusCountDtoStatus: {
7857
+ readonly queued: "queued";
7858
+ readonly rendering: "rendering";
7859
+ readonly render_failed: "render_failed";
7860
+ readonly suppressed: "suppressed";
7861
+ readonly skipped_opt_out: "skipped_opt_out";
7862
+ readonly skipped_disabled: "skipped_disabled";
7863
+ readonly skipped_cost_capped: "skipped_cost_capped";
7864
+ readonly sent: "sent";
7865
+ readonly delivered: "delivered";
7866
+ readonly opened: "opened";
7867
+ readonly clicked: "clicked";
7868
+ readonly soft_bounced: "soft_bounced";
7869
+ readonly hard_bounced: "hard_bounced";
7870
+ readonly complaint: "complaint";
7871
+ readonly failed: "failed";
7872
+ readonly dead_lettered: "dead_lettered";
7873
+ readonly permanently_failed: "permanently_failed";
7874
+ };
7875
+ export interface DispatchStatusCountDto {
7876
+ status: DispatchStatusCountDtoStatus;
7877
+ count: number;
7878
+ }
7879
+ export type NotificationRequestDtoEventPayload = {
7880
+ [key: string]: unknown;
7881
+ };
7882
+ export type NotificationRequestDtoStatus = typeof NotificationRequestDtoStatus[keyof typeof NotificationRequestDtoStatus];
7883
+ export declare const NotificationRequestDtoStatus: {
7884
+ readonly received: "received";
7885
+ readonly matched: "matched";
7886
+ readonly no_match: "no_match";
7887
+ readonly fanned_out: "fanned_out";
7888
+ readonly failed: "failed";
7889
+ };
7890
+ export interface NotificationRequestDto {
7891
+ notificationRequestId: string;
7892
+ /** @nullable */
7893
+ organizationId: string | null;
7894
+ eventKey: string;
7895
+ eventVersion: number;
7896
+ idempotencyKey: string;
7897
+ /** @nullable */
7898
+ sourceOutboxEventKey: string | null;
7899
+ eventPayload: NotificationRequestDtoEventPayload;
7900
+ status: NotificationRequestDtoStatus;
7901
+ /** @nullable */
7902
+ matchedRuleCount: number | null;
7903
+ createdAt: string;
7904
+ /** @nullable */
7905
+ processedAt: string | null;
7906
+ dispatchStatusCounts: DispatchStatusCountDto[];
7907
+ /** Total dispatches fanned out from this request. */
7908
+ dispatchCount: number;
7909
+ }
7910
+ export interface HealthRateWindowDto {
7911
+ numerator: number;
7912
+ denominator: number;
7913
+ /** @nullable */
7914
+ rate: number | null;
7915
+ }
7916
+ export interface HealthRateDto {
7917
+ last7Days: HealthRateWindowDto;
7918
+ last30Days: HealthRateWindowDto;
7919
+ }
7920
+ export interface HealthCountDto {
7921
+ last7Days: number;
7922
+ last30Days: number;
7923
+ }
7924
+ export interface NotificationHealthDto {
7925
+ bounceRate: HealthRateDto;
7926
+ complaintRate: HealthRateDto;
7927
+ renderFailureRate: HealthRateDto;
7928
+ suppressionGrowth: HealthCountDto;
7929
+ computedAt: string;
7930
+ }
7931
+ export interface NotificationSettingsDto {
7932
+ sendingPaused: boolean;
7933
+ /** @nullable */
7934
+ pausedByUserSub: string | null;
7935
+ /** @nullable */
7936
+ pausedAt: string | null;
7937
+ /** @nullable */
7938
+ pauseReason: string | null;
7939
+ smsEnabled: boolean;
7940
+ storeRenderedNotifications: boolean;
7941
+ /** @nullable */
7942
+ sendCapPerDay: number | null;
7943
+ /** @nullable */
7944
+ smsSpendCeiling: number | null;
7945
+ }
7946
+ export type SenderIdentityDtoChannel = typeof SenderIdentityDtoChannel[keyof typeof SenderIdentityDtoChannel];
7947
+ export declare const SenderIdentityDtoChannel: {
7948
+ readonly email: "email";
7949
+ readonly sms: "sms";
7950
+ readonly push: "push";
7951
+ readonly webhook: "webhook";
7952
+ };
7953
+ export type SenderIdentityDtoProvider = typeof SenderIdentityDtoProvider[keyof typeof SenderIdentityDtoProvider];
7954
+ export declare const SenderIdentityDtoProvider: {
7955
+ readonly ses: "ses";
7956
+ readonly aws_eum_sms: "aws_eum_sms";
7957
+ readonly apns: "apns";
7958
+ readonly fcm: "fcm";
7959
+ };
7960
+ export type SenderIdentityDtoVerificationStatus = typeof SenderIdentityDtoVerificationStatus[keyof typeof SenderIdentityDtoVerificationStatus];
7961
+ export declare const SenderIdentityDtoVerificationStatus: {
7962
+ readonly pending: "pending";
7963
+ readonly verified: "verified";
7964
+ readonly failed: "failed";
7965
+ };
7966
+ export interface SenderIdentityDto {
7967
+ senderIdentityId: string;
7968
+ channel: SenderIdentityDtoChannel;
7969
+ provider: SenderIdentityDtoProvider;
7970
+ identityValue: string;
7971
+ /** @nullable */
7972
+ displayName: string | null;
7973
+ /** @nullable */
7974
+ providerConfigRef: string | null;
7975
+ /** @nullable */
7976
+ providerIdentityArn: string | null;
7977
+ verificationStatus: SenderIdentityDtoVerificationStatus;
7978
+ isDefault: boolean;
7979
+ createdAt: string;
7980
+ updatedAt: string;
7981
+ }
7982
+ export interface SenderDnsRecordDto {
7983
+ recordType: string;
7984
+ name: string;
7985
+ value: string;
7986
+ }
7987
+ export type SenderIdentityDetailDtoChannel = typeof SenderIdentityDetailDtoChannel[keyof typeof SenderIdentityDetailDtoChannel];
7988
+ export declare const SenderIdentityDetailDtoChannel: {
7989
+ readonly email: "email";
7990
+ readonly sms: "sms";
7991
+ readonly push: "push";
7992
+ readonly webhook: "webhook";
7993
+ };
7994
+ export type SenderIdentityDetailDtoProvider = typeof SenderIdentityDetailDtoProvider[keyof typeof SenderIdentityDetailDtoProvider];
7995
+ export declare const SenderIdentityDetailDtoProvider: {
7996
+ readonly ses: "ses";
7997
+ readonly aws_eum_sms: "aws_eum_sms";
7998
+ readonly apns: "apns";
7999
+ readonly fcm: "fcm";
8000
+ };
8001
+ export type SenderIdentityDetailDtoVerificationStatus = typeof SenderIdentityDetailDtoVerificationStatus[keyof typeof SenderIdentityDetailDtoVerificationStatus];
8002
+ export declare const SenderIdentityDetailDtoVerificationStatus: {
8003
+ readonly pending: "pending";
8004
+ readonly verified: "verified";
8005
+ readonly failed: "failed";
8006
+ };
8007
+ export interface SenderIdentityDetailDto {
8008
+ senderIdentityId: string;
8009
+ channel: SenderIdentityDetailDtoChannel;
8010
+ provider: SenderIdentityDetailDtoProvider;
8011
+ identityValue: string;
8012
+ /** @nullable */
8013
+ displayName: string | null;
8014
+ /** @nullable */
8015
+ providerConfigRef: string | null;
8016
+ /** @nullable */
8017
+ providerIdentityArn: string | null;
8018
+ verificationStatus: SenderIdentityDetailDtoVerificationStatus;
8019
+ isDefault: boolean;
8020
+ createdAt: string;
8021
+ updatedAt: string;
8022
+ /** DKIM/DNS records to publish for an email identity. Empty until the SES read lands with the verify command in the write slice. */
8023
+ dnsRecords: SenderDnsRecordDto[];
8024
+ }
7100
8025
  export type OrdersControllerListV1Params = {
7101
8026
  /**
7102
8027
  * Max rows to return (1–100).
@@ -8088,4 +9013,284 @@ export declare const EmployeeAssignmentsControllerListV1Kind: {
8088
9013
  readonly carrier: "carrier";
8089
9014
  readonly tenant_wide: "tenant_wide";
8090
9015
  };
9016
+ export type NotificationEventsControllerListV1Params = {
9017
+ /**
9018
+ * Filter on defaultCategory.
9019
+ */
9020
+ category?: NotificationEventsControllerListV1Category;
9021
+ /**
9022
+ * Only events whose availableChannels contain this channel.
9023
+ */
9024
+ channel?: NotificationEventsControllerListV1Channel;
9025
+ /**
9026
+ * Filter on lifecycleStatus. Omitted, every lifecycle is returned.
9027
+ */
9028
+ lifecycle?: NotificationEventsControllerListV1Lifecycle;
9029
+ };
9030
+ export type NotificationEventsControllerListV1Category = typeof NotificationEventsControllerListV1Category[keyof typeof NotificationEventsControllerListV1Category];
9031
+ export declare const NotificationEventsControllerListV1Category: {
9032
+ readonly marketing: "marketing";
9033
+ readonly operational: "operational";
9034
+ readonly transactional: "transactional";
9035
+ readonly billing: "billing";
9036
+ readonly security: "security";
9037
+ readonly system: "system";
9038
+ };
9039
+ export type NotificationEventsControllerListV1Channel = typeof NotificationEventsControllerListV1Channel[keyof typeof NotificationEventsControllerListV1Channel];
9040
+ export declare const NotificationEventsControllerListV1Channel: {
9041
+ readonly email: "email";
9042
+ readonly sms: "sms";
9043
+ readonly push: "push";
9044
+ readonly webhook: "webhook";
9045
+ };
9046
+ export type NotificationEventsControllerListV1Lifecycle = typeof NotificationEventsControllerListV1Lifecycle[keyof typeof NotificationEventsControllerListV1Lifecycle];
9047
+ export declare const NotificationEventsControllerListV1Lifecycle: {
9048
+ readonly active: "active";
9049
+ readonly deprecated: "deprecated";
9050
+ readonly retired: "retired";
9051
+ };
9052
+ export type NotificationEventsControllerGetByKeyV1Params = {
9053
+ /**
9054
+ * Pin a contract version. Omitted, the active version is returned — the one a new rule or template would be authored against.
9055
+ * @minimum 1
9056
+ */
9057
+ version?: number;
9058
+ };
9059
+ export type NotificationRulesControllerListV1Params = {
9060
+ /**
9061
+ * Filter to one event.
9062
+ */
9063
+ eventKey?: string;
9064
+ channel?: NotificationRulesControllerListV1Channel;
9065
+ category?: NotificationRulesControllerListV1Category;
9066
+ /**
9067
+ * Filter on isEnabled. Omitted, both enabled and disabled rules are returned.
9068
+ */
9069
+ enabled?: boolean;
9070
+ };
9071
+ export type NotificationRulesControllerListV1Channel = typeof NotificationRulesControllerListV1Channel[keyof typeof NotificationRulesControllerListV1Channel];
9072
+ export declare const NotificationRulesControllerListV1Channel: {
9073
+ readonly email: "email";
9074
+ readonly sms: "sms";
9075
+ readonly push: "push";
9076
+ readonly webhook: "webhook";
9077
+ };
9078
+ export type NotificationRulesControllerListV1Category = typeof NotificationRulesControllerListV1Category[keyof typeof NotificationRulesControllerListV1Category];
9079
+ export declare const NotificationRulesControllerListV1Category: {
9080
+ readonly marketing: "marketing";
9081
+ readonly operational: "operational";
9082
+ readonly transactional: "transactional";
9083
+ readonly billing: "billing";
9084
+ readonly security: "security";
9085
+ readonly system: "system";
9086
+ };
9087
+ export type NotificationTemplatesControllerListV1Params = {
9088
+ /**
9089
+ * Max rows to return (1–100).
9090
+ * @minimum 1
9091
+ * @maximum 100
9092
+ */
9093
+ limit?: number;
9094
+ /**
9095
+ * Rows to skip.
9096
+ * @minimum 0
9097
+ */
9098
+ offset?: number;
9099
+ /**
9100
+ * Filter to one event.
9101
+ */
9102
+ eventKey?: string;
9103
+ channel?: NotificationTemplatesControllerListV1Channel;
9104
+ /**
9105
+ * `tenant` = the tenant defaults (organizationId IS NULL); `organization` = org overrides.
9106
+ */
9107
+ scope?: NotificationTemplatesControllerListV1Scope;
9108
+ /**
9109
+ * Narrow to one organization's overrides. Implies scope=organization.
9110
+ */
9111
+ organizationId?: string;
9112
+ locale?: string;
9113
+ /**
9114
+ * Filter on the state of the template's versions: `published` returns templates with a live version, `draft` those with an unpublished draft.
9115
+ */
9116
+ state?: NotificationTemplatesControllerListV1State;
9117
+ };
9118
+ export type NotificationTemplatesControllerListV1Channel = typeof NotificationTemplatesControllerListV1Channel[keyof typeof NotificationTemplatesControllerListV1Channel];
9119
+ export declare const NotificationTemplatesControllerListV1Channel: {
9120
+ readonly email: "email";
9121
+ readonly sms: "sms";
9122
+ readonly push: "push";
9123
+ readonly webhook: "webhook";
9124
+ };
9125
+ export type NotificationTemplatesControllerListV1Scope = typeof NotificationTemplatesControllerListV1Scope[keyof typeof NotificationTemplatesControllerListV1Scope];
9126
+ export declare const NotificationTemplatesControllerListV1Scope: {
9127
+ readonly tenant: "tenant";
9128
+ readonly organization: "organization";
9129
+ };
9130
+ export type NotificationTemplatesControllerListV1State = typeof NotificationTemplatesControllerListV1State[keyof typeof NotificationTemplatesControllerListV1State];
9131
+ export declare const NotificationTemplatesControllerListV1State: {
9132
+ readonly draft: "draft";
9133
+ readonly published: "published";
9134
+ readonly archived: "archived";
9135
+ };
9136
+ export type NotificationPreferencesControllerSearchV1Params = {
9137
+ /**
9138
+ * The subject's Keycloak sub. Mutually exclusive with `address`; one is required.
9139
+ */
9140
+ userSub?: string;
9141
+ /**
9142
+ * The subject's email or phone. Mutually exclusive with `userSub`; one is required.
9143
+ */
9144
+ address?: string;
9145
+ };
9146
+ export type SuppressionsControllerInspectV1Params = {
9147
+ /**
9148
+ * The email or phone to evaluate.
9149
+ */
9150
+ address: string;
9151
+ /**
9152
+ * Narrow to one category. Omitted, every category is evaluated.
9153
+ */
9154
+ category?: SuppressionsControllerInspectV1Category;
9155
+ /**
9156
+ * Narrow to one channel. Omitted, email and sms are evaluated.
9157
+ */
9158
+ channel?: SuppressionsControllerInspectV1Channel;
9159
+ };
9160
+ export type SuppressionsControllerInspectV1Category = typeof SuppressionsControllerInspectV1Category[keyof typeof SuppressionsControllerInspectV1Category];
9161
+ export declare const SuppressionsControllerInspectV1Category: {
9162
+ readonly marketing: "marketing";
9163
+ readonly operational: "operational";
9164
+ readonly transactional: "transactional";
9165
+ readonly billing: "billing";
9166
+ readonly security: "security";
9167
+ readonly system: "system";
9168
+ };
9169
+ export type SuppressionsControllerInspectV1Channel = typeof SuppressionsControllerInspectV1Channel[keyof typeof SuppressionsControllerInspectV1Channel];
9170
+ export declare const SuppressionsControllerInspectV1Channel: {
9171
+ readonly email: "email";
9172
+ readonly sms: "sms";
9173
+ readonly push: "push";
9174
+ readonly webhook: "webhook";
9175
+ };
9176
+ export type SuppressionsControllerListV1Params = {
9177
+ /**
9178
+ * Max rows to return (1–100).
9179
+ * @minimum 1
9180
+ * @maximum 100
9181
+ */
9182
+ limit?: number;
9183
+ /**
9184
+ * Rows to skip.
9185
+ * @minimum 0
9186
+ */
9187
+ offset?: number;
9188
+ /**
9189
+ * Exact-match on the normalized address.
9190
+ */
9191
+ address?: string;
9192
+ channel?: SuppressionsControllerListV1Channel;
9193
+ reason?: SuppressionsControllerListV1Reason;
9194
+ /**
9195
+ * `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.
9196
+ */
9197
+ active?: boolean;
9198
+ };
9199
+ export type SuppressionsControllerListV1Channel = typeof SuppressionsControllerListV1Channel[keyof typeof SuppressionsControllerListV1Channel];
9200
+ export declare const SuppressionsControllerListV1Channel: {
9201
+ readonly email: "email";
9202
+ readonly sms: "sms";
9203
+ readonly push: "push";
9204
+ readonly webhook: "webhook";
9205
+ };
9206
+ export type SuppressionsControllerListV1Reason = typeof SuppressionsControllerListV1Reason[keyof typeof SuppressionsControllerListV1Reason];
9207
+ export declare const SuppressionsControllerListV1Reason: {
9208
+ readonly hard_bounce: "hard_bounce";
9209
+ readonly complaint: "complaint";
9210
+ readonly sms_stop: "sms_stop";
9211
+ readonly manual: "manual";
9212
+ readonly provider_suppression: "provider_suppression";
9213
+ };
9214
+ export type NotificationDispatchesControllerListV1Params = {
9215
+ /**
9216
+ * Max rows to return (1–100).
9217
+ * @minimum 1
9218
+ * @maximum 100
9219
+ */
9220
+ limit?: number;
9221
+ /**
9222
+ * Rows to skip.
9223
+ * @minimum 0
9224
+ */
9225
+ offset?: number;
9226
+ status?: NotificationDispatchesControllerListV1Status;
9227
+ category?: NotificationDispatchesControllerListV1Category;
9228
+ channel?: NotificationDispatchesControllerListV1Channel;
9229
+ /**
9230
+ * Exact-match on the snapshotted recipient address.
9231
+ */
9232
+ recipientAddress?: string;
9233
+ /**
9234
+ * Filter by business event, resolved through the parent notification_request.
9235
+ */
9236
+ eventKey?: string;
9237
+ /**
9238
+ * Test-sends are hidden by default. `true` shows only them; omit for the default.
9239
+ */
9240
+ isTest?: boolean;
9241
+ /**
9242
+ * Inclusive lower bound on createdAt. Defaults to 30 days ago.
9243
+ */
9244
+ createdFrom?: string;
9245
+ /**
9246
+ * Exclusive upper bound on createdAt. Defaults to now.
9247
+ */
9248
+ createdTo?: string;
9249
+ };
9250
+ export type NotificationDispatchesControllerListV1Status = typeof NotificationDispatchesControllerListV1Status[keyof typeof NotificationDispatchesControllerListV1Status];
9251
+ export declare const NotificationDispatchesControllerListV1Status: {
9252
+ readonly queued: "queued";
9253
+ readonly rendering: "rendering";
9254
+ readonly render_failed: "render_failed";
9255
+ readonly suppressed: "suppressed";
9256
+ readonly skipped_opt_out: "skipped_opt_out";
9257
+ readonly skipped_disabled: "skipped_disabled";
9258
+ readonly skipped_cost_capped: "skipped_cost_capped";
9259
+ readonly sent: "sent";
9260
+ readonly delivered: "delivered";
9261
+ readonly opened: "opened";
9262
+ readonly clicked: "clicked";
9263
+ readonly soft_bounced: "soft_bounced";
9264
+ readonly hard_bounced: "hard_bounced";
9265
+ readonly complaint: "complaint";
9266
+ readonly failed: "failed";
9267
+ readonly dead_lettered: "dead_lettered";
9268
+ readonly permanently_failed: "permanently_failed";
9269
+ };
9270
+ export type NotificationDispatchesControllerListV1Category = typeof NotificationDispatchesControllerListV1Category[keyof typeof NotificationDispatchesControllerListV1Category];
9271
+ export declare const NotificationDispatchesControllerListV1Category: {
9272
+ readonly marketing: "marketing";
9273
+ readonly operational: "operational";
9274
+ readonly transactional: "transactional";
9275
+ readonly billing: "billing";
9276
+ readonly security: "security";
9277
+ readonly system: "system";
9278
+ };
9279
+ export type NotificationDispatchesControllerListV1Channel = typeof NotificationDispatchesControllerListV1Channel[keyof typeof NotificationDispatchesControllerListV1Channel];
9280
+ export declare const NotificationDispatchesControllerListV1Channel: {
9281
+ readonly email: "email";
9282
+ readonly sms: "sms";
9283
+ readonly push: "push";
9284
+ readonly webhook: "webhook";
9285
+ };
9286
+ export type SenderIdentitiesControllerListV1Params = {
9287
+ channel?: SenderIdentitiesControllerListV1Channel;
9288
+ };
9289
+ export type SenderIdentitiesControllerListV1Channel = typeof SenderIdentitiesControllerListV1Channel[keyof typeof SenderIdentitiesControllerListV1Channel];
9290
+ export declare const SenderIdentitiesControllerListV1Channel: {
9291
+ readonly email: "email";
9292
+ readonly sms: "sms";
9293
+ readonly push: "push";
9294
+ readonly webhook: "webhook";
9295
+ };
8091
9296
  //# sourceMappingURL=index.schemas.d.ts.map