Monitorizar e integrar
Entidades
Las entidades mantienen separados los elementos de cada unidad y te permiten filtrar por unidad. Cada clave de API y cada miembro siguen viendo toda la cuenta, y la cuenta tiene una sola factura.
Aprovisionar una entidad desde tu sistema
Da a cada entidad tu propio identificador como externalId. Si el identificador ya está en uso, el 409 devuelve la entidad que lo tiene, así que un script de aprovisionamiento se puede volver a ejecutar sin riesgo.
curl -X POST "https://api.callshift.ai/v1/entities" \
-H "Authorization: Bearer $CALLSHIFT_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Lyon Part-Dieu", "externalId": "club-42" }'
# Run again: 409 { "error": "...", "existingEntityId": "550e8400-e29b-41d4-a716-446655440000" }Asignar elementos a una entidad
Toda petición que crea o modifica un agente, un número o un webhook acepta entityId o entityExternalId (uno de los dos, no ambos). null hace que el elemento sea compartido, y omitir el campo conserva su entidad actual.
{ "entityExternalId": "club-42" }Estos dos mismos parámetros filtran las listas de agentes, números de teléfono, números SIP, webhooks y trunks: GET /v1/agents?entityExternalId=club-42.
Los elementos de dos entidades nunca se mezclan
CallShift rechaza con un 409 cualquier vínculo entre dos entidades distintas e indica los elementos implicados: un número y el agente que lo atiende, el agente de una campaña y su número, un agente y su webhook. Un elemento compartido se puede vincular con cualquiera. Una llamada de campaña cuyo agente y número han acabado en entidades distintas no se marca (agent-line-entity-mismatch) y la campaña se detiene.
Fusionar o cerrar una entidad
POST/v1/entities/{entityId}/move-items mueve todos los agentes, números y webhooks de una entidad a otra, o los convierte en compartidos. La entidad, ya vacía, se puede eliminar con DELETE/v1/entities/{entityId}; mientras aún contenga elementos, la eliminación se rechaza indicando lo que queda.
Llamadas por entidad
El webhook de fin de llamada incluye la entity de la llamada. La API de llamadas aún no tiene filtro por entidad: para una vista por entidad, lista los agentes de la entidad y filtra las llamadas por agentId.
