export type GetApiOtCatalogArgs = {productFormat?: ('PointCloud' | 'Raster') | undefined, minx?: number | undefined, miny?: number | undefined, maxx?: number | undefined, maxy?: number | undefined, polygon?: string | undefined, detail?: boolean | undefined, outputFormat?: ('json' | 'xml') | undefined, include_federated?: boolean | undefined}; export type GetApiOtCatalogOptions = {baseUrl: string, fetch?: typeof fetch | undefined}; /** * Bounding box-based catalog search of topography datasets hosted by OpenTopography. * * GET /otCatalog */ export const getApiOtCatalog = async (args: GetApiOtCatalogArgs, options: GetApiOtCatalogOptions) => { const {baseUrl, fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() if (args.productFormat != null) query.append("productFormat", String(args.productFormat)) if (args.minx != null) query.append("minx", String(args.minx)) if (args.miny != null) query.append("miny", String(args.miny)) if (args.maxx != null) query.append("maxx", String(args.maxx)) if (args.maxy != null) query.append("maxy", String(args.maxy)) if (args.polygon != null) query.append("polygon", String(args.polygon)) if (args.detail != null) query.append("detail", String(args.detail)) if (args.outputFormat != null) query.append("outputFormat", String(args.outputFormat)) if (args.include_federated != null) query.append("include_federated", String(args.include_federated)) const url = `${baseUrl.replace(/\/+$/, '')}/otCatalog${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 undefined };