# 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ão
- `history`: Recebimento de histórico de mensagens
- `messages`: Novas mensagens recebidas
- `messages_update`: Atualizações em mensagens existentes
- `call`: Eventos de chamadas VoIP
- `contacts`: Atualizações na agenda de contatos
- `presence`: Alterações no status de presença
- `groups`: Modificações em grupos
- `labels`: Gerenciamento de etiquetas
- `chats`: Eventos de conversas
- `chat_labels`: Alterações em etiquetas de conversas


Estabelece uma conexão persistente para receber eventos em tempo real. Este
endpoint:

1. Requer autenticação via token

2. Mantém uma conexão HTTP aberta com o cliente

3. Envia eventos conforme ocorrem no servidor

4. Suporta diferentes tipos de eventos

Exemplo de uso:

```javascript

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:

```json

{
  "type": "message",
  "data": {
    "id": "3EB0538DA65A59F6D8A251",
    "from": "5511999999999@s.whatsapp.net",
    "to": "5511888888888@s.whatsapp.net",
    "text": "Olá!",
    "timestamp": 1672531200000
  }
}

```

## Autenticação

```json
[]
```

```json
{}
```

## Parâmetros

```json
[
  {
    "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

```json
{
  "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"
            }
          }
        }
      }
    }
  }
}
```

## Guias relacionados

[Autenticação](/docs/authentication) · [Erros e retries](/docs/errors-and-retries) · [Server URL](/docs/server-url)
