API de Check-in
Los ejemplos muestran el header en formato de transmisión
Authorization: P2S-SIGN-V1 API_KEY:TIMESTAMP:SIGNATURE. Para calcular la firma en tu código, usa el helper signedRequest en Autenticación.Cómo funciona
- Obtienes una API Key con el scope
checkin:read(Admin > Integraciones > API Keys) - Tu backend consulta el estado de check-in de uno o varios colaboradores (por CPF o email)
- SalesOS responde con el último check-in de hoy por colaborador — y, opcionalmente, conteos de engagement semana/mes
El check-in se sigue ejecutando dentro de la app SalesOS (la validación de GPS ocurre en el contexto del usuario). Esta API es para leer el estado de presencia — combínala con un deep link al módulo SalesOS en la acción “Hacer check-in”.
Autenticación
Todas las solicitudes requieren una API Key en el headerAuthorization:
Ambientes
- Producción
- Staging
Base URL:
https://api.play2sell.comReferencia del Endpoint
action: checkin_status y checkin_engagement.
Cada colaborador se identifica por CPF (cualquier formato — los dígitos se normalizan) o email. Cuando se envían ambos, el CPF prevalece.
Action: checkin_status
Último check-in de hoy por colaborador. “Hoy” se calcula en la zona horaria de tu empresa (devuelta comotimezone / reference_date en la respuesta) — nunca en UTC.
Schema de la solicitud
string
requerido
Debe ser
"checkin_status"array
requerido
Array de referencias de colaborador (máx. 500)
string
CPF, cualquier formato (
52998224725 o 529.982.247-25). Debe contener exactamente 11 dígitos.string
Email — usado solo cuando
cpf no se envíaEjemplo
Campos de la respuesta
boolean
Si el CPF/email correspondió a un colaborador de tu empresa. Un colaborador desconocido viene como
found: false — no es un error, y el array mantiene el mismo orden de la solicitud.boolean
Si el colaborador tiene al menos un check-in no rechazado hoy (zona horaria de la empresa).
boolean
true cuando el último check-in está activo/aprobado y el turno aún no expiró — es decir, el colaborador está de turno ahora.object
Check-in más reciente de hoy. Omitido cuando no hay ninguno.
mode es geo (presencial con GPS), home (home office) u offline. status puede ser active, approved, pending (esperando aprobación del líder), expired (turno finalizado normalmente) o checkout.string
Vínculo del colaborador con tu empresa (
active, inactive, …). Un colaborador puede ser encontrado y estar inactivo.Action: checkin_engagement
Todo lo que devuelvecheckin_status, más conteos de engagement semana/mes por colaborador. Lotes limitados a 100.
string
requerido
Debe ser
"checkin_engagement"array
requerido
Array de referencias de colaborador (máx. 100)
Ejemplo
engagement:
checkins— check-ins en la semana/mes corriente (zona horaria de la empresa;expiredcuenta — es el fin normal de un turno)presence_days— días distintos con al menos un check-in
Modo self (sesión federada)
Si tu app ya posee una sesión federada de SalesOS — el JWT devuelto por un login personalizado, como la federación del Superapp — el mismo endpoint responde por el propio usuario del token, sin API key:- La identidad viene exclusivamente del token verificado — no envíes
collaborators. Una solicitud con ese campo se rechaza conSELF_MODE_NO_COLLABORATORS: un token de usuario nunca consulta a otras personas. - El alcance de empresa viene de la sesión; la respuesta tiene exactamente el mismo formato, con un único ítem en
collaborators. checkin_engagementfunciona de la misma manera ({ "action": "checkin_engagement" }).
Manejo de Errores
Todos los errores siguen la estructura compartida:400 — VALIDATION_ERROR
400 — VALIDATION_ERROR
Body inválido, lote sobre el límite, CPF sin 11 dígitos, o ítem sin
cpf ni email. El array details indica el index del ítem.403 — FORBIDDEN
403 — FORBIDDEN
API key válida, pero sin el scope
checkin:read.405 — METHOD_NOT_ALLOWED
405 — METHOD_NOT_ALLOWED
Solo se acepta
POST.429 — RATE_LIMITED
429 — RATE_LIMITED
Demasiadas solicitudes en esta hora. Espera
retry_after segundos y reintenta.500 — SERVER_ERROR
500 — SERVER_ERROR
Error interno. Reintenta con backoff exponencial (2s, 4s, 8s).
Rate Limits
Seguridad
- Solo lectura: esta API nunca crea ni modifica check-ins
- Cada key está limitada a una única empresa — un CPF de otra empresa responde
found: false - Solicitudes firmadas con HMAC (P2S-SIGN-V1) y registradas para auditoría; los documentos nunca se escriben en logs
Próximos pasos
Autenticación
Aprende a crear y gestionar API Keys
Soporte
¿Necesitas ayuda? Habla con nuestro equipo

