Server-Sent Events (SSE)
GET /sse
Receber eventos em tempo real via Server-Sent Events (SSE)
Funcionalidades principais:
- conexão HTTP persistente em
text/event-stream - seleção granular de tipos de eventos
- filtragem de tipos de mensagens
- autenticação por token na query, compatível com
EventSource
Eventos Disponíveis:
connection: Alterações no estado da conexãohistory: Recebimento de histórico de mensagensmessages: Novas mensagens recebidasmessages_update: Atualizações em mensagens existentescall: Eventos de chamadas VoIPcontacts: Atualizações na agenda de contatospresence: Alterações no status de presençagroups: Modificações em gruposlabels: Gerenciamento de etiquetaschats: Eventos de conversaschat_labels: Alterações em etiquetas de conversas
Estabelece uma conexão persistente para receber eventos em tempo real. Este endpoint:
-
Requer autenticação via token
-
Mantém uma conexão HTTP aberta com o cliente
-
Envia eventos conforme ocorrem no servidor
-
Suporta diferentes tipos de eventos
Exemplo de uso:
const eventSource = new
EventSource('/sse?token=SEU_TOKEN&events=chats,messages');
eventSource.onmessage = function(event) {
const data = JSON.parse(event.data);
console.log('Novo evento:', data);
};
eventSource.onerror = function(error) {
console.error('Erro na conexão SSE:', error);
};
Estrutura de um evento:
{
"type": "message",
"data": {
"id": "3EB0538DA65A59F6D8A251",
"from": "5511999999999@s.whatsapp.net",
"to": "5511888888888@s.whatsapp.net",
"text": "Olá!",
"timestamp": 1672531200000
}
}
Autenticação
[]
{}
Parâmetros
[
{
"name": "token",
"in": "query",
"schema": {
"type": "string"
},
"required": true,
"description": "Token de autenticação da instância",
"example": "{{token}}"
},
{
"name": "events",
"in": "query",
"schema": {
"type": "string"
},
"required": true,
"description": "Tipos de eventos a serem recebidos. Suporta dois formatos:\n- Separados por vírgula: `?events=chats,messages`\n- Parâmetros repetidos: `?events=chats&events=messages`\n",
"example": "chats,messages"
},
{
"name": "excludeMessages",
"in": "query",
"schema": {
"type": "string"
},
"required": false,
"description": "Tipos de mensagens a serem excluídas do evento `messages`. Suporta dois formatos:\n- Separados por vírgula: `?excludeMessages=poll,reaction`\n- Parâmetros repetidos: `?excludeMessages=poll&excludeMessages=reaction`\n",
"example": "poll,reaction"
}
]
Respostas
{
"200": {
"description": "Stream de eventos aberto",
"headers": {
"Cache-Control": {
"schema": {
"type": "string"
},
"example": "no-cache"
}
},
"content": {
"text/event-stream": {
"schema": {
"type": "string"
},
"example": "event: messages\ndata: {\"type\":\"message\",\"data\":{\"text\":\"Olá\"}}"
}
}
},
"400": {
"description": "Lista de eventos ou parâmetros inválidos",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"error"
],
"properties": {
"error": {
"type": "string"
}
}
}
}
}
},
"401": {
"description": "Token inválido ou ausente",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"error"
],
"properties": {
"error": {
"type": "string",
"example": "Unauthorized"
}
}
}
}
}
}
}