import { apiClient } from './client' import type { PsaConnectionResponse, PsaConnectionCreate, PsaConnectionUpdate, PsaConnectionTestResponse } from '@/types' import type { TicketLinkResponse, PSATicketSearchResult, PSATicketInfo, PSATicketStatusItem, PsaPreviewResponse, PsaPostResponse, PsaPostLogEntry, PsaMemberResponse, PsaMemberMappingResponse, AutoMatchResult } from '@/types/integrations' export const integrationsApi = { getConnection: () => apiClient.get('/integrations/psa/connections').then(r => r.data), createConnection: (data: PsaConnectionCreate) => apiClient.post('/integrations/psa/connections', data).then(r => r.data), updateConnection: (id: string, data: PsaConnectionUpdate) => apiClient.put(`/integrations/psa/connections/${id}`, data).then(r => r.data), deleteConnection: (id: string) => apiClient.delete(`/integrations/psa/connections/${id}`), testConnection: (id: string) => apiClient.post(`/integrations/psa/connections/${id}/test`).then(r => r.data), searchTickets: (params: { query?: string; board_id?: number; include_closed?: boolean }) => apiClient.get('/integrations/psa/tickets/search', { params }).then(r => r.data), getTicket: (id: string) => apiClient.get(`/integrations/psa/tickets/${id}`).then(r => r.data), getTicketStatuses: (ticketId: string) => apiClient.get(`/integrations/psa/tickets/${ticketId}/statuses`).then(r => r.data), listMembers: () => apiClient.get('/integrations/psa/members').then(r => r.data), getMemberMappings: () => apiClient.get('/integrations/psa/member-mappings').then(r => r.data), saveMemberMappings: (mappings: { user_id: string; external_member_id: string; external_member_name: string }[]) => apiClient.post('/integrations/psa/member-mappings', mappings).then(r => r.data), autoMatchMembers: () => apiClient.post('/integrations/psa/member-mappings/auto-match').then(r => r.data), } export const sessionPsaApi = { linkTicket: (sessionId: string, psaTicketId: string | null) => apiClient.patch(`/sessions/${sessionId}/ticket-link`, { psa_ticket_id: psaTicketId }).then(r => r.data), getPostPreview: (sessionId: string) => apiClient.get(`/sessions/${sessionId}/psa-post/preview`).then(r => r.data), postToTicket: (sessionId: string, data: { note_type: string; content: string; update_status_id?: number }) => apiClient.post(`/sessions/${sessionId}/psa-post`, data).then(r => r.data), getPostHistory: (sessionId: string) => apiClient.get(`/sessions/${sessionId}/psa-posts`).then(r => r.data), }