Usuarios CMS
Requiere autorización de partner / operador. Consulta CMS → Inicio.
Los Usuarios CMS son operadores — empleados de Migo o del partner que usan el backoffice para gestionar tarjetahabientes, tarjetas y configuraciones de partners.
Token de aplicación (prerrequisito)
El inicio de sesión del usuario CMS requiere primero un token de acceso de aplicación. Obtenlo primero mediante el endpoint de login de aplicación y luego envíalo como Authorization: Bearer <app-access-token> en la llamada de login del usuario CMS.
# Emitir un token de aplicación
curl -X POST https://api.ali.app/cms/rest/app/auth/login \
-H "Content-Type: application/json" \
-d '{ "merchant": "merchant-abc123" }'
# Renovar el token de aplicación
curl -X POST https://api.ali.app/cms/rest/app/auth/refresh \
-H "Content-Type: application/json" \
-d '{ "refreshToken": "<app-refresh-token>" }'
Consulta Autenticación → CMS para más detalles.
Inicio de sesión
curl -X POST https://api.ali.app/cms/rest/app/users/login \
-H "Authorization: Bearer <app-access-token>" \
-H "Content-Type: application/json" \
-d '{
"email": "operator@partner.com",
"password": "*****"
}'
Respuesta:
{
"success": true,
"data": {
"id": 1,
"accessToken": "eyJhbGci...",
"refreshToken": "eyJhbGci...",
"email": "operator@partner.com",
"name": "Operator Name"
}
}
En las llamadas CMS posteriores, envía el accessToken devuelto como el header x-user-token en formato Bearer <accessToken> (el gateway lo valida contra el servicio de usuarios CMS). No existe un valor xUserToken separado.
Renovar el token
curl -X POST https://api.ali.app/cms/rest/app/users/refresh \
-H "Content-Type: application/json" \
-d '{ "refreshToken": "<refresh-token>" }'
Flujo de OTP
Algunas operaciones (otorgar permiso, solicitudes de proceso de saldo, operaciones masivas) requieren elevación por OTP. Solicita el OTP con POST, verifícalo con PUT:
# 1. Solicitar OTP
curl -X POST https://api.ali.app/cms/rest/app/users/auth/otp \
-H "Content-Type: application/json" \
-d '{ "email": "operator@partner.com", "purpose": "login" }'
# 2. Verificar OTP
curl -X PUT https://api.ali.app/cms/rest/app/users/auth/otp \
-H "Content-Type: application/json" \
-d '{ "email": "operator@partner.com", "otp": "654321", "purpose": "login" }'
No hay un campo channel ni code; los campos son email, otp (6 dígitos) y purpose.
Restablecimiento de contraseña
Ambos endpoints de contraseña usan PUT.
# Actualizar la contraseña del usuario (autoservicio, con token de restablecimiento)
curl -X PUT https://api.ali.app/cms/rest/app/users/auth/passwords \
-H "Content-Type: application/json" \
-d '{
"email": "operator@partner.com",
"token": "<reset-token>",
"newPassword": "NewSecureP@ss1",
"confirmPassword": "NewSecureP@ss1"
}'
# Generar una contraseña temporal para un usuario (acción de operador, sin cuerpo)
curl -X PUT https://api.ali.app/cms/rest/app/users/{cmsUserId}/auth/passwords \
-H "Authorization: Bearer <token>" \
-H "x-user-token: Bearer <cms-user-token>"
token es opcional. El segundo endpoint genera y envía por correo una contraseña temporal para el usuario destino y no recibe cuerpo de solicitud.
Requisitos de contraseña: mínimo 12 caracteres, al menos 1 mayúscula, 1 minúscula, 1 dígito, 1 símbolo. Migo rechaza las 50 contraseñas más comunes.
Ver los partners y permisos del usuario
# Partners a los que está asignado este usuario
curl https://api.ali.app/cms/rest/app/users/{cmsUserId}/partners \
-H "Authorization: Bearer <token>" \
-H "x-user-token: Bearer <cms-user-token>"
# Permisos en un partner específico
curl https://api.ali.app/cms/rest/app/users/{cmsUserId}/partners/{partnerId}/permissions \
-H "Authorization: Bearer <token>" \
-H "x-user-token: Bearer <cms-user-token>"
Otorgar / revocar permisos
Tanto otorgar como revocar usan PATCH. Los permisos se referencian por un permissionId numérico, y cada entrada requiere un partnerId.
# Otorgar
curl -X PATCH https://api.ali.app/cms/rest/app/users/{cmsUserId}/permissions/grant \
-H "Authorization: Bearer <token>" \
-H "x-user-token: Bearer <cms-user-token>" \
-H "Content-Type: application/json" \
-d '{ "permissions": [{ "permissionId": 1, "partnerId": "partner-123" }] }'
# Revocar
curl -X PATCH https://api.ali.app/cms/rest/app/users/{cmsUserId}/permissions/revoke \
-H "Authorization: Bearer <token>" \
-H "x-user-token: Bearer <cms-user-token>" \
-H "Content-Type: application/json" \
-d '{ "permissions": [{ "permissionId": 1, "partnerId": "partner-123" }] }'
Reemplazar el conjunto completo de permisos de un usuario
Para reemplazar el conjunto completo de permisos en una sola llamada (en lugar de otorgar/revocar de forma incremental), usa PUT:
curl -X PUT https://api.ali.app/cms/rest/app/users/{cmsUserId}/permissions \
-H "Authorization: Bearer <token>" \
-H "x-user-token: Bearer <cms-user-token>" \
-H "Content-Type: application/json" \
-d '{ "permissions": [{ "permissionId": 1, "partnerId": "partner-123" }, { "permissionId": 2, "partnerId": "partner-123" }] }'
Crear un usuario CMS
curl -X POST https://api.ali.app/cms/rest/app/partners/users \
-H "Authorization: Bearer <token>" \
-H "x-user-token: Bearer <cms-user-token>" \
-H "Content-Type: application/json" \
-d '{
"email": "new-op@partner.com",
"name": "Juan Pérez",
"partners": ["partner-123"],
"permissions": [1, 2, 3]
}'
name es un único campo de nombre completo, partners es un arreglo de IDs de partner y permissions es un arreglo de IDs numéricos de permiso. El nuevo usuario recibe un correo con una contraseña temporal y se le solicita establecer la suya en el primer inicio de sesión.
Actualizar un usuario CMS
curl -X PATCH https://api.ali.app/cms/rest/app/partners/users/{cmsUserId} \
-H "Authorization: Bearer <token>" \
-H "x-user-token: Bearer <cms-user-token>" \
-H "Content-Type: application/json" \
-d '{
"name": "Juan A. Pérez",
"status": "active",
"addPartners": ["partner-456"],
"removePartners": ["partner-123"],
"addPermissions": [4],
"removePermissions": [2]
}'
Todos los campos son opcionales. La asignación de partners se cambia con addPartners / removePartners, y los permisos con addPermissions / removePermissions.
Auditoría
La emisión de auditoría no está implementada en el gateway/servicios del CMS. El catálogo documentado lista audit.cms_user.login, audit.permission.granted y audit.permission.revoked.