From 109cd4f091ebdca87d1c784aa43d5d48d13ab5c2 Mon Sep 17 00:00:00 2001 From: CREDO23 Date: Tue, 16 Dec 2025 15:38:01 +0000 Subject: [PATCH] feat: add createInvite method to invites API service --- surfsense_web/lib/apis/invites-api.service.ts | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 surfsense_web/lib/apis/invites-api.service.ts diff --git a/surfsense_web/lib/apis/invites-api.service.ts b/surfsense_web/lib/apis/invites-api.service.ts new file mode 100644 index 000000000..294d2a7b5 --- /dev/null +++ b/surfsense_web/lib/apis/invites-api.service.ts @@ -0,0 +1,54 @@ +import { + type CreateInviteRequest, + type CreateInviteResponse, + type GetInvitesRequest, + type GetInvitesResponse, + type UpdateInviteRequest, + type UpdateInviteResponse, + type DeleteInviteRequest, + type DeleteInviteResponse, + type GetInviteInfoRequest, + type GetInviteInfoResponse, + type AcceptInviteRequest, + type AcceptInviteResponse, + createInviteRequest, + createInviteResponse, + getInvitesRequest, + getInvitesResponse, + updateInviteRequest, + updateInviteResponse, + deleteInviteRequest, + deleteInviteResponse, + getInviteInfoRequest, + getInviteInfoResponse, + acceptInviteRequest, + acceptInviteResponse, +} from "@/contracts/types/invites.types"; +import { ValidationError } from "@/lib/error"; +import { baseApiService } from "./base-api.service"; + +class InvitesApiService { + /** + * Create a new invite + */ + createInvite = async (request: CreateInviteRequest) => { + const parsedRequest = createInviteRequest.safeParse(request); + + if (!parsedRequest.success) { + console.error("Invalid request:", parsedRequest.error); + + const errorMessage = parsedRequest.error.errors.map((err) => err.message).join(", "); + throw new ValidationError(`Invalid request: ${errorMessage}`); + } + + return baseApiService.post( + `/api/v1/searchspaces/${parsedRequest.data.search_space_id}/invites`, + createInviteResponse, + { + body: parsedRequest.data.data, + } + ); + }; +} + +export const invitesApiService = new InvitesApiService();