export type GetApiBulkV1DatasetsDatasetSlugGranularityDataArgs = {datasetSlug: 'asset-marketcap' | 'asset-price' | 'asset-supply' | 'market', granularity: '1d' | '1w', rangeStart: string, rangeEnd: string, format?: ('csv' | 'jsonl') | undefined}; export type GetApiBulkV1DatasetsDatasetSlugGranularityDataOptions = {baseUrl?: string | undefined, fetch?: typeof fetch | undefined}; /** * Downloads bulk timeseries data for a specific dataset at a given granularity. Data can be exported in CSV or JSONL format. The response includes all metric columns configured for bulk output. Time range is limited to prevent excessive data downloads. * * GET /bulk/v1/datasets/{datasetSlug}/{granularity}/data */ export const getApiBulkV1DatasetsDatasetSlugGranularityData = async (args: GetApiBulkV1DatasetsDatasetSlugGranularityDataArgs, options?: GetApiBulkV1DatasetsDatasetSlugGranularityDataOptions) => { const {baseUrl = "https://api.messari.io", fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "text/csv") if (args.rangeStart != null) query.append("rangeStart", String(args.rangeStart)) if (args.rangeEnd != null) query.append("rangeEnd", String(args.rangeEnd)) if (args.format != null) query.append("format", String(args.format)) const url = `${baseUrl.replace(/\/+$/, '')}/bulk/v1/datasets/${encodeURIComponent(String(args.datasetSlug))}/${encodeURIComponent(String(args.granularity))}/data${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.text() };