@usethrottle/webhook-types 0.2.0 → 0.3.0

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.
package/dist/index.d.ts CHANGED
@@ -2,17 +2,104 @@
2
2
  * @usethrottle/webhook-types
3
3
  *
4
4
  * TypeScript discriminated unions for every Throttle outbound webhook event.
5
- * Keyed by `event.type`, this lets your handler narrow `event.data` without
6
- * casts or `Record<string, unknown>` ceremony.
5
+ * Keyed by `event.type` (legacy) or top-level `type` (ThrottleEventEnvelope),
6
+ * this lets your handler narrow the payload without casts.
7
7
  *
8
- * Coverage: all 69 outbound event types are enumerated in `WebhookEventType`.
9
- * Payload shapes are typed for the 24 most-integrated events (cart, order,
10
- * payment, fulfillment, subscription core lifecycle). The remaining events
11
- * resolve to `data: Record<string, unknown>` until typed in a future release.
8
+ * Coverage: all 68 outbound event types emitted by the Throttle outbound bus
9
+ * are enumerated in `WebhookEventType`. The most-integrated events (cart,
10
+ * checkout, order, payment, fulfillment, subscription, customer core lifecycle)
11
+ * get typed `data` shapes. The remaining events resolve to
12
+ * `data: Record<string, unknown>`.
12
13
  *
13
- * Tracks the canonical event registry in `@platform/webhooks` so adding a new
14
- * event type there is a compile-time error here until the union is updated.
14
+ * Source of truth: `packages/platform-webhooks/src/outbound/events.ts` in the
15
+ * Throttle monorepo. The event registry there is the only place event names
16
+ * are allowed to be added; this package mirrors that file.
17
+ *
18
+ * Includes a Stripe-compatible signature verification helper.
19
+ *
20
+ * ## Wire format (ThrottleEventEnvelope)
21
+ *
22
+ * The outbound worker (`packages/platform-webhooks/src/outbound/dispatcher.ts`)
23
+ * delivers the following flat JSON body to your endpoint:
24
+ *
25
+ * ```json
26
+ * {
27
+ * "id": "<uuid-v7>",
28
+ * "type": "<event-type>",
29
+ * "version": "1",
30
+ * "createdAt": "<ISO-8601>",
31
+ * "mode": "test" | "live",
32
+ * "workspaceId": "<ws_...>",
33
+ * "data": { ... }
34
+ * }
35
+ * ```
36
+ *
37
+ * `version` is `'1'` for all currently-defined events; Throttle will increment
38
+ * it on breaking payload changes. `mode` disambiguates test vs live deliveries —
39
+ * a single extension `webhookUrl` can receive both from separate per-mode installs.
40
+ * The internal `isTest` flag is used for endpoint routing only and is not present
41
+ * in the delivered body. `applicationId` is also not exposed at the envelope level.
42
+ *
43
+ * **Existing `WebhookEnvelope` consumers are unaffected** — the `event:
44
+ * { type, data }` nesting in that type is an in-memory representation only.
45
+ * The wire format flattens `type` and `data` to the top level of the envelope.
46
+ *
47
+ * The legacy `WebhookEnvelope` type (with its `event: { type, data }` nesting)
48
+ * is retained for back-compat and describes the in-memory representation used
49
+ * by internal consumers; external integrations should use `ThrottleEventEnvelope`.
50
+ */
51
+ /**
52
+ * Versioned event envelope for webhook consumers and extension handlers.
53
+ * The `type` field is the discriminant key — cast to `ThrottleEvent` to
54
+ * narrow `data` without specifying the generic parameters:
55
+ *
56
+ * ```ts
57
+ * import type { ThrottleEvent, ThrottleEventOfType } from '@usethrottle/webhook-types';
58
+ *
59
+ * app.post('/webhook', (req, res) => {
60
+ * const event = req.body as ThrottleEvent;
61
+ * switch (event.type) {
62
+ * case 'order.created':
63
+ * console.log(event.data.order); // typed as OrderCreatedData['order']
64
+ * break;
65
+ * case 'payment.captured':
66
+ * console.log(event.data.paymentId, event.data.amount);
67
+ * break;
68
+ * }
69
+ * });
70
+ *
71
+ * // Or for a single-event handler:
72
+ * function onOrderCreated(ev: ThrottleEventOfType<'order.created'>) {
73
+ * console.log(ev.data.order);
74
+ * }
75
+ * ```
76
+ *
77
+ * @typeParam TType - The event type string literal, e.g. `'order.created'`
78
+ * @typeParam TData - The typed `data` payload for this event type
15
79
  */
