Saltar al contenido principal
Migo Docs

Gestión del Titular

Un titular es un usuario dueño de una tarjeta de Migo. Esta página es la referencia canónica para registrar y gestionar titulares en el Wallet Gateway. Está organizada en dos partes:

Todos los endpoints requieren un JWT válido (Authorization: Bearer <token>).


Registrar un titular

POST /users registra un nuevo titular. Requiere el permiso de aplicación USER_REGISTRATION y admite dos modos, elegidos por el gateway según el cuerpo de la solicitud:

  • invitationCode presente → se valida como ExternalUserRegistrationDto (registro mediante un código de invitación de sucursal).
  • en caso contrario → se valida como CreateUserDto (registro directo con información personal).

Solo se requiere el header Authorization; x-user-token no aplica a este endpoint.

Modo 1 — Código de invitación de sucursal

curl -X POST https://api.ali.app/rest/users \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"deviceId": "device-0000",
"invitationCode": "INV-0000",
"username": "user@example.com",
"password": "<password>",
"confirmPassword": "<password>",
"termsAndConditionsAccepted": true
}'
CampoTipoRequeridoNotas
deviceIdstringIdentificador único del dispositivo que inició el registro
invitationCodestringCódigo de invitación de sucursal que habilita el registro
usernamestring (email)Email usado como nombre de usuario
passwordstringContraseña de la cuenta (no vacía)
confirmPasswordstringDebe coincidir con password
nitstringnoNúmero de identificación tributaria (NIT)
termsAndConditionsAcceptedbooleannoSi se aceptaron los términos y condiciones

Modo 2 — Registro directo

curl -X POST https://api.ali.app/rest/users \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"firstName": "Example",
"lastName": "User",
"address": "Example address",
"countryOfBirth": "GTM",
"placeOfBirth": "Example City",
"gender": "M",
"maritalStatus": "soltero",
"phoneNumber": "+50200000000",
"username": "user@example.com",
"dateOfBirth": "1990-01-01",
"termsAndConditionsAccepted": true,
"identificationDocuments": [
{ "documentNumber": "XXXXXXXXXXXXX", "documentType": "DPI" }
]
}'
CampoTipoRequeridoNotas
firstNamestringNombre
lastNamestringApellido
addressstringDirección de residencia
countryOfBirthenum CountryCódigo ISO alpha-3 (p. ej. GTM). La entrada alpha-2 la normaliza el gateway a alpha-3
placeOfBirthstringTexto libre
genderenum GenderM, F u OTHER
phoneNumberstringTeléfono en formato internacional
dateOfBirthstringYYYY-MM-DD
identificationDocumentsarrayArray de { documentNumber, documentType } (ambos string, p. ej. documentType: "DPI")
usernamestring (email)noEmail usado como nombre de usuario
maritalStatusenum MaritalStatusnosoltero, casado, viudo, divorciado o separado
neighborhoodstringnoColonia o distrito
termsAndConditionsAcceptedbooleannoSi se aceptaron los términos y condiciones
additionalDataobjectnoMetadata adicional del usuario

No existe un email / documentId / birthDate de nivel superior en ningún modo — el email es username y los documentos de identidad viven en identificationDocuments.

Respuesta

Ambos modos devuelven el envelope de respuesta estándar; en éxito, el usuario creado se devuelve bajo data:

{ "success": true, "data": { } }

En error, success es false y errors lleva el detalle. Los campos del envelope son success (boolean), message opcional, data opcional y errors opcional (array de { message, code }).

Generar un código de invitación (para el Modo 1)

El código de invitación de sucursal que consume el Modo 1 se crea con POST /users/invitation-code (InvitationCodeGenerateDto):

curl -X POST https://api.ali.app/rest/users/invitation-code \
-H "Authorization: Bearer <token>" \
-H "x-user-token: <user-token>" \
-H "Content-Type: application/json" \
-d '{ "branchId": 24, "role": "owner" }'

role es uno de owner, admin, cashier. El flujo completo de onboarding se describe en Tap to Phone → Instalación del SDK y Pagos con Terminal.


Gestionar un titular

Buscar un titular

GET /users recupera un único usuario filtrado por id (numérico) o username (email) — al menos uno es requerido:

curl "https://api.ali.app/rest/users?username=user@example.com" \
-H "Authorization: Bearer <token>" \
-H "x-application-id: YOUR_APP_ID"

Estados de la cuenta

Los valores de auth_user.status son:

EstadoSignificado
PendingCuenta creada, aún no activada
ActiveOnboarding completo
InactiveDesactivada
BlockedDeshabilitada (fraude, problema de KYC, solicitud del cliente)
PasswordResetRequiredDebe restablecer la contraseña antes de continuar

No existe un PATCH de actualización de perfil; los cambios de estado de la tarjeta van por los endpoints de bloqueo/desbloqueo (consulta Ciclo de vida de la tarjeta).

Verificar una contraseña

POST /users/{userId}/auth valida una contraseña contra las credenciales del usuario — se usa para confirmación step-up antes de acciones sensibles (VerifyPasswordDto):

curl -X POST "https://api.ali.app/rest/users/{userId}/auth" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{ "password": "<password>" }'

Imagen de perfil

PUT /users/{userId}/profile-image acepta una carga multipart/form-data con el campo profileImage (máx. 5 MB; png, jpeg, jpg):

curl -X PUT "https://api.ali.app/rest/users/{userId}/profile-image" \
-H "Authorization: Bearer <token>" \
-F "profileImage=@avatar.jpg"

Tokens de notificaciones push

Registra y elimina el token FCM (Firebase Cloud Messaging) del titular para que la plataforma pueda entregar notificaciones push:

# Registrar
curl -X POST "https://api.ali.app/rest/users/fcm-tokens" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{ "token": "fcm-token-abc123xyz" }'

# Eliminar (al cerrar sesión / rotar token) — devuelve 204 No Content
curl -X DELETE "https://api.ali.app/rest/users/fcm-tokens/{token}" \
-H "Authorization: Bearer <token>"

Roles

Lista los roles disponibles y agrega/quita roles a un usuario:

# Listar roles
curl https://api.ali.app/rest/users/roles \
-H "Authorization: Bearer <token>"

# Agregar / quitar roles a un usuario
curl -X PATCH https://api.ali.app/rest/users/{id}/roles \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{ "addRoles": ["SHOP_ADMIN"], "removeRoles": [] }'

Relacionado