74 lines
1.7 KiB
TypeScript
74 lines
1.7 KiB
TypeScript
// ============================================================================
|
|
// Placements API
|
|
// ============================================================================
|
|
|
|
import { api } from "./client";
|
|
import type {
|
|
Placement,
|
|
PlacementQueryParams,
|
|
PlacementCreateRequest,
|
|
PlacementUpdateRequest,
|
|
PlacementsListResponse,
|
|
ViewsFetchResponse,
|
|
ViewsHistoryResponse,
|
|
SuccessResponse,
|
|
} from "@/lib/types/api";
|
|
|
|
export const placementsApi = {
|
|
/**
|
|
* Get list of placements
|
|
*/
|
|
list: (params?: PlacementQueryParams) =>
|
|
api.get<PlacementsListResponse>("/placements", { params }),
|
|
|
|
/**
|
|
* Get placement details
|
|
*/
|
|
get: (id: string) => api.get<Placement>(`/placements/${id}`),
|
|
|
|
/**
|
|
* Create new placement
|
|
*/
|
|
create: (data: PlacementCreateRequest) =>
|
|
api.post<Placement>("/placements", data),
|
|
|
|
/**
|
|
* Update placement
|
|
*/
|
|
update: (id: string, data: PlacementUpdateRequest) =>
|
|
api.patch<Placement>(`/placements/${id}`, data),
|
|
|
|
/**
|
|
* Delete placement
|
|
*/
|
|
delete: (id: string) => api.delete<SuccessResponse>(`/placements/${id}`),
|
|
|
|
/**
|
|
* Fetch views for placement
|
|
*/
|
|
fetchViews: (id: string) =>
|
|
api.post<ViewsFetchResponse>(`/placements/${id}/views/fetch`),
|
|
|
|
/**
|
|
* Get views history for placement
|
|
*/
|
|
viewsHistory: (
|
|
id: string,
|
|
params?: { from_date?: string; to_date?: string }
|
|
) =>
|
|
api.get<ViewsHistoryResponse>(`/placements/${id}/views/history`, {
|
|
params,
|
|
}),
|
|
|
|
/**
|
|
* Set views manually
|
|
*/
|
|
setViewsManually: (id: string, views_count: number) =>
|
|
api.post<Placement>(`/placements/${id}/views/manual`, null, {
|
|
params: { views_count },
|
|
}),
|
|
};
|
|
|
|
// Keep purchasesApi as an alias for backwards compatibility
|
|
export const purchasesApi = placementsApi;
|