Skip to main content

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) y user.email.
  • Crea una dirección parseando address con AddressGoogleMaps si se proporcionan datos de geocodificación.
  • El usuario se crea con rol admin y un recovery_token para 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 accountType es "trucker", la empresa se crea como transportista.

Campos obligatorios del body:

  • invoice_data.taxid: NIF/CIF de la empresa
  • user.name, user.lastname, user.email, user.password
  • socialName: Razón social
  • address: 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

Cuenta creada exitosamente. La cuenta queda inactiva hasta la activación por email. Devuelve los datos de la empresa creada.

Response Headers