GET /contacts/counts ahora acepta filtros
Hasta hoy el endpoint devolvía siempre los totales del workspace. Si querías saber cuántos chats abiertos tiene una asesora, el conteo no te servía: había que traer la lista y contarla en tu código.
Ahora acepta los mismos parámetros que GET /contacts — q, status, assigned_to, agent_group, channel_id, tag, unread, autopilot y filters — y devuelve los conteos facetados.
Facetado quiere decir que cada bloque se calcula con todos los filtros activos menos el suyo:
GET /contacts/counts?assigned_to=42&status=open
- Los cinco contadores de estado (
open, pending, human_requested, finished, archived) cuentan los chats de la asesora 42, ignorando status. - Los de asignación (
total, mine, unassigned, byUser) cuentan los chats abiertos, ignorando assigned_to. byGroup ignora agent_group; byChannel ignora channel_id.
Un bloque que se aplicara su propio filtro daría cero en todas las demás opciones, y quien lo lee se quedaría sin forma de saber qué hay del otro lado.
Un campo nuevo: scopeTotal
{ "total": 287, "scopeTotal": 164, "open": 5, "...": "..." }
scopeTotal es el universo de la carpeta que elegiste — el asesor, el grupo o el canal — sin estado, búsqueda ni filtro avanzado. Es el denominador honesto de un "viendo N de M": total cambia con cada filtro que agregas, así que no sirve para decir de cuánto estás viendo una parte.
Qué no cambia
Si llamas al endpoint sin parámetros, la respuesta es la de siempre: los totales del workspace. scopeTotal es un campo nuevo que se agrega, no reemplaza a ninguno, y los conteos siguen respetando la visibilidad de quien consulta.
El contrato y la referencia ya están actualizados.