Permisos (RBAC)
Migo usa control de acceso basado en roles (RBAC). Los usuarios tienen roles, los roles tienen permisos, y cada endpoint declara qué permiso(s) requiere.
Conceptos centrales
- Permiso — una capacidad granular expresada como un par
{ action, resource }(p. ej. la accióncheckCvvsobre el recursocards, la accióntransferBetweenCardssobre el recursocards). Los permisos se identifican internamente por unpermissionIdnumérico. - Rol — un paquete nombrado de permisos (p. ej.
admin,support). Los permisos de un rol se referencian por sus IDs numéricos. - Usuario — una persona (titular u operador CMS) con uno o más roles asignados, más permisos opcionales otorgados directamente.
Endpoints del Wallet Gateway (usuarios finales)
Listar todos los permisos
curl https://api.ali.app/rest/users/permissions \
-H "Authorization: Bearer <token>"
Crear permisos (por lotes)
Rara vez se usa — los permisos vienen de las definiciones de Migo. El endpoint crea uno o más permisos, cada uno descrito por { resource, action, description? }:
curl -X POST https://api.ali.app/rest/users/permissions \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"permissions": [
{ "resource": "cards", "action": "checkCvv", "description": "Request a CVV view token" }
]
}'
Otorgar / revocar permisos a un usuario
Tanto otorgar como revocar usan la misma forma { permissions: [...] }, donde cada entrada es { roleId, permissionId, granted }. Establece granted: true para otorgar y granted: false para revocar:
# Crear / otorgar permisos directos de usuario
curl -X POST https://api.ali.app/rest/users/{id}/permissions \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{ "permissions": [ { "roleId": 1, "permissionId": 10, "granted": true } ] }'
# Actualizar (otorgar/revocar) permisos directos de usuario
curl -X PATCH https://api.ali.app/rest/users/{id}/permissions \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{ "permissions": [ { "roleId": 1, "permissionId": 10, "granted": false } ] }'
Roles (Wallet Gateway)
Listar roles
curl https://api.ali.app/rest/users/roles \
-H "Authorization: Bearer <token>"
Crear roles (por lotes)
El cuerpo es { roles: [...] }. Cada rol tiene un name, un arreglo permissions de IDs numéricos de permisos y una description opcional:
curl -X POST https://api.ali.app/rest/users/roles \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"roles": [
{ "name": "branch_manager", "permissions": [1, 2, 3], "description": "Branch operations" }
]
}'
Actualizar un rol
Las actualizaciones se expresan como conjuntos de agregar/quitar de IDs numéricos de permisos (no hay un campo permissions de reemplazo total):
curl -X PATCH https://api.ali.app/rest/users/roles/{name} \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{ "addPermissions": [4, 5], "removePermissions": [1], "description": "Updated role" }'
Permisos de un rol
curl https://api.ali.app/rest/users/roles/{name}/permissions \
-H "Authorization: Bearer <token>"
Asignar / desasignar roles a un usuario
La asignación de roles es un PATCH con conjuntos de agregar/quitar de nombres de roles (no hay un POST /users/{id}/roles):
curl -X PATCH https://api.ali.app/rest/users/{id}/roles \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{ "addRoles": ["branch_manager"], "removeRoles": [] }'
Endpoints CMS (operadores)
Mismo modelo, distintos endpoints — consulta CMS → Permisos y roles.
Permisos estándar
Los permisos son pares { action, resource } (acciones en camelCase), no cadenas con puntos. Una muestra no exhaustiva tomada del mapa de permisos del gateway:
| Recurso | Acción | Otorga |
|---|---|---|
cards | createCard | Emitir una nueva tarjeta |
cards | checkCard | Consultar / verificar una tarjeta |
cards | checkCvv | Solicitar un view token de CVV |
cards | cardActivation | Activar una tarjeta |
cards | assignPIN | Establecer / cambiar el PIN de una tarjeta |
cards | updateStatus | Bloquear / desbloquear (cambio de estado) |
cards | transferBetweenCards | Ejecutar transferencias tarjeta a tarjeta |
cards | getAllByUser | Listar las tarjetas de un usuario |
users | createPermission | Crear permisos en el catálogo |
users | createRole / updateRole | Gestionar roles |
users | updateAuthUserRoles | Asignar / desasignar roles de usuario |
users | createAuthUserPermissions / updateAuthUserPermissions | Otorgar / revocar permisos directos de usuario |
leads | create / update / fileUpload | Ciclo de vida de los leads de onboarding |
businesses | createBusiness / createBranch / updateTerminal | Gestionar comercios |
reports | payfacConciliation | Reporte de conciliación PayFac |
webhooks | volcanWebhook | Webhook entrante del procesador de tarjetas |
La lista completa y autoritativa vive en el mapa de permisos del gateway (PermissionsMap); coordina con Migo antes de depender de un par específico.
Permisos efectivos
El conjunto efectivo de permisos de un usuario es la unión de todos los permisos de sus roles más los permisos otorgados directamente.
Verifica vía:
curl https://api.ali.app/rest/users/{id}/permissions \
-H "Authorization: Bearer <token>"