From 1c6d9c580cb7e4c73410300450c1ad79ace2a2e6 Mon Sep 17 00:00:00 2001 From: Tom Milewski Date: Wed, 10 Sep 2025 12:52:50 -0400 Subject: [PATCH 1/3] feat: Create bulk invitations --- .changeset/full-ducks-run.md | 5 +++++ packages/backend/src/api/endpoints/InvitationApi.ts | 10 ++++++++++ 2 files changed, 15 insertions(+) create mode 100644 .changeset/full-ducks-run.md diff --git a/.changeset/full-ducks-run.md b/.changeset/full-ducks-run.md new file mode 100644 index 00000000000..3bcda5640a4 --- /dev/null +++ b/.changeset/full-ducks-run.md @@ -0,0 +1,5 @@ +--- +'@clerk/backend': minor +--- + +Adds the ability to create bulk invitations with `.createInvitationBulk([{...}])` diff --git a/packages/backend/src/api/endpoints/InvitationApi.ts b/packages/backend/src/api/endpoints/InvitationApi.ts index 9f234eb2e9f..6fb042bdb65 100644 --- a/packages/backend/src/api/endpoints/InvitationApi.ts +++ b/packages/backend/src/api/endpoints/InvitationApi.ts @@ -20,6 +20,8 @@ type CreateParams = { templateSlug: TemplateSlug; }; +type CreateBulkParams = Array; + type GetInvitationListParams = ClerkPaginationRequest<{ /** * Filters invitations based on their status. @@ -64,6 +66,14 @@ export class InvitationAPI extends AbstractAPI { }); } + public async createInvitationBulk(params: CreateBulkParams) { + return this.request({ + method: 'POST', + path: basePath, + bodyParams: params, + }); + } + public async revokeInvitation(invitationId: string) { this.requireId(invitationId); return this.request({ From 8761c399e2a048a67d47b4111496a49a180f0e29 Mon Sep 17 00:00:00 2001 From: Tom Milewski Date: Wed, 10 Sep 2025 12:55:24 -0400 Subject: [PATCH 2/3] fix: Make templateSlug optional --- packages/backend/src/api/endpoints/InvitationApi.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/backend/src/api/endpoints/InvitationApi.ts b/packages/backend/src/api/endpoints/InvitationApi.ts index 6fb042bdb65..a93a8821db5 100644 --- a/packages/backend/src/api/endpoints/InvitationApi.ts +++ b/packages/backend/src/api/endpoints/InvitationApi.ts @@ -17,7 +17,7 @@ type CreateParams = { notify?: boolean; publicMetadata?: UserPublicMetadata; redirectUrl?: string; - templateSlug: TemplateSlug; + templateSlug?: TemplateSlug; }; type CreateBulkParams = Array; From c36dbe21b48bf6617713bcaee1295b5b25a4da20 Mon Sep 17 00:00:00 2001 From: Tom Milewski Date: Wed, 10 Sep 2025 13:05:17 -0400 Subject: [PATCH 3/3] fix: Update bulk path --- packages/backend/src/api/endpoints/InvitationApi.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/backend/src/api/endpoints/InvitationApi.ts b/packages/backend/src/api/endpoints/InvitationApi.ts index a93a8821db5..f869234ec99 100644 --- a/packages/backend/src/api/endpoints/InvitationApi.ts +++ b/packages/backend/src/api/endpoints/InvitationApi.ts @@ -69,7 +69,7 @@ export class InvitationAPI extends AbstractAPI { public async createInvitationBulk(params: CreateBulkParams) { return this.request({ method: 'POST', - path: basePath, + path: joinPaths(basePath, 'bulk'), bodyParams: params, }); }