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_'",