Convenciones de la API
Cada API de SalesOS sigue las reglas de esta página. Léala una vez y las páginas de cada endpoint quedan cortas: solo cuentan lo que es específico de ellas.Esta página es el contrato al que nos sujetamos. Donde un endpoint se aparta de ella, su página lo dice explícitamente — una excepción silenciosa es un defecto, y queremos saberlo.
URLs base
- Producción
- Staging
https://api.play2sell.com/functions/v1/<nombre>. No existe una superficie REST en /v1/... — si encuentra una página que la describa, está desactualizada; avísenos.
Autenticación
Dos esquemas, y son disjuntos — un endpoint acepta uno u otro, nunca ambos para el mismo llamador.Socio (servidor a servidor)
signedRequest están en Autenticación.
- El timestamp vale 30 segundos y no puede estar en el futuro (protección contra replay) — mantén el reloj sincronizado (NTP) y firma de nuevo en cada intento
- Firme los bytes crudos del cuerpo, antes de cualquier reserialización
- Cada clave pertenece a una sola empresa; un documento de otra empresa responde
found: false
Modo self (token del usuario del SSO)
Formatos de error
Las solicitudes fallan en dos capas distintas, y responden diferente. Maneje ambas — es el error de integración más común que vemos.Capa de autenticación
Antes de que la solicitud llegue a la lógica del endpoint:error es un string. Códigos (401): header_missing, header_malformed, api_key_not_found (incluye clave revocada), key_expired, signature_invalid, timestamp_too_old, timestamp_in_future. Sin el alcance: 403 scope_insufficient, con missing_scopes. Tabla completa en Autenticación.
Capa del endpoint
Una vez que la autenticación pasó:error es un objeto. details señala el ítem problemático por su index cuando la solicitud traía una lista.
Pagos
La API de Pagos responde en RFC 7807problem+json:
instance es el id de la solicitud — cítelo al abrir un ticket.
Códigos de estado
Lotes e identidad
Los endpoints de socio reciben un arreglocollaborators y responden en el mismo orden, un ítem por cada ítem enviado.
Resolución de identidad
La precedencia esuser_id > cpf > email. Cuando llega más de uno, gana el primero presente — los demás se ignoran, no se usan como alternativa.
- CPF se acepta en cualquier formato; los dígitos se normalizan. Debe tener exactamente 11 dígitos.
- Una persona desconocida responde
"found": false. Eso no es un error, y mantiene el arreglo alineado con su solicitud. "ambiguous": trueaparece cuando coincidió más de una persona — trátelo como no resuelto.
Límites
Los límites de lote son por acción y se declaran en cada página, porque siguen el payload que cada acción produce. Como regla: una acción de estado permite 500; una acción que expande una lista por persona permite 100 o menos.Los datos compartidos — metadatos de la campaña, turnos de la empresa — salen una sola vez arriba de la respuesta, no repetidos por persona. En un lote de 500 personas esa es la diferencia entre una respuesta liviana y una de megabytes.
La configuración es de la empresa, nunca de su código
Esta es la regla que más rompe integraciones meses después de haberse desplegado. Nombres, etiquetas, cantidades, umbrales y monedas se configuran por empresa y se devuelven en la respuesta. No son constantes.Zonas horarias y fechas
Cada “hoy” se calcula en la zona horaria de la empresa, nunca en UTC. La respuesta declara cuál usó:timezone de la misma respuesta — no el del dispositivo.
Límites de uso
Configurable por clave, con un valor predeterminado de 1000 solicitudes/hora. Hoy el límite por clave se mide, pero no bloquea; cuando bloquee, el exceso recibe429 rate_limited con el header Retry-After en segundos. Espere; no insista en bucle.
Versionado
Los contratos se extienden, no se rompen. Podemos agregar campos en cualquier momento, así que haga un parseo permisivo e ignore lo que no conozca. El comportamiento nuevo que cambia un payload existente se despliega opt-in, detrás de una bandera en la solicitud (por ejemploinclude_day). Omitirla mantiene la respuesta que usted ya maneja.
Seguridad
- Las APIs de socio son solo lectura, salvo que la página diga lo contrario — nunca canjean, nunca alteran saldos, nunca aceptan términos
- Las solicitudes se firman con HMAC y se registran para auditoría; los documentos y correos nunca se escriben en los logs
- Nunca llame a estas APIs desde el lado del cliente: la clave quedaría expuesta
Próximos pasos
Autenticación
Crear claves y firmar solicitudes
API de Check-in
Presencia en turno y el recorrido de turnos del día
API de Misiones
Progreso, puntos logrados y puntos disponibles
API de Campañas
Catálogo de premios y saldo disponible

