Registrar nueva cuenta
POST/auth/register
Propósito
Crea una nueva cuenta de empresa o transportista en el sistema ECMR, incluyendo la empresa, el usuario administrador y la dirección principal.
Objetivo
Permitir el alta de nuevas organizaciones en la plataforma ECMR con todo lo necesario para empezar a operar: datos fiscales, usuario administrador, dirección de facturación y registro en Stripe.
Casos de uso
- Una empresa de transporte se registra para empezar a gestionar eCMRs.
- Un transportista autónomo se da de alta en la plataforma.
- Un referido usa un código de invitación (
ref_code) al registrarse.
Flujo de registro
flowchart TD
A[Recibir POST /auth/register] --> B{¿NIF/CIF proporcionado?}
B -->|No| C[406 NIF_REQUIRED]
B -->|Sí| D{¿Datos de usuario proporcionados?}
D -->|No| E[406 USER_REQUIRED]
D -->|Sí| F{¿NIF/CIF ya registrado?}
F -->|Sí| G[403 COMPANY_EXISTS]
F -->|No| H{¿Email ya registrado?}
H -->|Sí| I[403 COMPANY_EXISTS]
H -->|No| J[Crear dirección con geocodificación]
J --> K[Crear empresa con datos fiscales]
K --> L[Crear usuario admin con contraseña hasheada]
L --> M[Registrar cliente en Stripe]
M --> N[Guardar usuario y empresa]
N --> O[Enviar email de bienvenida + activación]
O --> P[200 OK - Cuenta creada inactiva]
Detalles técnicos
- Valida unicidad de
invoice_data.taxid(NIF/CIF) yuser.email. - Crea una dirección parseando
addressconAddressGoogleMapssi se proporcionan datos de geocodificación. - El usuario se crea con rol
adminy unrecovery_tokenpara activación. - Se intenta registrar un cliente en Stripe (no bloquea si falla).
- Se envían dos emails: bienvenida y activación de cuenta.
- La cuenta queda inactiva hasta que el usuario haga clic en el enlace de activación recibido por email.
- Si
accountTypees"trucker", la empresa se crea como transportista.
Campos obligatorios del body:
invoice_data.taxid: NIF/CIF de la empresauser.name,user.lastname,user.email,user.passwordsocialName: Razón socialaddress: Datos de dirección
Campos opcionales: lang, ref_code (o coupon), accountType.
Nota para pruebas en demo
Los campos invoice_data.taxid y user.email deben ser únicos por
intento. Si se reutilizan valores de un alta previa, el backend puede
responder 403 COMPANY_EXISTS (comportamiento esperado).
Autenticación
No requiere autenticación.
Request
Responses
- 200
- 400
- 403
- 406
Cuenta creada exitosamente. La cuenta queda inactiva hasta la activación por email. Devuelve los datos de la empresa creada.
Response Headers
Error al crear la empresa, la dirección o el usuario (validación de datos o error de persistencia)
Response Headers
Ya existe una empresa con el mismo NIF/CIF o un usuario con el mismo email
Response Headers
Datos obligatorios faltantes en el body de la petición