Skip to main content

API de Campañas

Los ejemplos siguientes muestran el encabezado en formato de red Authorization: P2S-SIGN-V1 API_KEY:TIMESTAMP:SIGNATURE. Para calcular la firma en su código, use el helper signedRequest en Autenticación.
La API de Campañas permite que su backend lea las campañas de incentivo de su empresa en SalesOS — cuáles están vigentes, qué ofrece el catálogo, cuánto tiene cada colaborador para gastar y cuántos premios ya alcanza. Fue diseñada para componer sus propias pantallas antes de que el usuario abra el módulo de SalesOS. Es una API de solo lectura, servidor a servidor: usted consulta colaboradores por CPF o correo, en lote, y SalesOS responde con las campañas vigentes y el estado de cada persona en ellas.
Una campaña la configura su empresa: nombre, catálogo, precios en puntos, categorías, reglas de nivel e incluso el nombre de la moneda. Esta API devuelve lo que esté configurado — no conoce ninguna campaña específica.

Cómo funciona

  1. Usted recibe una API Key con el alcance campaigns:read (Admin > Integraciones > API Keys)
  2. Su backend consulta el estado de uno o varios colaboradores (por CPF o correo)
  3. SalesOS responde con las campañas vigentes — los datos de la campaña una vez, y luego el estado de cada colaborador
Los metadatos de la campaña salen una sola vez arriba, no repetidos por persona. En un lote de 500 colaboradores esa es la diferencia entre una respuesta liviana y una de megabytes.
Este endpoint no canjea premios ni acepta términos. Es de lectura — combínelo con un enlace profundo al módulo de SalesOS para la acción en sí.

Autenticación

Consulte la página de Autenticación para crear y gestionar API Keys.

Entornos

URL base: https://api.play2sell.com

Referencia del endpoint

Dos acciones en el campo action: campaign_status y campaign_catalog. Cada colaborador se identifica por CPF (en cualquier formato — los dígitos se normalizan) o correo. Cuando se envían ambos, prevalece el CPF.

Acción: campaign_status

Las campañas vigentes de su empresa y el estado de cada colaborador en ellas.

Esquema de la solicitud

string
requerido
Debe ser "campaign_status"
array
requerido
Lista de referencias de colaboradores (máximo 500)
string
CPF, en cualquier formato (52998224725 o 529.982.247-25). Debe contener exactamente 11 dígitos.
string
Correo — usado solo cuando cpf está ausente
string
Filtra una campaña específica. Ausente = todas las vigentes.
string
Idioma de los textos configurables. Ausente = el predeterminado de la campaña.

Ejemplo

Respuesta (200):

Campos de la campaña

Campos del colaborador

spendable: 0 no significa “sin puntos”. La billetera se habilita por empresa; mientras no lo esté, el saldo llega en cero incluso para quien tiene puntuación. Lea siempre wallet_enabled antes de escribir “sin saldo” en la pantalla — de lo contrario afirmará una ausencia que no es cierta.
Alcanzar y poder pagar son cuentas distintas. Un premio puede estar liberado por nivel y aun así costar más de lo que el colaborador tiene. Por eso eligible_rewards y affordable_rewards son campos separados.

Acción: campaign_catalog

El mismo contenido con el recorte de catálogo. Como el catálogo crece por colaborador, el límite de lote baja a 100.

Modo self (sesión federada)

Con un token de usuario federado, envíe Authorization: Bearer <jwt> y omita collaborators. La respuesta cubre solo al propio usuario del token.
Enviar collaborators con un token de usuario se rechaza con SELF_MODE_NO_COLLABORATORS. Las consultas en lote requieren una API Key de socio — de lo contrario, cualquier usuario autenticado podría leer el saldo de otras personas por CPF.

Manejo de errores

Son dos formatos, no uno. El bloque anterior es el error del endpoint. Las fallas en la capa de autenticación responden antes de que el endpoint corra, con error como cadena:
El código que asume error.code lee undefined en toda falla de autenticación. Ramifique por el tipo — vea Convenciones de la API.
Cuerpo inválido, lote por encima del límite, CPF sin 11 dígitos, un elemento sin cpf ni email, o campaign_slug malformado. La lista details indica el index del elemento.
Se envió una lista collaborators junto con un token de usuario.
API Key ausente, inválida o expirada, o firma que no coincide.
API Key válida, pero sin el alcance campaigns:read.
Solo se acepta POST.
Demasiadas solicitudes en esta hora. Espere retry_after segundos.
Error interno. Reintente con espera progresiva (2s, 4s, 8s).
Ninguna campaña vigente no es un error. La respuesta llega con campaigns: [] y estado 200 — la empresa simplemente puede no tener nada en el aire.

Límites de uso


Seguridad

  • Solo lectura: esta API nunca crea canjes, ni acepta términos, ni altera saldos
  • Cada clave pertenece a una sola empresa — un CPF de otra empresa responde found: false, y las campañas de otras empresas nunca aparecen
  • Las solicitudes se firman con HMAC (P2S-SIGN-V1) y se registran para auditoría; los documentos nunca se escriben en los logs
Nunca exponga su API Key en código del lado del cliente. Esta API debe llamarse únicamente desde su servidor.

Próximos pasos

API de Misiones

El progreso que genera los puntos gastados aquí

Autenticación

Cómo crear y gestionar API Keys