Skip to main content

Ventanilla waiting room

The waiting-room TV reads a public, unauthenticated snapshot. It is not an integrator (x-api-key) API. Prerequisite: a superadmin must set Company.ventanilla_enabled. Create the screen token in the dashboard under Configuración → Módulos → Sala de espera. If the module is off, the token is revoked, or the token is unknown, the endpoint returns 404 with code: VENTANILLA_PUBLIC_UNAVAILABLE. The public path never includes amounts, balances, or client identifiers beyond the privacy-masked call label.

Snapshot

A 200 body includes:
  • companyName, optional logoUrl, date (ART calendar day), and timezone
  • rates for the currencies configured on the company. Buy / sell / mid are display prices in unit (ARS). USD and ARS are one pair: pesos per dollar, never the internal 1/1 USD quote or the USD-per-peso factor.
  • services cards (icon, color, title, subtitle)
  • backgroundColor
  • currentCall and recentCalls only while a box is still llamado (box number, privacy-masked label, ticket, status). Attended and no-show calls are omitted, and the TV hides the block when nothing is called.
  • tickerText, announceSound, announceTts, privacyMode
Cache-Control is no-store. Public /api/public/ routes are IP rate-limited.

Live updates

GET /api/public/ventanilla/{token}/events is an SSE stream of snapshot (when the payload changes), ping, or unavailable. The TV page also polls the snapshot every 2.5s so a dropped EventSource still recovers. The browser page is /sala/{token} (no login, noindex). Rotate or revoke the token from the dashboard to cut access.

Operator calls

Box calling is a dashboard session API (/api/dashboard/ventanilla/calls), not this public contract. Operators need ventanilla.view or operations.view. Configuration needs ventanilla.manage or employees.manage. The operator confirms the display name in a prompt when they click Llamar. The UI may suggest a name from the operation description or an external counterparty; it is never stored on Operation. The confirmed value lives only on VentanillaCall.display_name (audited). Volver a llamar reuses that stored name; Editar nombre opens the same prompt before recalling. An empty name is allowed only when the company privacy mode is ticket. The public screen still applies privacyMode (full name, first name + last initial, or ticket).