Send CMR document by email.
POST/company/cmr/send
Envía el documento CMR (Carta de Porte Digital) asociado a un servicio de transporte a uno o varios destinatarios por correo electrónico. El documento PDF se genera y envía como archivo adjunto.
Objective
Permitir a las compañías distribuir el documento eCMR a las partes interesadas (clientes, transportistas, autoridades) sin necesidad de descargarlo manualmente. El servicio ecmr_back gestiona el envío asíncrono de los emails.
Use Cases
- Una compañía necesita enviar el CMR a su cliente para su contabilidad
- Se requiere enviar el CMR al transportista para su archivo
- Las autoridades aduaneras solicitan el documento CMR por email
- La compañía necesita distribuir el CMR a múltiples departamentos internos
Payment Validation
Middleware: mPlan.isPaymentUpdate
Este endpoint valida el estado de pago de la compañía antes de procesar el envío:
- Verifica que el token JWT sea válido
- Verifica que la compañía tenga permisos de pago actualizados
- Rechaza la solicitud si la compañía no tiene un pago activo o suscripción válida Si la validación de pago falla, se retornará un error 401/403 antes de procesar el envío.
Behavior
- Valida los parámetros
service_codeyemails - Verifica que el usuario esté autenticado y tenga compañía válida
- Valida el estado de pago (middleware
isPaymentUpdate) - Reenvía la solicitud al servicio ecmr_back
- ecmr_back genera el PDF y envía los emails
- Retorna confirmación de envío (no confirmación de entrega)
Notes:
- El envío de emails es asíncrono: se confirma que se envió a la cola, no que se entregó
- Cada destinatario recibirá el CMR como archivo PDF adjunto
- Máximo 10 direcciones de email por solicitud
- No se realiza tracking de apertura o entrega de los emails
- El servicio puede tardar hasta 10 segundos en responder
Preconditions
- User must be authenticated and exist in database
- User must belong to a valid company
- Company must have valid payment status (validated by isPaymentUpdate)
- A delivery with the given service_code must exist for the company
- The delivery must have an associated eCMR document
Error Codes
Validation Errors (400):
SERVICE_CODE_REQUIRED: El parámetroservice_codees obligatorioEMAILS_REQUIRED: El parámetroemailses obligatorio y no puede estar vacío
Authentication Errors (401):
USER_NOT_FOUND: El usuario autenticado no existe en la base de datosAUTHORIZATION_TOKEN_REQUIRED: Falta el token en los headers o es inválido- Payment validation failed (via
isPaymentUpdatemiddleware)
Not Found Errors (404):
NOT_FOUND: No existe un delivery con eseservice_codepara esta compañía
Service Errors (503):
- Error al comunicarse con el servicio ecmr_back
- Timeout en el envío de emails (10 segundos máximo)
Validation Flow
flowchart TD
A[Receive Request] --> B{service_code Present?}
B -->|No| C[400 SERVICE_CODE_REQUIRED]
B -->|Yes| D{emails Present & Not Empty?}
D -->|No| E[400 EMAILS_REQUIRED]
D -->|Yes| F{User Authenticated?}
F -->|No| G[401 USER_NOT_FOUND]
F -->|Yes| H{Token Present?}
H -->|No| I[401 AUTHORIZATION_TOKEN_REQUIRED]
H -->|Yes| J{Payment Valid?}
J -->|No| K[401/403 Payment Failed]
J -->|Yes| L{User Exists in DB?}
L -->|No| M[401 USER_NOT_FOUND]
L -->|Yes| N{Company Found?}
N -->|No| O[401 COMPANY_NOT_FOUND]
N -->|Yes| P{Delivery Exists?}
P -->|No| Q[404 NOT_FOUND]
P -->|Yes| R{Call ecmr_back}
R -->|Success| S[200 Email Sent]
R -->|Service Error| T[503 Service Error]
Request
Responses
- 200
- 400
- 401
- 403
- 404
- 503
El CMR se ha enviado exitosamente a los destinatarios especificados. La respuesta confirma que el email fue enviado a la cola de ecmr_back, pero NO confirma la entrega efectiva a los destinatarios.
Solicitud inválida - Parámetros faltantes o incorrectos. Códigos de error:
SERVICE_CODE_REQUIRED: Falta el parámetroservice_codeEMAILS_REQUIRED: Falta el parámetroemailso está vacío (array con longitud 0)
No autorizado - Problemas de autenticación o pago. Códigos de error:
USER_NOT_FOUND: El usuario autenticado no existe en la base de datosAUTHORIZATION_TOKEN_REQUIRED: Falta el token en los headers- Payment validation failed (middleware
isPaymentUpdate): La compañía no tiene estado de pago válido
Prohibido - La compañía no tiene permisos de pago actualizados.
El middleware isPaymentUpdate rechazó la solicitud por falta de pago activo.
No encontrado - El delivery no existe para esta compañía. Códigos de error:
NOT_FOUND: No existe un delivery con eseservice_codepara esta compañía
Servicio no disponible - Error al comunicarse con el servicio ecmr_back o timeout en el envío. Posibles causas:
- El servicio ecmr_back no está disponible
- Timeout esperando el envío de emails (10 segundos máximo)
- Error interno en el servicio ecmr_back