VitrinaAPI

Traspasar el trabajo de quien se va del equipo

Reasigna conversaciones y leads antes de sacar a alguien del equipo

Cuando alguien deja el equipo, sus conversaciones abiertas y sus leads no se cierran solos. Esta receta cubre dos preguntas. Qué le pertenece todavía a esa persona. Y a quién pasa cuando ya no está.

Trampa

Suspender a alguien detiene la asignación nueva; no mueve lo que ya tenía

PUT /memberships/{id} con account_status: "suspended" saca a la persona de la rotación desde ese momento: nadie suspendido recibe una conversación o un lead nuevo. Pero sus hilos y leads YA asignados no se mueven solos, y siguen contando como abiertos mientras nadie los reasigne a mano. Para reasignar todo lo que tiene, usa DELETE /memberships/{id}, como muestra esta receta.

Antes de empezar

  • memberships:read para ver qué le pertenece a alguien antes de sacarlo.
  • memberships:write para eliminar la membresía y decidir el traspaso.
  • Roles, estados y el resto del ciclo de vida de un miembro están en Equipo; esta receta cubre solo la salida.

1. Mira qué le pertenece antes de sacarlo

curl https://api.vitrinadev.com/api/v1/memberships/b7b65979-fc3b-49f5-8973-63ca8f7759dc/handover-preview \
  -H "Authorization: Bearer $VITRINA_KEY"
{
  "data": {
    "userId": "87185d14-5120-4c77-8d75-07af52412494",
    "openConversations": 1,
    "openLeads": 1,
    "candidates": [
      { "userId": "3197957f-5fb6-4c7a-837d-1fe296bc548d", "openConversations": 1 }
    ]
  }
}

openConversations y openLeads son lo que de verdad hay que mover. No es un conteo histórico: una conversación resuelta, o un lead ganado o perdido, mantiene a su dueño original, aunque esa persona ya no esté. candidates es la gente activa que ya aparece en algún roster de enrutamiento: un canal, una regla, un equipo. Trae la carga actual de cada quien, para decidir si round robin reparte de forma equilibrada.

2. Elige cómo repartir y saca a la persona

curl -X DELETE "https://api.vitrinadev.com/api/v1/memberships/b7b65979-fc3b-49f5-8973-63ca8f7759dc?handover=round_robin" \
  -H "Authorization: Bearer $VITRINA_KEY"
{
  "data": {
    "mode": "round_robin",
    "conversationsMoved": 1,
    "leadsMoved": 1,
    "perAssignee": { "3197957f-5fb6-4c7a-837d-1fe296bc548d": 2 }
  }
}

handover acepta tres modos. unassign, el que corre si no mandas nada, deja todo en «Sin asignar»: visible, pero sin avisarle a nadie. user mueve todo a una sola persona con handover_assignee_id. round_robin, el de este ejemplo, reparte entre los candidatos del paso 1.

La membresía se borra solo después de repartir el trabajo. Si el traspaso falla, la persona sigue en el equipo y nada queda sin dueño.

perAssignee cuenta cuánto recibió cada persona, conversaciones y leads sumados. Aquí ambos cayeron en la misma candidata, así que su cuenta llega a dos.

3. Comprueba que nada quedó varado

curl https://api.vitrinadev.com/api/v1/conversations/01a0ce18-5dd9-7182-baa6-f08b5bdd5dfc \
  -H "Authorization: Bearer $VITRINA_KEY"
{ "data": { "id": "01a0ce18-5dd9-7182-baa6-f08b5bdd5dfc", "assignee_user_id": "3197957f-5fb6-4c7a-837d-1fe296bc548d" } }

El assignee_user_id de la conversación y el owner_user_id del lead deben apuntar al candidato del recibo, nunca al id que acabas de eliminar. La membresía eliminada ya no resuelve. GET /memberships/{id}/handover-preview sobre un id borrado responde 404. Es la confirmación más simple de que la persona salió de la rotación.

La salida también quita a la persona de canales, reglas y equipos, así que no vuelve a recibir conversaciones ni leads nuevos.

En la aplicación: quitar a alguien del equipo, con el mismo diálogo de traspaso, se hace desde Equipo → miembro → Eliminar. Guía completa en Manual de plataforma → Traspasar el trabajo de quien se va.

El diálogo de traspaso de Vitrina: cuántas conversaciones y oportunidades abiertas tiene la persona, y los tres modos de reasignarlas

Cuando falla

Pedir handover=user sin handover_assignee_id responde 400 antes de tocar una sola conversación:

curl -X DELETE "https://api.vitrinadev.com/api/v1/memberships/17016480-260a-4781-a7e1-8e4e19897ebd?handover=user" \
  -H "Authorization: Bearer $VITRINA_KEY"
{ "error": { "code": "VALIDATION_ERROR", "message": "handover mode \"user\" needs an assignee" } }

La membresía sigue ahí: el traspaso se valida entero antes de mover nada, nunca a medio camino. Pedir el traspaso hacia la misma persona que se está yendo falla igual, con el mismo código. Eliminar al último owner activo del workspace responde 403 en vez de dejar el workspace sin nadie que lo administre.

En esta página