Documentación

tickets

Tickets y seguimiento

El servicio de tickets funciona sin agentes. Habilítalo en el contrato del cliente desde Central. En el panel puedes crear una solicitud, asignarla a un miembro del equipo, definir prioridad y vencimiento, responder y cerrar el caso.

Los propietarios, administradores y agentes pueden atender tickets. Los observadores tienen acceso de lectura. Solo los propietarios y administradores pueden eliminarlos desde el panel. La API exige permisos tickets:read o tickets:write; las claves de sandbox no acceden a estos recursos.

Atención desde el panel

  1. Abre Tickets → Nuevo ticket y escribe el título y la descripción. El solicitante, responsable y vencimiento son opcionales.
  2. El vencimiento seleccionado en el calendario corresponde a las 23:59 en la hora de Colombia. Un ticket abierto o pendiente muestra la marca de vencido al superar esa fecha.
  3. Usa el icono Ver para abrir el seguimiento. Publicar respuesta agrega un mensaje visible al solicitante. Nota interna guarda información que solo ve el equipo.
  4. Cambia el estado a pendiente, resuelto o cerrado. Un solicitante puede responder un caso resuelto y volverá a abierto. Un caso cerrado debe ser reabierto por el equipo para admitir nuevas respuestas públicas.
  5. La eliminación se realiza desde el listado, requiere confirmación y queda auditada. Se eliminan respuestas y enlaces privados; se conserva la conversación vinculada.

Portal del solicitante

Un administrador activa Configurar portal de soporte en Tickets. El portal permanece desactivado inicialmente. La dirección tiene la forma /soporte/:empresa en el sitio público.

Un visitante puede crear una solicitud indicando nombre, correo, asunto y descripción. Recibe en pantalla un enlace privado que permite leer y responder únicamente ese ticket durante 30 días. Debe guardarlo; esta entrega no envía ese enlace automáticamente por correo. El correo indicado es un dato de contacto, no una identidad verificada.

El enlace contiene una credencial en el fragmento de la dirección, después de #. La aplicación la envía a la API mediante Authorization; no forma parte de la ruta ni de la consulta HTTP. La base de datos conserva únicamente su hash. No lo compartas fuera de las personas autorizadas para ese caso.

El equipo puede generar un nuevo enlace desde el detalle del ticket. Esto invalida el anterior. Revocar enlace cierra su acceso inmediatamente para las siguientes consultas. Desactivar el portal impide crear solicitudes y usar el seguimiento público. El contenido que alguien ya leyó no puede retirarse de su dispositivo.

Las notas internas, identificadores del equipo y el correo del solicitante no aparecen en la API de seguimiento público. Este portal usa sus propios enlaces; no necesita una clave de API de la empresa en el navegador.

API de la empresa

Método Ruta Función
GET / POST /tickets Listar o crear tickets
GET / PATCH / DELETE /tickets/:id Consultar, modificar o eliminar
GET /tickets/assignees Miembros operativos disponibles para asignación
GET /tickets/:id/entries Respuestas, notas e historial del equipo
POST /tickets/:id/replies Agregar una respuesta o nota
GET / PATCH /tickets/portal-settings Consultar o configurar el portal
POST / DELETE /tickets/:id/portal-link Generar o revocar un enlace privado

Crear: { "title": "Necesito ayuda", "description": "No puedo acceder", "priority": "normal" }.

Responder: { "content": "Revisamos tu solicitud", "request_id": "UUID único del cliente", "is_internal": false }. Reutiliza el mismo request_id y contenido si se pierde la respuesta HTTP. La API devuelve la misma entrada; si cambias el contenido usando la misma referencia, devuelve 409.

Para modificar desde un editor, envía también la revision obtenida al consultar el ticket. Una revisión desactualizada devuelve 409, evitando sobreescribir una respuesta o edición concurrente. Se mantiene compatibilidad con clientes anteriores que actualizan sin ese campo.

assigned_user_id debe pertenecer a un miembro operativo de la empresa; conversation_id, a una conversación de la misma empresa. Puedes establecer sla_due_at con una fecha ISO que incluya zona horaria o enviarlo como null para retirar el vencimiento.

Los listados aceptan q, status, priority, assigned_user_id, overdue=true, page y pageSize (10, 20, 30 o 50). El historial usa page y pageSize. Generar un enlace mediante una clave requiere ambos permisos de lectura y escritura, porque concede acceso al contenido existente.

API pública del portal

Método Ruta Credencial
GET / POST /public/ticket-portals/:empresa Sin credencial; portal activo
GET /public/ticket-followup Authorization: Bearer tkt_…
POST /public/ticket-followup/replies El mismo enlace privado

La creación pública requiere title, description, requester_name, requester_email y un request_id UUID. Repetir el mismo formulario con la misma referencia recupera el mismo ticket y enlace mientras siga vigente. Una referencia reutilizada con otro contenido se rechaza. La respuesta pública exige content y request_id; no acepta notas internas.

Hay límites por IP de 5 creaciones, 30 respuestas y 120 lecturas por minuto. Las respuestas del portal usan Cache-Control: no-store. Los casos deshabilitados, revocados, vencidos o pertenecientes a una cuenta suspendida no permiten seguimiento.

Esta entrega no incluye calendarios SLA avanzados, formularios configurables, adjuntos de tickets ni correo entrante. El registro de cambios y las automatizaciones por cambio de estado existentes se conservan.