Saltar al contenido principal

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

  1. Valida los parámetros service_code y emails
  2. Verifica que el usuario esté autenticado y tenga compañía válida
  3. Valida el estado de pago (middleware isPaymentUpdate)
  4. Reenvía la solicitud al servicio ecmr_back
  5. ecmr_back genera el PDF y envía los emails
  6. 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ámetro service_code es obligatorio
  • EMAILS_REQUIRED: El parámetro emails es obligatorio y no puede estar vacío

Authentication Errors (401):

  • USER_NOT_FOUND: El usuario autenticado no existe en la base de datos
  • AUTHORIZATION_TOKEN_REQUIRED: Falta el token en los headers o es inválido
  • Payment validation failed (via isPaymentUpdate middleware)

Not Found Errors (404):

  • NOT_FOUND: No existe un delivery con ese service_code para 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

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.