78 lines
2.2 KiB
TypeScript
78 lines
2.2 KiB
TypeScript
// ============================================================================
|
|
// Analytics API
|
|
// ============================================================================
|
|
|
|
import { api } from "./client";
|
|
import type {
|
|
PlacementAnalyticsItem,
|
|
CreativeAnalyticsItem,
|
|
ChannelAnalyticsItem,
|
|
SpendingAnalytics,
|
|
AnalyticsQueryParams,
|
|
SpendingAnalyticsQueryParams,
|
|
OverviewAnalytics,
|
|
OverviewAnalyticsQueryParams,
|
|
ProjectsAnalyticsResponse,
|
|
ProjectsAnalyticsQueryParams,
|
|
PlacementsAnalyticsQueryParams,
|
|
} from "@/lib/types/api";
|
|
|
|
export const analyticsApi = {
|
|
/**
|
|
* Get placements analytics (paginated with all fields)
|
|
*/
|
|
placements: (workspaceId: string, params?: PlacementsAnalyticsQueryParams) =>
|
|
api.get<{
|
|
items: PlacementAnalyticsItem[];
|
|
total: number;
|
|
page: number;
|
|
size: number;
|
|
pages: number;
|
|
}>(`/workspaces/${workspaceId}/analytics/placements`, { params }),
|
|
|
|
/**
|
|
* Get creatives analytics
|
|
*/
|
|
creatives: (workspaceId: string, params?: AnalyticsQueryParams) =>
|
|
api.get<{ items: CreativeAnalyticsItem[]; total: number; page: number; size: number; pages: number }>(
|
|
`/workspaces/${workspaceId}/analytics/creatives`,
|
|
{ params }
|
|
),
|
|
|
|
/**
|
|
* Get channels analytics
|
|
*/
|
|
channels: (workspaceId: string, params?: AnalyticsQueryParams) =>
|
|
api.get<{ items: ChannelAnalyticsItem[]; total: number; page: number; size: number; pages: number }>(
|
|
`/workspaces/${workspaceId}/analytics/channels`,
|
|
{ params }
|
|
),
|
|
|
|
/**
|
|
* Get spending analytics (time-series data)
|
|
*/
|
|
spending: (workspaceId: string, params?: SpendingAnalyticsQueryParams) =>
|
|
api.get<SpendingAnalytics>(
|
|
`/workspaces/${workspaceId}/analytics/spending`,
|
|
{ params }
|
|
),
|
|
|
|
/**
|
|
* Overview analytics for dashboard
|
|
*/
|
|
overview: (workspaceId: string, params?: OverviewAnalyticsQueryParams) =>
|
|
api.get<OverviewAnalytics>(
|
|
`/workspaces/${workspaceId}/analytics/overview`,
|
|
{ params }
|
|
),
|
|
|
|
/**
|
|
* Get projects analytics (chart data with grouping)
|
|
*/
|
|
projects: (workspaceId: string, params: ProjectsAnalyticsQueryParams) =>
|
|
api.get<ProjectsAnalyticsResponse>(
|
|
`/workspaces/${workspaceId}/analytics/projects`,
|
|
{ params }
|
|
),
|
|
};
|