80
+ export interface ThrottleEventEnvelope<TType extends string = string, TData = unknown> {
81
+ /** Stable event identifier (UUID v7). */
82
+ id: string;
83
+ /** Event type string — use this to narrow the `data` payload. */
84
+ type: TType;
85
+ /**
86
+ * Payload schema version. Currently `'1'` for all events.
87
+ * Throttle will increment this when a breaking field change lands.
88
+ */
89
+ version: string;
90
+ /** ISO 8601 UTC timestamp the event was emitted. */
91
+ createdAt: string;
92
+ /**
93
+ * Whether the event originated from test-mode or live-mode resources.
94
+ * Test endpoints (`isTest=true`) only receive `'test'` events;
95
+ * live endpoints only receive `'live'` events.
96
+ */
97
+ mode: 'test' | 'live';
98
+ /** Workspace that owns the event source (e.g. `"ws_..."`). */
99
+ workspaceId: string;
100
+ /** Typed event payload — shape depends on `type`. */
101
+ data: TData;
102
+ }
16
103
  export interface WebhookEnvelope<T extends WebhookEvent = WebhookEvent> {
17
104
  /** Stable event identifier (UUID v7). */
18
105
  id: string;
@@ -30,24 +117,25 @@ export interface WebhookEnvelope<T extends WebhookEvent = WebhookEvent> {
30
117
  /** Discriminated union — narrow by `event.type`. */
31
118
  event: T;
32
119
  }
33
- export interface MoneyAmount {
34
- amount: number;
35
- currency: string;
36
- }
120
+ type CartId = string;
121
+ type OrderId = string;
122
+ type PaymentId = string;
123
+ type SubscriptionId = string;
124
+ type CustomerId = string;
37
125
  export interface CartCreatedData {
38
- cartId: string;
126
+ cartId: CartId;
39
127
  sequence: number;
40
128
  applicationId: string;
41
129
  customerId: string | null;
42
130
  currency: string;
43
131
  }
44
132
  export interface CartUpdatedData {
45
- cartId: string;
133
+ cartId: CartId;
46
134
  sequence: number;
47
135
  changedFields: string[];
48
136
  }
49
137
  export interface CartItemAddedData {
50
- cartId: string;
138
+ cartId: CartId;
51
139
  sequence: number;
52
140
  itemId: string;
53
141
  name: string;
@@ -55,146 +143,357 @@ export interface CartItemAddedData {
55
143
  unitPrice: number;
56
144
  }
57
145
  export interface CartItemUpdatedData {
58
- cartId: string;
146
+ cartId: CartId;
59
147
  sequence: number;
60
148
  itemId: string;
61
149
  quantity: number;
62
150
  unitPrice: number;
63
151
  }
64
152
  export interface CartItemRemovedData {
65
- cartId: string;
153
+ cartId: CartId;
66
154
  sequence: number;
67
155
  itemId: string;
68
156
  }
69
157
  export interface CartShippingSelectedData {
70
- cartId: string;
158
+ cartId: CartId;
71
159
  sequence: number;
72
160
  methodId: string;
73
161
  displayName: string;
74
162
  rateAmount: number;
75
163
  currency: string;
76
164
  }
165
+ export interface CartShippingClearedData {
166
+ cartId: CartId;
167
+ sequence: number;
168
+ }
77
169
  export interface CartDiscountAppliedData {
78
- cartId: string;
170
+ cartId: CartId;
79
171
  sequence: number;
80
172
  code: string;
81
173
  amount: number;
82
174
  type: 'percentage' | 'fixed_amount';
83
175
  discountTotal: number;
84
176
  }
177
+ export interface CartDiscountRemovedData {
178
+ cartId: CartId;
179
+ sequence: number;
180
+ }
181
+ export interface CartTaxRecomputedData {
182
+ cartId: CartId;
183
+ sequence: number;
184
+ lineCount: number;
185
+ }
186
+ export interface CartCheckoutStartedData {
187
+ cartId: CartId;
188
+ sequence: number;
189
+ }
190
+ export interface CartConvertedData {
191
+ cartId: CartId;
192
+ sequence: number;
193
+ }
194
+ export interface CartAbandonedData {
195
+ cartId: CartId;
196
+ sequence: number;
197
+ }
198
+ export interface CartExpiredData {
199
+ cartId: CartId;
200
+ sequence: number;
201
+ }
202
+ export interface CartMergedData {
203
+ cartId: CartId;
204
+ sequence: number;
205
+ fromCartId: CartId;
206
+ toCustomerId: CustomerId;
207
+ }
208
+ export interface CheckoutSessionCreatedData {
209
+ checkoutSessionId: string;
210
+ cartId?: CartId | null;
211
+ applicationId: string;
212
+ customerId?: CustomerId | null;
213
+ }
214
+ export interface CheckoutSessionCompletedData {
215
+ checkoutSessionId: string;
216
+ orderId?: OrderId | null;
217
+ customerId?: CustomerId | null;
218
+ }
219
+ type OrderRow = Record<string, unknown>;
85
220
  export interface OrderCreatedData {
86
- orderId: string;
87
- orderNumber: string;
88
- customerId: string | null;
89
- currency: string;
90
- total: number;
91
- status: 'draft' | 'pending' | 'paid' | 'cancelled' | 'refunded';
221
+ order: OrderRow;
222
+ fromCart?: {
223
+ id: CartId;
224
+ };
225
+ sessionId?: string;
92
226
  }
93
- export interface OrderUpdatedData {
94
- orderId: string;
95
- changedFields: string[];
227
+ export interface OrderStatusTransitionData {
228
+ order: OrderRow;
229
+ status: string;
230
+ previousStatus: string;
231
+ action: string;
232
+ reason?: string | null;
96
233
  }
97
- export interface OrderCancelledData {
98
- orderId: string;
99
- reason: string | null;
234
+ export interface OrderSyncFailedData {
235
+ mappingId: string;
236
+ connectionId: string;
237
+ externalId: string;
238
+ attempts: number;
239
+ error: string;
100
240
  }
101
- export interface OrderFulfilledData {
102
- orderId: string;
103
- fulfillmentId: string;
241
+ export interface OrderSyncConflictData {
242
+ externalStatus: string;
243
+ throttleStatus: string;
244
+ dimension: string;
104
245
  }
105
- export interface PaymentCreatedData {
106
- paymentId: string;
107
- orderId: string | null;
246
+ type PaymentRow = Record<string, unknown>;
247
+ /** payment.pending / payment.authorized / payment.voided — embed the full payment row. */
248
+ export interface PaymentEnvelopeData {
249
+ payment: PaymentRow;
250
+ }
251
+ export interface PaymentAuthorizationFailedData {
252
+ payment: PaymentRow;
253
+ errorCode: string;
254
+ errorMessage: string;
255
+ }
256
+ /** payment.captured — flat payload with monetary fields. */
257
+ export interface PaymentCapturedData {
258
+ paymentId: PaymentId;
259
+ orderId: OrderId | null;
108
260
  amount: number;
109
261
  currency: string;
110
- status: 'pending' | 'authorized' | 'captured' | 'failed' | 'refunded' | 'voided';
262
+ processor?: string | null;
263
+ processorTransactionId?: string | null;
264
+ gr4vyTransactionId?: string | null;
265
+ metadata?: Record<string, unknown> | null;
111
266
  }
112
- export interface PaymentCapturedData {
113
- paymentId: string;
114
- orderId: string | null;
267
+ export interface PaymentCaptureFailedData {
268
+ paymentId: PaymentId;
269
+ orderId: OrderId | null;
115
270
  amount: number;
116
271
  currency: string;
272
+ errorCode: string;
273
+ errorMessage: string;
117
274
  }
275
+ /** payment.failed — terminal failure/decline from the processor. */
118
276
  export interface PaymentFailedData {
119
- paymentId: string;
120
- orderId: string | null;
121
- code: string;
122
- message: string;
277
+ paymentId: PaymentId;
278
+ orderId: OrderId | null;
279
+ amount?: number | null;
280
+ currency?: string | null;
281
+ code?: string | null;
282
+ message?: string | null;
283
+ errorCode?: string | null;
284
+ errorMessage?: string | null;
123
285
  }
286
+ export interface PaymentVoidFailedData {
287
+ payment: PaymentRow;
288
+ errorCode: string;
289
+ errorMessage: string;
290
+ }
291
+ /** payment.refunded / payment.partially_refunded — flat refund payload. */
124
292
  export interface PaymentRefundedData {
125
- paymentId: string;
126
- refundId: string;
293
+ paymentId: PaymentId;
294
+ orderId: OrderId | null;
295
+ refundedAmount: number;
296
+ paymentAmount: number;
297
+ currency: string;
298
+ status?: string | null;
299
+ processor?: string | null;
300
+ gr4vyRefundId?: string | null;
301
+ }
302
+ /** payment.refund_failed */
303
+ export interface PaymentRefundFailedData {
304
+ paymentId: PaymentId;
305
+ orderId: OrderId | null;
127
306
  amount: number;
128
307
  currency: string;
308
+ gr4vyRefundId?: string | null;
309
+ errorCode?: string | null;
310
+ errorMessage?: string | null;
129
311
  }
130
- export interface FulfillmentCreatedData {
131
- fulfillmentId: string;
132
- orderId: string;
133
- type: 'shipment' | 'digital' | 'access' | 'service' | 'in_person';
134
- status: 'pending' | 'in_progress' | 'fulfilled' | 'cancelled';
312
+ /** payment.vaulted a reusable payment method was stored at checkout. */
313
+ export interface PaymentVaultedData {
314
+ customerId: CustomerId;
315
+ paymentMethodId: string;
316
+ gr4vyBuyerId: string;
317
+ processor: string;
318
+ checkoutSessionId: string;
319
+ recurring?: boolean | null;
135
320
  }
136
- export interface FulfillmentShippedData {
137
- fulfillmentId: string;
138
- orderId: string;
139
- trackingNumber: string | null;
140
- carrier: string | null;
321
+ export interface PaymentDisputedData {
322
+ paymentId: PaymentId;
323
+ reason: string;
324
+ openedAt: string;
141
325
  }
142
- export interface FulfillmentDeliveredData {
143
- fulfillmentId: string;
144
- orderId: string;
145
- deliveredAt: string;
326
+ export interface PaymentDisputeClearedData {
327
+ paymentId: PaymentId;
328
+ }
329
+ type FulfillmentRow = Record<string, unknown>;
330
+ type ShipmentRow = Record<string, unknown>;
331
+ export interface FulfillmentEnvelopeData {
332
+ fulfillment: FulfillmentRow;
333
+ order: {
334
+ id: OrderId;
335
+ };
336
+ }
337
+ export interface FulfillmentShipmentShippedData {
338
+ fulfillment: FulfillmentRow;
339
+ shipment: ShipmentRow;
340
+ order: {
341
+ id: OrderId;
342
+ };
146
343
  }
147
- export interface SubscriptionCreatedData {
148
- subscriptionId: string;
149
- customerId: string;
150
- planReference: string;
151
- status: 'active' | 'trialing' | 'past_due' | 'cancelled' | 'paused';
152
- currentPeriodStart: string;
153
- currentPeriodEnd: string;
344
+ /** fulfillment.digital.delivered digital asset was delivered to the customer. */
345
+ export interface FulfillmentDigitalDeliveredData {
346
+ fulfillment: FulfillmentRow;
347
+ order: {
348
+ id: OrderId;
349
+ };
350
+ }
351
+ type SubscriptionRow = Record<string, unknown>;
352
+ type PaymentMethodRow = Record<string, unknown>;
353
+ type WorkspaceRow = Record<string, unknown>;
354
+ type ChargeRow = Record<string, unknown>;
355
+ type InvoiceRow = Record<string, unknown>;
356
+ export interface SubscriptionEnvelopeData {
357
+ subscription: SubscriptionRow;
154
358
  }
155
359
  export interface SubscriptionUpdatedData {
156
- subscriptionId: string;
157
- changedFields: string[];
360
+ subscription: SubscriptionRow;
361
+ cancelAtPeriodEnd?: boolean;
158
362
  }
159
363
  export interface SubscriptionCancelledData {
160
- subscriptionId: string;
161
- cancelledAt: string;
162
- reason: string | null;
364
+ subscription: SubscriptionRow;
365
+ reason?: string | null;
366
+ atPeriodEnd?: boolean;
367
+ lastError?: string | null;
163
368
  }
164
369
  export interface SubscriptionRenewedData {
165
- subscriptionId: string;
166
- currentPeriodStart: string;
167
- currentPeriodEnd: string;
370
+ subscription: SubscriptionRow;
371
+ payment?: PaymentRow;
372
+ order?: OrderRow;
373
+ freeRenewal?: boolean;
168
374
  }
169
- export interface CustomerCreatedData {
170
- customerId: string;
171
- email: string | null;
172
- externalId: string | null;
375
+ export interface SubscriptionPaymentFailedData {
376
+ subscription: SubscriptionRow;
377
+ attempt: number;
378
+ nextRetryAt: string | null;
379
+ lastError: string;
173
380
  }
174
- export interface CustomerUpdatedData {
175
- customerId: string;
176
- changedFields: string[];
381
+ export interface SubscriptionTrialBlockedData {
382
+ subscriptionId: SubscriptionId;
383
+ customerId: CustomerId;
384
+ paymentMethodId: string;
385
+ reason: string;
386
+ requestedTrialDays: number;
387
+ }
388
+ type CustomerRow = Record<string, unknown>;
389
+ type CartRow = Record<string, unknown>;
390
+ export interface DiscountAppliedData {
391
+ cart: CartRow;
392
+ code: string;
393
+ cartId: CartId;
394
+ }
395
+ export interface DiscountRemovedData {
396
+ cart: CartRow;
397
+ cartId: CartId;
398
+ }
399
+ export interface CustomerEnvelopeData {
400
+ customer: CustomerRow;
401
+ }
402
+ export interface CustomerPaymentMethodData {
403
+ paymentMethod: PaymentMethodRow;
404
+ }
405
+ export interface ShippingTaxProviderUnhealthyData {
406
+ connection_id: string;
407
+ axis: 'shipping' | 'tax';
408
+ provider: string;
409
+ environment: string;
410
+ application_id: string;
411
+ workspace_id: string;
412
+ consecutive_failures: number;
413
+ last_error_reason: string | null;
414
+ last_error_detail: string | null;
415
+ last_error_at: string;
416
+ fallback_policy: string;
417
+ }
418
+ export interface WorkspacePaymentMethodData {
419
+ workspace: WorkspaceRow;
420
+ paymentMethod: PaymentMethodRow;
421
+ }
422
+ export interface WorkspaceDefaultPaymentMethodChangedData {
423
+ workspace: WorkspaceRow;
424
+ paymentMethod: PaymentMethodRow;
425
+ previousPaymentMethod?: PaymentMethodRow | null;
426
+ }
427
+ export interface WorkspaceBackupPmUsedData {
428
+ workspace: WorkspaceRow;
429
+ primaryPaymentMethod: PaymentMethodRow;
430
+ backupPaymentMethod: PaymentMethodRow;
431
+ charge: ChargeRow;
432
+ }
433
+ export interface WorkspacePlatformChargeSucceededData {
434
+ workspace: WorkspaceRow;
435
+ invoice: InvoiceRow;
436
+ charge: ChargeRow;
437
+ }
438
+ export interface WorkspacePlatformChargeFailedData {
439
+ workspace: WorkspaceRow;
440
+ charge: ChargeRow;
441
+ error: string;
442
+ }
443
+ export interface WorkspaceTrialExpiredData {
444
+ workspace: WorkspaceRow;
445
+ expiredAt: string;
446
+ }
447
+ export interface InvoicePastDueData {
448
+ paymentId: string;
449
+ orderId: string;
450
+ invoiceNumber?: string | null;
451
+ daysPastDue: number;
452
+ tickFired: string;
453
+ dueDate: string;
454
+ totalAmount: number;
455
+ currency: string;
177
456
  }
178
457
  type Event<T extends string, D> = {
179
458
  type: T;
180
459
  data: D;
181
460
  };
182
- export type WebhookEvent = Event<'cart.created', CartCreatedData> | Event<'cart.updated', CartUpdatedData> | Event<'cart.item_added', CartItemAddedData> | Event<'cart.item_updated', CartItemUpdatedData> | Event<'cart.item_removed', CartItemRemovedData> | Event<'cart.shipping_selected', CartShippingSelectedData> | Event<'cart.shipping_cleared', {
183
- cartId: string;
184
- sequence: number;
185
- }> | Event<'cart.discount_applied', CartDiscountAppliedData> | Event<'cart.discount_removed', {
186
- cartId: string;
187
- sequence: number;
188
- }> | Event<'cart.tax_recomputed', {
189
- cartId: string;
190
- sequence: number;
191
- lineCount: number;
192
- }> | Event<'order.created', OrderCreatedData> | Event<'order.updated', OrderUpdatedData> | Event<'order.cancelled', OrderCancelledData> | Event<'order.fulfilled', OrderFulfilledData> | Event<'payment.created', PaymentCreatedData> | Event<'payment.authorized', PaymentCreatedData> | Event<'payment.captured', PaymentCapturedData> | Event<'payment.failed', PaymentFailedData> | Event<'payment.refunded', PaymentRefundedData> | Event<'payment.voided', PaymentCreatedData> | Event<'fulfillment.created', FulfillmentCreatedData> | Event<'fulfillment.shipped', FulfillmentShippedData> | Event<'fulfillment.delivered', FulfillmentDeliveredData> | Event<'fulfillment.cancelled', {
193
- fulfillmentId: string;
194
- orderId: string;
195
- }> | Event<'subscription.created', SubscriptionCreatedData> | Event<'subscription.updated', SubscriptionUpdatedData> | Event<'subscription.cancelled', SubscriptionCancelledData> | Event<'subscription.renewed', SubscriptionRenewedData> | Event<'customer.created', CustomerCreatedData> | Event<'customer.updated', CustomerUpdatedData> | Event<Exclude<WebhookEventType, TypedEventType>, Record<string, unknown>>;
196
- type TypedEventType = 'cart.created' | 'cart.updated' | 'cart.item_added' | 'cart.item_updated' | 'cart.item_removed' | 'cart.shipping_selected' | 'cart.shipping_cleared' | 'cart.discount_applied' | 'cart.discount_removed' | 'cart.tax_recomputed' | 'order.created' | 'order.updated' | 'order.cancelled' | 'order.fulfilled' | 'payment.created' | 'payment.authorized' | 'payment.captured' | 'payment.failed' | 'payment.refunded' | 'payment.voided' | 'fulfillment.created' | 'fulfillment.shipped' | 'fulfillment.delivered' | 'fulfillment.cancelled' | 'subscription.created' | 'subscription.updated' | 'subscription.cancelled' | 'subscription.renewed' | 'customer.created' | 'customer.updated';
197
- export type WebhookEventType = 'cart.created' | 'cart.updated' | 'cart.item_added' | 'cart.item_updated' | 'cart.item_removed' | 'cart.shipping_selected' | 'cart.shipping_cleared' | 'cart.discount_applied' | 'cart.discount_removed' | 'cart.tax_recomputed' | 'cart.checked_out' | 'order.created' | 'order.updated' | 'order.cancelled' | 'order.refunded' | 'order.fulfilled' | 'order.completed' | 'payment.created' | 'payment.authorized' | 'payment.captured' | 'payment.failed' | 'payment.refunded' | 'payment.voided' | 'payment.pending' | 'fulfillment.created' | 'fulfillment.shipped' | 'fulfillment.delivered' | 'fulfillment.cancelled' | 'fulfillment.access_granted' | 'fulfillment.access_revoked' | 'subscription.created' | 'subscription.updated' | 'subscription.cancelled' | 'subscription.renewed' | 'subscription.trial_ending' | 'subscription.trial_ended' | 'subscription.past_due' | 'subscription.recovered' | 'subscription.paused' | 'subscription.resumed' | 'discount.created' | 'discount.updated' | 'discount.archived' | 'discount.redeemed' | 'customer.created' | 'customer.updated' | 'customer.deleted' | 'invoice.created' | 'invoice.paid' | 'invoice.overdue' | 'invoice.disputed' | 'invoice.refunded' | 'invoice.aged' | 'shipping.rate_calculated' | 'tax.calculated' | 'tax.recalculated' | 'workspace.payment_method.added' | 'workspace.payment_method.removed' | 'workspace.payment_method.set_default' | 'workspace.payment_method.set_backup' | 'platform.invoice.created' | 'platform.invoice.paid' | 'platform.invoice.failed' | 'platform.charge.refunded' | 'workspace.created' | 'workspace.trial_started' | 'workspace.trial_ending' | 'workspace.trial_ended' | 'workspace.subscribed';
461
+ export type WebhookEvent = Event<'cart.created', CartCreatedData> | Event<'cart.updated', CartUpdatedData> | Event<'cart.item_added', CartItemAddedData> | Event<'cart.item_updated', CartItemUpdatedData> | Event<'cart.item_removed', CartItemRemovedData> | Event<'cart.shipping_selected', CartShippingSelectedData> | Event<'cart.shipping_cleared', CartShippingClearedData> | Event<'cart.discount_applied', CartDiscountAppliedData> | Event<'cart.discount_removed', CartDiscountRemovedData> | Event<'cart.tax_recomputed', CartTaxRecomputedData> | Event<'cart.checkout_started', CartCheckoutStartedData> | Event<'cart.converted', CartConvertedData> | Event<'cart.abandoned', CartAbandonedData> | Event<'cart.expired', CartExpiredData> | Event<'cart.merged', CartMergedData> | Event<'checkout.session.created', CheckoutSessionCreatedData> | Event<'checkout.session.completed', CheckoutSessionCompletedData> | Event<'order.created', OrderCreatedData> | Event<'order.updated', OrderStatusTransitionData> | Event<'order.completed', OrderStatusTransitionData> | Event<'order.cancelled', OrderStatusTransitionData> | Event<'order.closed', OrderStatusTransitionData> | Event<'order.sync_failed', OrderSyncFailedData> | Event<'order.sync_conflict', OrderSyncConflictData> | Event<'payment.pending', PaymentEnvelopeData> | Event<'payment.authorized', PaymentEnvelopeData> | Event<'payment.authorization_failed', PaymentAuthorizationFailedData> | Event<'payment.captured', PaymentCapturedData> | Event<'payment.capture_failed', PaymentCaptureFailedData> | Event<'payment.failed', PaymentFailedData> | Event<'payment.voided', PaymentEnvelopeData> | Event<'payment.void_failed', PaymentVoidFailedData> | Event<'payment.refunded', PaymentRefundedData> | Event<'payment.partially_refunded', PaymentRefundedData> | Event<'payment.refund_failed', PaymentRefundFailedData> | Event<'payment.vaulted', PaymentVaultedData> | Event<'payment.disputed', PaymentDisputedData> | Event<'payment.dispute_cleared', PaymentDisputeClearedData> | Event<'fulfillment.created', FulfillmentEnvelopeData> | Event<'fulfillment.completed', FulfillmentEnvelopeData> | Event<'fulfillment.cancelled', FulfillmentEnvelopeData> | Event<'fulfillment.shipment.shipped', FulfillmentShipmentShippedData> | Event<'fulfillment.shipment.delivered', FulfillmentEnvelopeData> | Event<'fulfillment.digital.delivered', FulfillmentDigitalDeliveredData> | Event<'subscription.created', SubscriptionEnvelopeData> | Event<'subscription.activated', SubscriptionEnvelopeData> | Event<'subscription.updated', SubscriptionUpdatedData> | Event<'subscription.paused', SubscriptionEnvelopeData> | Event<'subscription.resumed', SubscriptionEnvelopeData> | Event<'subscription.cancelled', SubscriptionCancelledData> | Event<'subscription.renewed', SubscriptionRenewedData> | Event<'subscription.past_due', SubscriptionEnvelopeData> | Event<'subscription.payment_failed', SubscriptionPaymentFailedData> | Event<'subscription.create_failed', SubscriptionEnvelopeData> | Event<'subscription.trial_blocked', SubscriptionTrialBlockedData> | Event<'discount.applied', DiscountAppliedData> | Event<'discount.removed', DiscountRemovedData> | Event<'customer.created', CustomerEnvelopeData> | Event<'customer.updated', CustomerEnvelopeData> | Event<'customer.deleted', CustomerEnvelopeData> | Event<'customer.payment_method_added', CustomerPaymentMethodData> | Event<'customer.payment_method_removed', CustomerPaymentMethodData> | Event<'invoice.past_due', InvoicePastDueData> | Event<'shipping_tax.provider_connection.unhealthy', ShippingTaxProviderUnhealthyData> | Event<'workspace.payment_method.added', WorkspacePaymentMethodData> | Event<'workspace.payment_method.removed', WorkspacePaymentMethodData> | Event<'workspace.payment_method.default_changed', WorkspaceDefaultPaymentMethodChangedData> | Event<'workspace.payment_method.backup_set', WorkspacePaymentMethodData> | Event<'workspace.payment_method.backup_used', WorkspaceBackupPmUsedData> | Event<'workspace.platform_charge.succeeded', WorkspacePlatformChargeSucceededData> | Event<'workspace.platform_charge.failed', WorkspacePlatformChargeFailedData> | Event<'workspace.trial_expired', WorkspaceTrialExpiredData>;
462
+ /** Union of every event type string emitted by the Throttle outbound bus. */
463
+ export type WebhookEventType = WebhookEvent['type'];
464
+ /**
465
+ * A `ThrottleEventEnvelope` over the full `WebhookEvent` discriminated union.
466
+ * Cast incoming webhook bodies to this type and switch on `event.type` to
467
+ * get fully-narrowed `event.data` access with no explicit casts.
468
+ *
469
+ * ```ts
470
+ * const event = req.body as ThrottleEvent;
471
+ * if (event.type === 'order.created') {
472
+ * // event.data is OrderCreatedData here
473
+ * }
474
+ * ```
475
+ */
476
+ export type ThrottleEvent = {
477
+ [E in WebhookEvent as E['type']]: ThrottleEventEnvelope<E['type'], E['data']>;
478
+ }[WebhookEvent['type']];
479
+ /**
480
+ * Narrows a `ThrottleEvent` to a specific event type.
481
+ * Useful for single-event handler signatures:
482
+ *
483
+ * ```ts
484
+ * function onPaymentCaptured(ev: ThrottleEventOfType<'payment.captured'>) {
485
+ * console.log(ev.data.paymentId, ev.data.amount);
486
+ * }
487
+ * ```
488
+ */
489
+ export type ThrottleEventOfType<T extends WebhookEventType> = Extract<ThrottleEvent, {
490
+ type: T;
491
+ }>;
492
+ /** Runtime mirror of the WebhookEvent union — keep in lockstep with it.
493
+ * The `satisfies` clause makes tsc fail if a string is not a real union member.
494
+ * The parity test (event-parity.test.ts) makes it fail if any entry is missing
495
+ * from the @core/scopes canonical registry. */
496
+ export declare const WEBHOOK_EVENT_TYPES: readonly ["cart.created", "cart.updated", "cart.item_added", "cart.item_updated", "cart.item_removed", "cart.shipping_selected", "cart.shipping_cleared", "cart.discount_applied", "cart.discount_removed", "cart.tax_recomputed", "cart.checkout_started", "cart.converted", "cart.abandoned", "cart.expired", "cart.merged", "checkout.session.created", "checkout.session.completed", "order.created", "order.updated", "order.completed", "order.cancelled", "order.closed", "order.sync_failed", "order.sync_conflict", "payment.pending", "payment.authorized", "payment.authorization_failed", "payment.captured", "payment.capture_failed", "payment.failed", "payment.voided", "payment.void_failed", "payment.refunded", "payment.partially_refunded", "payment.refund_failed", "payment.vaulted", "payment.disputed", "payment.dispute_cleared", "fulfillment.created", "fulfillment.completed", "fulfillment.cancelled", "fulfillment.shipment.shipped", "fulfillment.shipment.delivered", "fulfillment.digital.delivered", "subscription.created", "subscription.activated", "subscription.updated", "subscription.paused", "subscription.resumed", "subscription.cancelled", "subscription.renewed", "subscription.past_due", "subscription.payment_failed", "subscription.create_failed", "subscription.trial_blocked", "discount.applied", "discount.removed", "customer.created", "customer.updated", "customer.deleted", "customer.payment_method_added", "customer.payment_method_removed", "invoice.past_due", "shipping_tax.provider_connection.unhealthy", "workspace.payment_method.added", "workspace.payment_method.removed", "workspace.payment_method.default_changed", "workspace.payment_method.backup_set", "workspace.payment_method.backup_used", "workspace.platform_charge.succeeded", "workspace.platform_charge.failed", "workspace.trial_expired"];
198
497
  /**
199
498
  * Verifies the `Throttle-Signature` header against the raw request body.
200
499
  * Use this from your webhook handler BEFORE parsing the JSON.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY;IACpE,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,aAAa,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,KAAK,EAAE,CAAC,CAAC;CACV;AAMD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AACD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,YAAY,GAAG,cAAc,CAAC;IACpC,aAAa,EAAE,MAAM,CAAC;CACvB;AACD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,CAAC;CACjE;AACD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AACD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AACD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;AACD,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;CAClF;AACD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AACD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;IAClE,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW,CAAC;CAC/D;AACD,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AACD,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AACD,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;IACpE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AACD,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AACD,MAAM,WAAW,yBAAyB;IACxC,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AACD,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AACD,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AACD,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAMD,KAAK,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,IAAI;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC;AAEvD,MAAM,MAAM,YAAY,GACpB,KAAK,CAAC,cAAc,EAAE,eAAe,CAAC,GACtC,KAAK,CAAC,cAAc,EAAE,eAAe,CAAC,GACtC,KAAK,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,GAC3C,KAAK,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,GAC/C,KAAK,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,GAC/C,KAAK,CAAC,wBAAwB,EAAE,wBAAwB,CAAC,GACzD,KAAK,CAAC,uBAAuB,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,GACpE,KAAK,CAAC,uBAAuB,EAAE,uBAAuB,CAAC,GACvD,KAAK,CAAC,uBAAuB,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,GACpE,KAAK,CAAC,qBAAqB,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,GACrF,KAAK,CAAC,eAAe,EAAE,gBAAgB,CAAC,GACxC,KAAK,CAAC,eAAe,EAAE,gBAAgB,CAAC,GACxC,KAAK,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,GAC5C,KAAK,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,GAC5C,KAAK,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,GAC5C,KAAK,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,GAC/C,KAAK,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,GAC9C,KAAK,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,GAC1C,KAAK,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,GAC9C,KAAK,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,GAC3C,KAAK,CAAC,qBAAqB,EAAE,sBAAsB,CAAC,GACpD,KAAK,CAAC,qBAAqB,EAAE,sBAAsB,CAAC,GACpD,KAAK,CAAC,uBAAuB,EAAE,wBAAwB,CAAC,GACxD,KAAK,CAAC,uBAAuB,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAC1E,KAAK,CAAC,sBAAsB,EAAE,uBAAuB,CAAC,GACtD,KAAK,CAAC,sBAAsB,EAAE,uBAAuB,CAAC,GACtD,KAAK,CAAC,wBAAwB,EAAE,yBAAyB,CAAC,GAC1D,KAAK,CAAC,sBAAsB,EAAE,uBAAuB,CAAC,GACtD,KAAK,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,GAC9C,KAAK,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,GAI9C,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAE9E,KAAK,cAAc,GACf,cAAc,GACd,cAAc,GACd,iBAAiB,GACjB,mBAAmB,GACnB,mBAAmB,GACnB,wBAAwB,GACxB,uBAAuB,GACvB,uBAAuB,GACvB,uBAAuB,GACvB,qBAAqB,GACrB,eAAe,GACf,eAAe,GACf,iBAAiB,GACjB,iBAAiB,GACjB,iBAAiB,GACjB,oBAAoB,GACpB,kBAAkB,GAClB,gBAAgB,GAChB,kBAAkB,GAClB,gBAAgB,GAChB,qBAAqB,GACrB,qBAAqB,GACrB,uBAAuB,GACvB,uBAAuB,GACvB,sBAAsB,GACtB,sBAAsB,GACtB,wBAAwB,GACxB,sBAAsB,GACtB,kBAAkB,GAClB,kBAAkB,CAAC;AAIvB,MAAM,MAAM,gBAAgB,GACxB,cAAc,GACd,cAAc,GACd,iBAAiB,GACjB,mBAAmB,GACnB,mBAAmB,GACnB,wBAAwB,GACxB,uBAAuB,GACvB,uBAAuB,GACvB,uBAAuB,GACvB,qBAAqB,GACrB,kBAAkB,GAClB,eAAe,GACf,eAAe,GACf,iBAAiB,GACjB,gBAAgB,GAChB,iBAAiB,GACjB,iBAAiB,GACjB,iBAAiB,GACjB,oBAAoB,GACpB,kBAAkB,GAClB,gBAAgB,GAChB,kBAAkB,GAClB,gBAAgB,GAChB,iBAAiB,GACjB,qBAAqB,GACrB,qBAAqB,GACrB,uBAAuB,GACvB,uBAAuB,GACvB,4BAA4B,GAC5B,4BAA4B,GAC5B,sBAAsB,GACtB,sBAAsB,GACtB,wBAAwB,GACxB,sBAAsB,GACtB,2BAA2B,GAC3B,0BAA0B,GAC1B,uBAAuB,GACvB,wBAAwB,GACxB,qBAAqB,GACrB,sBAAsB,GACtB,kBAAkB,GAClB,kBAAkB,GAClB,mBAAmB,GACnB,mBAAmB,GACnB,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,GAClB,iBAAiB,GACjB,cAAc,GACd,iBAAiB,GACjB,kBAAkB,GAClB,kBAAkB,GAClB,cAAc,GACd,0BAA0B,GAC1B,gBAAgB,GAChB,kBAAkB,GAClB,gCAAgC,GAChC,kCAAkC,GAClC,sCAAsC,GACtC,qCAAqC,GACrC,0BAA0B,GAC1B,uBAAuB,GACvB,yBAAyB,GACzB,0BAA0B,GAC1B,mBAAmB,GACnB,yBAAyB,GACzB,wBAAwB,GACxB,uBAAuB,GACvB,sBAAsB,CAAC;AAQ3B;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,OAAO,CAuBV"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -2,21 +2,102 @@
2
2
  * @usethrottle/webhook-types
3
3
  *
4
4
  * TypeScript discriminated unions for every Throttle outbound webhook event.
5
- * Keyed by `event.type`, this lets your handler narrow `event.data` without
6
- * casts or `Record<string, unknown>` ceremony.
5
+ * Keyed by `event.type` (legacy) or top-level `type` (ThrottleEventEnvelope),
6
+ * this lets your handler narrow the payload without casts.
7
7
  *
8
- * Coverage: all 69 outbound event types are enumerated in `WebhookEventType`.
9
- * Payload shapes are typed for the 24 most-integrated events (cart, order,
10
- * payment, fulfillment, subscription core lifecycle). The remaining events
11
- * resolve to `data: Record<string, unknown>` until typed in a future release.
8
+ * Coverage: all 68 outbound event types emitted by the Throttle outbound bus
9
+ * are enumerated in `WebhookEventType`. The most-integrated events (cart,
10
+ * checkout, order, payment, fulfillment, subscription, customer core lifecycle)
11
+ * get typed `data` shapes. The remaining events resolve to
12
+ * `data: Record<string, unknown>`.
12
13
  *
13
- * Tracks the canonical event registry in `@platform/webhooks` so adding a new
14
- * event type there is a compile-time error here until the union is updated.
14
+ * Source of truth: `packages/platform-webhooks/src/outbound/events.ts` in the
15
+ * Throttle monorepo. The event registry there is the only place event names
16
+ * are allowed to be added; this package mirrors that file.
17
+ *
18
+ * Includes a Stripe-compatible signature verification helper.
19
+ *
20
+ * ## Wire format (ThrottleEventEnvelope)
21
+ *
22
+ * The outbound worker (`packages/platform-webhooks/src/outbound/dispatcher.ts`)
23
+ * delivers the following flat JSON body to your endpoint:
24
+ *
25
+ * ```json
26
+ * {
27
+ * "id": "<uuid-v7>",
28
+ * "type": "<event-type>",
29
+ * "version": "1",
30
+ * "createdAt": "<ISO-8601>",
31
+ * "mode": "test" | "live",
32
+ * "workspaceId": "<ws_...>",
33
+ * "data": { ... }
34
+ * }
35
+ * ```
36
+ *
37
+ * `version` is `'1'` for all currently-defined events; Throttle will increment
38
+ * it on breaking payload changes. `mode` disambiguates test vs live deliveries —
39
+ * a single extension `webhookUrl` can receive both from separate per-mode installs.
40
+ * The internal `isTest` flag is used for endpoint routing only and is not present
41
+ * in the delivered body. `applicationId` is also not exposed at the envelope level.
42
+ *
43
+ * **Existing `WebhookEnvelope` consumers are unaffected** — the `event:
44
+ * { type, data }` nesting in that type is an in-memory representation only.
45
+ * The wire format flattens `type` and `data` to the top level of the envelope.
46
+ *
47
+ * The legacy `WebhookEnvelope` type (with its `event: { type, data }` nesting)
48
+ * is retained for back-compat and describes the in-memory representation used
49
+ * by internal consumers; external integrations should use `ThrottleEventEnvelope`.
15
50
  */
51
+ import { createHmac, timingSafeEqual } from 'node:crypto';
52
+ /** Runtime mirror of the WebhookEvent union — keep in lockstep with it.
53
+ * The `satisfies` clause makes tsc fail if a string is not a real union member.
54
+ * The parity test (event-parity.test.ts) makes it fail if any entry is missing
55
+ * from the @core/scopes canonical registry. */
56
+ export const WEBHOOK_EVENT_TYPES = [
57
+ // Cart
58
+ 'cart.created', 'cart.updated', 'cart.item_added', 'cart.item_updated', 'cart.item_removed',
59
+ 'cart.shipping_selected', 'cart.shipping_cleared', 'cart.discount_applied', 'cart.discount_removed',
60
+ 'cart.tax_recomputed', 'cart.checkout_started', 'cart.converted', 'cart.abandoned', 'cart.expired', 'cart.merged',
61
+ // Checkout session
62
+ 'checkout.session.created', 'checkout.session.completed',
63
+ // Order
64
+ 'order.created', 'order.updated', 'order.completed', 'order.cancelled', 'order.closed',
65
+ 'order.sync_failed', 'order.sync_conflict',
66
+ // Payment
67
+ 'payment.pending', 'payment.authorized', 'payment.authorization_failed', 'payment.captured',
68
+ 'payment.capture_failed', 'payment.failed', 'payment.voided', 'payment.void_failed',
69
+ 'payment.refunded', 'payment.partially_refunded', 'payment.refund_failed', 'payment.vaulted',
70
+ 'payment.disputed', 'payment.dispute_cleared',
71
+ // Fulfillment
72
+ 'fulfillment.created', 'fulfillment.completed', 'fulfillment.cancelled',
73
+ 'fulfillment.shipment.shipped', 'fulfillment.shipment.delivered',
74
+ 'fulfillment.digital.delivered',
75
+ // Subscription
76
+ 'subscription.created', 'subscription.activated', 'subscription.updated', 'subscription.paused',
77
+ 'subscription.resumed', 'subscription.cancelled', 'subscription.renewed', 'subscription.past_due',
78
+ 'subscription.payment_failed', 'subscription.create_failed', 'subscription.trial_blocked',
79
+ // Discount
80
+ 'discount.applied', 'discount.removed',
81
+ // Customer
82
+ 'customer.created', 'customer.updated', 'customer.deleted',
83
+ 'customer.payment_method_added', 'customer.payment_method_removed',
84
+ // AR / Net30 invoice
85
+ 'invoice.past_due',
86
+ // Shipping & tax provider health
87
+ 'shipping_tax.provider_connection.unhealthy',
88
+ // Workspace payment methods (platform-billing)
89
+ 'workspace.payment_method.added', 'workspace.payment_method.removed',
90
+ 'workspace.payment_method.default_changed', 'workspace.payment_method.backup_set',
91
+ 'workspace.payment_method.backup_used',
92
+ // Platform billing charges
93
+ 'workspace.platform_charge.succeeded', 'workspace.platform_charge.failed',
94
+ // Workspace lifecycle
95
+ 'workspace.trial_expired',
96
+ ];
97
+ const _assertAllEventsListed = true;
16
98
  // ----------------------------------------------------------------------------
17
99
  // Signature verification (Stripe-compatible scheme)
18
100
  // ----------------------------------------------------------------------------
19
- import { createHmac, timingSafeEqual } from 'node:crypto';
20
101
  /**
21
102
  * Verifies the `Throttle-Signature` header against the raw request body.
22
103
  * Use this from your webhook handler BEFORE parsing the JSON.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAkUH,+EAA+E;AAC/E,oDAAoD;AACpD,+EAA+E;AAE/E,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE1D;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAKtC;IACC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC;IAEjE,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAC9B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC1B,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/B,CAAC,CAAC,CACH,CAAC;IAEF,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IAExC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9C,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,gBAAgB;QAAE,OAAO,KAAK,CAAC;IAE7E,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC;SAC1C,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;SAC/B,MAAM,CAAC,KAAK,CAAC,CAAC;IAEjB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAC9C,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1D,OAAO,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AACjE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@usethrottle/webhook-types",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "TypeScript discriminated unions for every Throttle outbound webhook event.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -16,6 +16,7 @@
16
16
  "test": "tsc --noEmit && vitest run --passWithNoTests"
17
17
  },
18
18
  "devDependencies": {
19
+ "@core/scopes": "workspace:*",
19
20
  "@types/node": "^20.0.0",
20
21
  "typescript": "^5.7.0",
21
22
  "vitest": "^2.1.9"