import { api } from './client'; import type { Event, EventDashboardAnalytics } from './types'; interface ListParams { organization?: string; status?: string; type?: string; page?: number; limit?: number; recordKind?: 'event' | 'activity'; activitySubtype?: 'qna' | 'quiz' | 'poll'; enrich?: boolean; } export const eventsApi = { list(params?: ListParams) { const sp = new URLSearchParams(); if (params?.organization) sp.set('organization', params.organization); if (params?.status) sp.set('status', params.status); if (params?.type) sp.set('type', params.type); if (params?.page != null) sp.set('page', String(params.page)); if (params?.limit != null) sp.set('limit', String(params.limit)); if (params?.recordKind) sp.set('recordKind', params.recordKind); if (params?.activitySubtype) sp.set('activitySubtype', params.activitySubtype); if (params?.enrich) sp.set('enrich', '1'); const q = sp.toString(); return api.get<{ events: Event[]; total: number; page: number; limit: number }>( `/events${q ? `?${q}` : ''}` ); }, get(id: string, opts?: { enrich?: boolean }) { const q = opts?.enrich ? '?enrich=1' : ''; return api.get(`/events/${id}${q}`); }, create(payload: Partial) { return api.post('/events', payload); }, update(id: string, payload: Partial) { return api.put(`/events/${id}`, payload); }, remove(id: string) { return api.delete(`/events/${id}`); }, analytics(id: string) { return api.get(`/events/${id}/analytics`); }, duplicate(id: string) { return api.post(`/events/${id}/duplicate`, {}); }, generateFromAi(payload: { description: string; organization?: string | null }) { return api.post('/events/generate-from-ai', payload); }, aiExtractPreview(payload: { description: string; organization?: string | null }) { return api.post<{ gaps: { id: string; prompt: string }[]; mergedPreview: Record; }>('/events/ai-extract-preview', payload); }, /** Forms + microsites with resolved hrefs for emailer CTA pickers */ emailerLinkTargets(eventId: string) { return api.get<{ forms: { id: string; name: string; href: string }[]; microsites: { id: string; name: string; href: string }[]; }>(`/events/${eventId}/emailer-link-targets`); }, };