in packages/cloudquery-usage/src/cloudquery-api.ts [9:41]
export async function getPluginUsageSummary(
config: Config,
dateRange: DateRange,
): Promise<UsageSummaryResponseForPaidRows> {
const { cloudqueryTeam, cloudqueryApiKey } = config;
const { start, end } = dateRange;
const url = new URL(
`https://api.cloudquery.io/teams/${cloudqueryTeam}/usage-summary/plugin`,
);
url.searchParams.set('metrics', 'paid_rows');
url.searchParams.set('aggregation_period', 'day');
url.searchParams.set('start', start.toISOString());
url.searchParams.set('end', end.toISOString());
const response = await fetch(url, {
method: 'GET',
headers: {
Authorization: `Bearer ${cloudqueryApiKey}`,
},
});
if (response.status !== 200) {
throw new Error(
`Received status code ${response.status} from ${url.toString()}`,
);
}
// TODO validate with zod, or similar
return (await response.json()) as UsageSummaryResponseForPaidRows;
}