4filasDevelopers

Tempo real

WebSocket

Namespace Socket.IO /ws/integration. Autentique no handshake e assine rooms por tenant/unidade.

connect → auth.apiKey → integration.ready
       → room.join { unitId } → ticket.* / dashboard.stats.update

Auth

Preferencial: auth: { apiKey } ou auth: { token }

Alternativas: header Authorization: Bearer, X-Api-Key ou query apiKey/token

Escopo mínimo: ws:tickets

Rooms

  • integration:tenant:<tenantId> — automática no connect
  • integration:dashboard:tenant:<tenantId> — se tiver dashboard:read
  • integration:unit:<unitId> — via room.join
ts
import { io } from "socket.io-client";

const socket = io("https://api.4filas.com.br/ws/integration", {
  auth: { apiKey: process.env.FOURFILAS_API_KEY },
  transports: ["websocket"],
});

socket.on("integration.ready", (payload) => {
  console.log(payload);
  socket.emit("room.join", { unitId: "UNIT_UUID" });
});

socket.on("ticket.called", console.log);

Eventos

integration.readyserver → client

Emitido após autenticação bem-sucedida (tenantId + scopes).

ticket.issuedserver → client

Nova senha emitida.

ticket.calledserver → client

Senha chamada para atendimento.

ticket.updatedserver → client

Atualização de estado da senha.

ticket.completedserver → client

Atendimento concluído.

ticket.absentserver → client

Cliente ausente.

ticket.forwardedserver → client

Senha encaminhada para outra unidade/fila.

dashboard.stats.updateserver → client

Indicadores do dashboard (room dashboard, exige scopes dashboard:read + ws:tickets).

room.join / room.leaveclient → server

Entra/sai da room de uma unidade: { unitId }.

ping / pongbidirecional

Healthcheck leve da conexão.