1 La API key
Leal te la entrega al activar el comercio, una por ambiente. Envíala en cada llamada, salvo en las anulaciones.
Authorization: Bearer <API key>
La de QA no sirve en producción. En Puntos agrega X-API-Version: 1.
Integra tu comercio con Leal. Arriba eliges si pruebas en QA o en producción. Las llamadas van a https://apiqa.leal.co.
Leal te la entrega al activar el comercio, una por ambiente. Envíala en cada llamada, salvo en las anulaciones.
Authorization: Bearer <API key>
La de QA no sirve en producción. En Puntos agrega X-API-Version: 1.
| Módulo | Para qué |
|---|---|
| Usuarios | Crear o encontrar a la persona, asociarla al comercio y listar sucursales. |
| Puntos | Consultar saldo, acumular, ver premios, redimir con OTP y anular. |
| Segmentos | Armar audiencias y exportar clientes a CSV. |
El uid que devuelve Usuarios es el member_ref que pide Puntos. El comercio es el de tu API key. GET /v1/loyalty/public/whoami lo confirma.
La API key identifica a tu comercio. El cliente se crea o se busca en Usuarios.
Authorization: Bearer <API key>
Para probar una operación, ábrela en Referencia y pega la API key en Authentication. En Postman usa la variable apiKey.
La API key identifica a tu comercio. El cliente final se crea o se busca en Usuarios.
| Dato | De dónde sale |
|---|---|
commerce_id | De la API key. GET /v1/loyalty/public/whoami lo confirma. |
uid | De Usuarios. Es el member_ref de Puntos. |
uid_cms | Tu usuario en Leal. Te lo entregamos al activar el comercio. Lo piden sucursales y la exportación. |
Las anulaciones no usan esta API key. Se firman con AWS Signature Version 4. El header Authorization empieza por AWS4-HMAC-SHA256.
Crea al cliente, encuéntralo si ya existe y asócialo a tu comercio.
| Llamada | Devuelve | |
|---|---|---|
| GET | /v3/api/cnf/countries/ | Países. El código es codPais. |
| GET | /v3/api/cnf/cities/{countryCode} | Ciudades de ese país. countryCode es el codPais. El código de ciudad es codCiudad. |
| GET | /v3/api/cnf/document-type/{countryCode} | Tipos de documento. El id es tipoDocumento. |
{
"cedula": "1234567890",
"tipoDocumento": 1,
"nombre": "Ana",
"apellido": "Pérez",
"celular": "3001234567",
"email": "ana@ejemplo.com",
"codPais": "CO",
"codCiudad": "1",
"plataformaOrigen": "API",
"idComercio": 3
}
Guarda el uid de la respuesta. En Puntos ese valor se envía como member_ref.
{
"criterio": "cedula",
"valor": "1234567890"
}
Para ver la ficha de un uid que ya tienes:
El correo o el celular de esa ficha son los que usa el OTP de redención.
Hazlo cuando la persona ya existe y todavía no está en tu programa.
{
"uid": "<uid>",
"idComercio": 3
}
idComercio es el comercio de tu API key. Para quitar la asociación: PUT /v3/users/legacy/favorite/remove con el mismo cuerpo.
La redención pide branch_id. Esta lista devuelve los ids de tu comercio.
uid_cms es tu usuario en Leal. commerce_id es el de tu API key. Guarda el id de la sucursal donde opera la caja.
Saldo, acumulación, premios, redención y anulación. Estas llamadas llevan la API key y X-API-Version: 1. member_ref es el uid de Usuarios.
Devuelve el commerce_id de tu API key.
Devuelve el saldo activo y el pendiente.
Historial. También sirve para recuperar el operation_key si hay que anular y ya no lo tienes.
{
"member_ref": "<uid>",
"operation_key": "fac-1001",
"external_ref": "fac-1001",
"source": "pos",
"user_origin": "pos",
"gross_amount": 50000,
"branch_id": "1200"
}
operation_key lo generas tú. Es la llave para no duplicar y para anular después.external_ref es el número de la factura.200 con points: 0 es válido: la regla no entregó puntos.items. product_code es el SKU. Sin items, el cálculo usa gross_amount.El reward_id de la redención es el id_reward de esta lista. id_commerce es el de tu API key.
Genera el OTP, valídalo y llama a la redención.
{
"usecaseId": 1,
"commerceId": 3,
"email": "ana@ejemplo.com",
"cellphone": "3001234567",
"countryCode": "CO",
"uid": "<uid>"
}
usecaseId es el de redención que te entregó Leal. La respuesta trae otpId.
{
"otpId": 12345,
"otpCode": "<código>"
}
Sigue solo si isValid es true.
{
"member_ref": "<uid>",
"reward_id": "<reward_id>",
"operation_key": "red-2001",
"external_ref": "fac-1001",
"source": "pos",
"branch_id": "1200"
}
Estas dos llamadas se firman con AWS Signature Version 4. El header Authorization empieza por AWS4-HMAC-SHA256. No llevan la API key.
Usa un operation_key nuevo para la anulación y señala la operación original con origin_operation_key. También vale origin_entry_id o external_ref.
{
"commerce_id": 3,
"member_ref": "<uid>",
"operation_key": "anu-fac-1001",
"origin_operation_key": "fac-1001",
"source": "pos"
}
Para anular una redención, el mismo cuerpo más motive:
{
"commerce_id": 3,
"member_ref": "<uid>",
"operation_key": "anu-red-2001",
"origin_operation_key": "red-2001",
"motive": "devolucion",
"source": "pos"
}
Audiencias y exportación CSV. commerceId es el comercio de tu API key y uidCms es tu usuario en Leal. El resto de operaciones está en Referencia.
Una audiencia manual es una lista de uids que tú envías. Este ejemplo aplica solo a ese tipo de audiencia.
{
"audience_name": "Clientes VIP",
"audience_type": "manual",
"uids": ["uid-1", "uid-2"],
"dry_run": true
}
dry_run: true no crea nada: responde 200 con enabled_count y excluded_count, para que revises cuántos clientes entran.dry_run: false (o quítalo) para crear la audiencia. Responde 201 con su segmentation_id.La exportación es asíncrona: primero se encola y después consultas la lista de descargas vigentes. Los tipos públicos son USERS_OF_LIST (clientes de audiencias) y CLIENT (clientes del comercio).
{
"idExportType": "USERS_OF_LIST",
"commerceId": 3,
"uidCms": "<uid_cms>"
}
Devuelve las descargas vigentes con su url y su status.
En Referencia puedes descargar la colección. En Postman: Import → Link. baseUrl arranca en QA; para producción usa https://api.leal.co.