diff --git a/surfsense_web/lib/apis/image-generations-api.service.ts b/surfsense_web/lib/apis/image-generations-api.service.ts new file mode 100644 index 000000000..6aa17854d --- /dev/null +++ b/surfsense_web/lib/apis/image-generations-api.service.ts @@ -0,0 +1,23 @@ +import { + imageGenerationDetail, + imageGenerationList, +} from "@/contracts/types/image-generations.types"; +import { baseApiService } from "./base-api.service"; + +const BASE = "/api/v1/image-generations"; + +class ImageGenerationsApiService { + list = async (searchSpaceId: number, limit = 100) => { + const qs = new URLSearchParams({ + search_space_id: String(searchSpaceId), + limit: String(limit), + }).toString(); + return baseApiService.get(`${BASE}?${qs}`, imageGenerationList); + }; + + getDetail = async (imageGenId: number) => { + return baseApiService.get(`${BASE}/${imageGenId}`, imageGenerationDetail); + }; +} + +export const imageGenerationsApiService = new ImageGenerationsApiService(); diff --git a/surfsense_web/lib/apis/podcasts-api.service.ts b/surfsense_web/lib/apis/podcasts-api.service.ts index 2e13d63cc..3a18c7951 100644 --- a/surfsense_web/lib/apis/podcasts-api.service.ts +++ b/surfsense_web/lib/apis/podcasts-api.service.ts @@ -3,6 +3,7 @@ import { languageOptions, type PodcastSpec, podcastDetail, + podcastSummaryList, updateSpecRequest, voiceOption, } from "@/contracts/types/podcast.types"; @@ -14,6 +15,14 @@ const BASE = "/api/v1/podcasts"; const voiceOptionList = z.array(voiceOption); class PodcastsApiService { + list = async (searchSpaceId: number, limit = 200) => { + const qs = new URLSearchParams({ + search_space_id: String(searchSpaceId), + limit: String(limit), + }).toString(); + return baseApiService.get(`${BASE}?${qs}`, podcastSummaryList); + }; + // Full state including the deserialized brief and transcript; thin lifecycle // fields (status, spec, spec_version) also arrive live via Zero. getDetail = async (podcastId: number) => { diff --git a/surfsense_web/lib/apis/reports-api.service.ts b/surfsense_web/lib/apis/reports-api.service.ts new file mode 100644 index 000000000..bc4483f37 --- /dev/null +++ b/surfsense_web/lib/apis/reports-api.service.ts @@ -0,0 +1,16 @@ +import { reportList } from "@/contracts/types/reports.types"; +import { baseApiService } from "./base-api.service"; + +const BASE = "/api/v1/reports"; + +class ReportsApiService { + list = async (searchSpaceId: number, limit = 200) => { + const qs = new URLSearchParams({ + search_space_id: String(searchSpaceId), + limit: String(limit), + }).toString(); + return baseApiService.get(`${BASE}?${qs}`, reportList); + }; +} + +export const reportsApiService = new ReportsApiService(); diff --git a/surfsense_web/lib/apis/video-presentations-api.service.ts b/surfsense_web/lib/apis/video-presentations-api.service.ts new file mode 100644 index 000000000..ef3ac21ed --- /dev/null +++ b/surfsense_web/lib/apis/video-presentations-api.service.ts @@ -0,0 +1,16 @@ +import { videoPresentationList } from "@/contracts/types/video-presentations.types"; +import { baseApiService } from "./base-api.service"; + +const BASE = "/api/v1/video-presentations"; + +class VideoPresentationsApiService { + list = async (searchSpaceId: number, limit = 200) => { + const qs = new URLSearchParams({ + search_space_id: String(searchSpaceId), + limit: String(limit), + }).toString(); + return baseApiService.get(`${BASE}?${qs}`, videoPresentationList); + }; +} + +export const videoPresentationsApiService = new VideoPresentationsApiService();