Services (API)
Documentação dos serviços disponíveis para comunicação com a API.
Arquitetura
Todos os serviços usam o cliente api configurado com Axios:
apps/web/src/services/
├── api.ts # Cliente Axios configurado
├── authService.ts # Autenticação
├── chatService.ts # Conversas
├── crmService.ts # Contatos
├── groupService.ts # Grupos
├── campaignService.ts # Campanhas
├── templateService.ts # Templates HSM
├── channelService.ts # Canais WhatsApp
├── documentService.ts # Documentos/PDF
├── teamService.ts # Equipe/Usuários
├── tenantService.ts # Tenant
├── searchService.ts # Busca global
└── notificationService.ts # Notificações
authService
Gerencia autenticação e convites.
| Método | Descrição | Endpoint |
|---|---|---|
login(data) | Autentica usuário | POST /auth/login |
invite(data) | Envia convite | POST /auth/invite |
completeRegistration(data) | Completa cadastro | POST /auth/complete-registration |
chatService
Gerencia conversas do WhatsApp.
| Método | Descrição | Endpoint |
|---|---|---|
getInbox(page, size) | Lista conversas | GET /flow/chats |
getHistory(contactId, page, size) | Histórico de mensagens | GET /flow/chats/{id}/messages |
markAsRead(contactId) | Marca como lido | POST /flow/chats/{id}/read |
sendMessage(request, file?) | Envia mensagem | POST /flow/chats/send |
crmService
Gerencia contatos, tags e grupos.
| Método | Descrição | Endpoint |
|---|---|---|
listContacts(page, size, filters) | Lista contatos | GET /crm/contacts |
getContact(id) | Detalhe do contato | GET /crm/contacts/{id} |
createContact(data) | Cria contato | POST /crm/contacts |
updateContact(id, data) | Atualiza contato | PUT /crm/contacts/{id} |
deleteContact(id) | Remove contato | DELETE /crm/contacts/{id} |
importContacts(file) | Importa CSV | POST /crm/contacts/import |
listTags() | Lista tags | GET /crm/tags |
createTag(data) | Cria tag | POST /crm/tags |
assignGroups(contactId, groupIds) | Atribui grupos | POST /crm/contacts/{id}/groups |
campaignService
Gerencia campanhas de marketing.
| Método | Descrição | Endpoint |
|---|---|---|
list(page, size) | Lista campanhas | GET /campaigns |
get(id) | Detalhe da campanha | GET /campaigns/{id} |
create(data) | Cria campanha | POST /campaigns |
update(id, data) | Atualiza campanha | PUT /campaigns/{id} |
send(id) | Envia campanha | POST /campaigns/{id}/send |
retry(id) | Reenvia falhados | POST /campaigns/{id}/retry |
delete(id) | Remove campanha | DELETE /campaigns/{id} |
templateService
Gerencia templates HSM do WhatsApp.
| Método | Descrição | Endpoint |
|---|---|---|
list() | Lista templates | GET /flow/templates |
get(id) | Detalhe do template | GET /flow/templates/{id} |
sync() | Sincroniza com Meta | POST /flow/templates/sync |
channelService
Gerencia canais (números WhatsApp).
| Método | Descrição | Endpoint |
|---|---|---|
list() | Lista canais | GET /flow/channels |
connect(data) | Conecta canal | POST /flow/channels/connect |
disconnect(id) | Desconecta canal | POST /flow/channels/{id}/disconnect |
documentService
Gerencia documentos e PDFs.
| Método | Descrição | Endpoint |
|---|---|---|
list(page, size) | Lista documentos | GET /suite/documents |
get(id) | Detalhe do documento | GET /suite/documents/{id} |
generate(data) | Gera PDF | POST /suite/documents/generate |
sign(id, certificate) | Assina digitalmente | POST /suite/documents/{id}/sign |
ocr(file) | Extrai texto | POST /suite/documents/ocr |
teamService
Gerencia usuários da equipe.
| Método | Descrição | Endpoint |
|---|---|---|
listTeam() | Lista usuários | GET /team |
invite(data) | Convida usuário | POST /team/invite |
updateRole(userId, role) | Atualiza role | PUT /team/{id}/role |
deactivate(userId) | Desativa usuário | DELETE /team/{id} |
Exemplo de Uso
'use client';
import { useEffect, useState } from 'react';
import { chatService, ChatInboxDTO } from '@/services/chatService';
function InboxList() {
const [conversations, setConversations] = useState<ChatInboxDTO[]>([]);
const [loading, setLoading] = useState(true);
useEffect(() => {
chatService.getInbox()
.then(response => setConversations(response.data.content))
.finally(() => setLoading(false));
}, []);
if (loading) return <Skeleton />;
return (
<ul>
{conversations.map(conv => (
<li key={conv.contactId}>{conv.contactName}</li>
))}
</ul>
);
}
Tratamento de Erros
Todos os serviços propagam erros que podem ser capturados:
try {
await chatService.sendMessage({ contactId, content });
toast.success('Mensagem enviada!');
} catch (error) {
if (error.response?.status === 429) {
toast.error('Muitas requisições. Aguarde.');
} else {
toast.error('Erro ao enviar mensagem');
}
}