import { apiClient } from '@/lib/api/client'; export const WHATSAPP_INSTANCE_STATUSES = [ 'desconectado', 'conectando', 'conectado', 'erro', ] as const; export type WhatsappInstanceStatus = (typeof WHATSAPP_INSTANCE_STATUSES)[number]; /** Espelha o model `tenant_whatsapp_instances`. */ export interface WhatsappInstance { id: string; tenant_id: string; evolution_config_id: string | null; instance_name: string; numero_conectado: string | null; status: WhatsappInstanceStatus; qr_code_gerado_em: string | null; criado_em: string; } /** * Espelha `EvolutionQrCode` — por comentário do próprio backend * (`evolution-api.client.ts`), o prefixo exato de `base64` não é garantido * (é o que a Evolution API real devolveu, repassado como veio). Renderizar * defensivamente: se já começar com `data:`, usar como está; senão, * prefixar `data:image/png;base64,`. */ export interface WhatsappQrCode { base64?: string; pairing_code?: string; } export interface TestarEnvioWhatsappInput { numero: string; mensagem?: string; } export function listWhatsappInstances() { return apiClient.get('/tenant/whatsapp/instancias'); } export function criarWhatsappInstance() { return apiClient.post('/tenant/whatsapp/instancias'); } export function obterWhatsappQrCode(id: string) { return apiClient.get(`/tenant/whatsapp/instancias/${id}/qrcode`); } export function consultarWhatsappStatus(id: string) { return apiClient.get(`/tenant/whatsapp/instancias/${id}/status`); } export function removerWhatsappInstance(id: string) { return apiClient.delete(`/tenant/whatsapp/instancias/${id}`); } /** * Espelha `DispatchResult` (`src/modules/alert-dispatch/alert-dispatch.service.ts`): * o endpoint sempre responde HTTP 200 — falha de envio (instância não * conectada, Evolution API indisponível etc) vem como * `{ sucesso: false, erro }`, não como erro HTTP. Quem chama precisa checar * `sucesso` explicitamente, não só o status da resposta. */ export interface TestarEnvioResult { sucesso: boolean; erro?: string; } export function testarEnvioWhatsapp(id: string, input: TestarEnvioWhatsappInput) { return apiClient.post(`/tenant/whatsapp/instancias/${id}/testar-envio`, input); }