export type GetApiMediaDownloadZipArgs = {missionId: string, siteId?: string | undefined, mediaIds?: string | undefined, includeEvidenceCrops?: 'true' | undefined}; export type GetApiMediaDownloadZipOptions = {baseUrl: string, BearerAuth?: string | undefined, fetch?: typeof fetch | undefined}; /** * Download all (optionally filtered) mission media as a streaming zip * * GET /media/download.zip * * Also accepts auth: ApiKeyAuth */ export const getApiMediaDownloadZip = async (args: GetApiMediaDownloadZipArgs, options: GetApiMediaDownloadZipOptions) => { const {baseUrl, fetch: fetchFn = fetch, BearerAuth} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/zip") if (args.missionId != null) query.append("missionId", String(args.missionId)) if (args.siteId != null) query.append("siteId", String(args.siteId)) if (args.mediaIds != null) query.append("mediaIds", String(args.mediaIds)) if (args.includeEvidenceCrops != null) query.append("includeEvidenceCrops", String(args.includeEvidenceCrops)) if (BearerAuth !== undefined) headers.set('authorization', `Bearer ${BearerAuth}`) const url = `${baseUrl.replace(/\/+$/, '')}/media/download.zip${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return res.blob() };