API Technical Docs

Mantente al día con las innovaciones tecnológicas que están transformando el mercado.

POS vía chat, turnos, dispositivos y entregas

Estado documental: Contrato propuesto. Las rutas, campos, límites y tiempos pasan a estado confirmado solo después de su implementación y verificación.

Objetivo: Inventariar turnos, dispositivos, entregas y configuración administrativa del POS vía chat.

Regla de turno

Un turno
= una persona identificada
+ un dispositivo
+ un canal
+ una ventana operativa

No existe cambio de persona dentro de un turno. Para otro vendedor se cierra el turno actual y se abre uno nuevo.

Turnos

Audiencia Método Ruta propuesta Uso Idempotencia Eventos o callbacks relacionados
Integración POST /v1/shifts Abrir turno después de identificar al usuario. Obligatoria shift.opened
Integración GET /v1/shifts Listar turnos. No Ninguno
Integración GET /v1/shifts/{shift_id} Consultar turno. No Ninguno
Integración POST /v1/shifts/{shift_id}/close Cerrar turno. Obligatoria shift.closed
Integración GET /v1/shifts/{shift_id}/payment-orders Consultar órdenes del turno. No Ninguno
Integración GET /v1/shifts/{shift_id}/pending-cases Consultar pendientes del turno. No Ninguno
Integración GET /v1/shifts/{shift_id}/summary Obtener resumen operativo. No Ninguno

Ejemplo: abrir turno

POST /v1/shifts
Idempotency-Key: 1cf08e71-6484-4d08-b772-45573a4beec4
{
  "user_id": "usr_01JXYZ",
  "device_id": "dev_01JXYZ",
  "channel": "whatsapp",
  "identification": {
    "type": "pin",
    "value": "<PROTECTED_VALUE>"
  }
}
{
  "shift_id": "shf_01JXYZ",
  "user_id": "usr_01JXYZ",
  "device_id": "dev_01JXYZ",
  "opened_at": "2026-07-20T08:00:00-05:00",
  "maximum_duration_seconds": 28800,
  "expiration_mode": "warning_and_renewal",
  "status": "active",
  "request_id": "req_01JXYZ"
}

Crear una orden para el turno

La orden se crea mediante POST /v1/payment-orders e incluye:

{
  "external_transaction_id": "TICKET-88412",
  "amount": "80.00",
  "buyer_name": "Carlos Vega",
  "integration_experience": "chat_pos",
  "shift_id": "shf_01JXYZ",
  "device_id": "dev_01JXYZ"
}

Dispositivos y entregas

Audiencia Método Ruta propuesta Uso Idempotencia Eventos o callbacks relacionados
Integración GET /v1/devices/{device_id} Consultar dispositivo autorizado. No Ninguno
Integración GET /v1/devices/{device_id}/active-shift Consultar turno activo. No Ninguno
Integración GET /v1/devices/{device_id}/inbox Consultar operaciones por entregar. No Ninguno
Integración POST /v1/devices/{device_id}/inbox/{item_id}/acknowledge Confirmar recepción. Obligatoria device.delivery_received
Integración GET /v1/devices/{device_id}/pending-cases Consultar pendientes operativos. No Ninguno
Integración POST /v1/payment-orders/{id}/deliveries Crear entrega de instrucciones. Obligatoria delivery.queued
Integración GET /v1/payment-orders/{id}/deliveries Listar entregas. No Ninguno
Integración GET /v1/deliveries/{delivery_id} Consultar estado. No Ninguno
Integración POST /v1/deliveries/{delivery_id}/retry Reintentar entrega fallida. Obligatoria delivery.queued
Integración POST /v1/deliveries/{delivery_id}/cancel Cancelar antes del envío. Obligatoria delivery.cancelled

Ejemplo: crear entrega

POST /v1/payment-orders/ypt_01JXYZ/deliveries
{
  "delivery_target": {
    "type": "shift_device",
    "shift_id": "shf_01JXYZ",
    "device_id": "dev_01JXYZ"
  },
  "content_type": "payment_instructions"
}
{
  "delivery_id": "dly_01JXYZ",
  "status": "queued",
  "request_id": "req_01JXYZ"
}

