From d39c8029023bef7768f085f7f8c63c73911cd7cc Mon Sep 17 00:00:00 2001 From: Phillip Ho Date: Thu, 26 Jun 2025 18:32:51 +0800 Subject: [PATCH] chore: webhook payload must be an array --- .changeset/huge-eggs-drop.md | 5 +++++ packages/service-utils/src/node/webhookProducer.ts | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 .changeset/huge-eggs-drop.md diff --git a/.changeset/huge-eggs-drop.md b/.changeset/huge-eggs-drop.md new file mode 100644 index 00000000000..e80b210b3c0 --- /dev/null +++ b/.changeset/huge-eggs-drop.md @@ -0,0 +1,5 @@ +--- +"@thirdweb-dev/service-utils": patch +--- + +chore: require webhook payload to be an array diff --git a/packages/service-utils/src/node/webhookProducer.ts b/packages/service-utils/src/node/webhookProducer.ts index f4d521feaff..5eaa341e0f1 100644 --- a/packages/service-utils/src/node/webhookProducer.ts +++ b/packages/service-utils/src/node/webhookProducer.ts @@ -6,11 +6,14 @@ interface WebhookEvent extends Record { id?: `evt_${string}`; teamId: string; projectId?: string; + /** + * The timestamp your event was triggered at. + */ createdAt?: Date; /** - * This should match your model defined in api-server. + * An array of your model (defined in api-server). Must not be empty. */ - payload: Record; + payload: Record[]; } /** @@ -39,6 +42,7 @@ export class WebhookEventProducer { */ async sendEvents(topic: string, events: WebhookEvent[]): Promise { const parsedEvents: WebhookEvent[] = events.map((event) => { + assert(event.payload.length > 0, "payload must not be empty"); assert( event.teamId.startsWith("team_"), "teamId must start with 'team_'",