diff --git a/surfsense_web/lib/apis/search-spaces-api.service.ts b/surfsense_web/lib/apis/search-spaces-api.service.ts index bf2464a9e..7363dc671 100644 --- a/surfsense_web/lib/apis/search-spaces-api.service.ts +++ b/surfsense_web/lib/apis/search-spaces-api.service.ts @@ -1,5 +1,8 @@ import { + type CreateSearchSpaceRequest, type GetSearchSpacesRequest, + createSearchSpaceRequest, + createSearchSpaceResponse, getSearchSpacesRequest, getSearchSpacesResponse, } from "@/contracts/types/search-space.types"; @@ -35,6 +38,24 @@ class SearchSpacesApiService { return baseApiService.get(`/api/v1/searchspaces?${queryParams}`, getSearchSpacesResponse); }; + + /** + * Create a new search space + */ + createSearchSpace = async (request: CreateSearchSpaceRequest) => { + const parsedRequest = createSearchSpaceRequest.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`, createSearchSpaceResponse, { + body: parsedRequest.data, + }); + }; } export const searchSpacesApiService = new SearchSpacesApiService();