Usuarios administrativos

Audiencia Método Ruta propuesta Uso Idempotencia Eventos o callbacks relacionados
Administración POST /v1/admin/users Registrar usuario. user.created
Administración GET /v1/admin/users Listar usuarios. No Ninguno
Administración GET /v1/admin/users/{id} Consultar usuario. No Ninguno
Administración PATCH /v1/admin/users/{id} Actualizar datos permitidos. user.updated
Administración POST /v1/admin/users/{id}/activate Activar usuario. user.activated
Administración POST /v1/admin/users/{id}/deactivate Desactivar usuario. user.deactivated
Administración POST /v1/admin/users/{id}/reset-credential Restablecer identificación. security.user_credential_reset
Administración GET /v1/admin/users/{id}/history Consultar auditoría. No Ninguno

Dispositivos administrativos

Audiencia Método Ruta propuesta Uso Idempotencia Eventos o callbacks relacionados
Administración POST /v1/admin/devices Registrar dispositivo. device.created
Administración GET /v1/admin/devices Listar dispositivos. No Ninguno
Administración GET /v1/admin/devices/{id} Consultar dispositivo. No Ninguno
Administración PATCH /v1/admin/devices/{id} Actualizar configuración. device.updated
Administración POST /v1/admin/devices/{id}/activate Activar. device.activated
Administración POST /v1/admin/devices/{id}/deactivate Desactivar. device.deactivated
Administración POST /v1/admin/devices/{id}/pair Vincular canal o terminal. device.paired
Administración POST /v1/admin/devices/{id}/unpair Desvincular. device.unpaired
Administración POST /v1/admin/devices/{id}/assign-supervisor Asignar supervisor. device.supervisor_assigned
Administración GET /v1/admin/devices/{id}/history Consultar auditoría. No Ninguno

Política de turnos y alertas

Audiencia Método Ruta propuesta Uso Idempotencia Eventos o callbacks relacionados
Administración GET /v1/admin/shift-policy Consultar duración y modalidad. No Ninguno
Administración PATCH /v1/admin/shift-policy Configurar política de turnos. shift_policy.updated
Administración POST /v1/admin/shift-policy/test Probar política. Ninguno
Administración POST /v1/admin/alert-rules Crear regla de alerta. alert_rule.created
Administración GET /v1/admin/alert-rules Listar reglas. No Ninguno
Administración GET /v1/admin/alert-rules/{id} Consultar regla. No Ninguno
Administración PATCH /v1/admin/alert-rules/{id} Modificar regla. alert_rule.updated
Administración DELETE /v1/admin/alert-rules/{id} Desactivar regla. alert_rule.deactivated
Administración POST /v1/admin/alert-rules/{id}/test Enviar alerta de prueba. alert.test_sent
Administración GET /v1/admin/alerts Consultar historial. No Ninguno
Administración POST /v1/admin/alerts/{id}/acknowledge Registrar atención. alert.acknowledged

Ejemplo: política de turnos

PATCH /v1/admin/shift-policy
{
  "maximum_duration_seconds": 28800,
  "expiration_mode": "warning_and_renewal",
  "warning_after_each_transaction": true,
  "auto_close": false
}

Ejemplo: regla de alerta

{
  "event_types": [
    "payment.late_detected",
    "payment.amount_difference"
  ],
  "recipients": [
    {
      "type": "seller"
    },
    {
      "type": "supervisor"
    }
  ],
  "channels": [
    "whatsapp",
    "email"
  ],
  "active": true
}

Errores principales

HTTP Código Descripción
404 shift_not_available Turno inexistente o no disponible.
409 shift_closed El turno ya fue cerrado.
409 shift_device_mismatch Dispositivo distinto al del turno.
403 user_not_authorized Usuario sin autorización.
404 device_not_available Dispositivo no disponible.
404 delivery_not_found Entrega inexistente.
409 delivery_retry_not_allowed La entrega no puede reintentarse.