Digitally sign an awarded auction
POST/company/bid-auctions/:service_code/sign
Permite al transportista ganador firmar digitalmente la adjudicación de una subasta. La firma se realiza mediante una imagen de firma manuscrita cargada por el usuario.
Objetivo
Formalizar legalmente la aceptación del transporte por parte del transportista ganador, generando automáticamente los documentos y registros necesarios para el proceso logístico.
Efectos Secundarios Automáticos ⚠️
Este endpoint realiza automáticamente las siguientes operaciones al completarse:
-
Creación del Delivery:
- Se crea un registro de delivery asociado a la subasta
- El delivery se inicializa con los datos de la subasta
- Se establece la relación auction.delivery → delivery._id
-
Generación del eCMR:
- Se genera automáticamente el documento eCMR (Carta de Porte Digital)
- El eCMR se asocia al delivery recién creado
- Se inicializa con los datos de transporte de la subasta
-
Actualización de Estados:
- La subasta se marca como firmada
- Se establece signed_by_trucker: true
- Se registra la fecha y hora de la firma
-
Relaciones entre Entidades:
Auction → Delivery → eCMR
(auction._id) (delivery.auction) (ecmr.delivery)
Requisitos del Archivo de Firma
- Formato: JPEG o PNG
- Tamaño máximo: 5MB
- Resolución mínima: 300x100px
- Contenido: Imagen de firma manuscrita legible
Casos de Uso
- Transportista ganador firma la aceptación de una subasta adjudicada
- Sistema generando automáticamente delivery y eCMR tras la firma
- Integración con flujos automatizados de gestión de transporte
Notas Importantes
- Solo el transportista ganador puede firmar
- La subasta debe estar en estado "awarded"
- La firma es irreversible y genera registros permanentes
- Los documentos generados estarán disponibles en los endpoints de delivery y ecmr
Diagrama del Flujo de Firma:
flowchart LR
A[Usuario firma subasta] --> B{¿Es ganador?}
B -->|No| C[Error: 403 Forbidden]
B -->|Sí| D{¿Estado awarded?}
D -->|No| E[Error: 400 Bad Request]
D -->|Sí| F[Guardar imagen de firma]
F --> G[Marcar: signed_by_trucker = true]
G --> H[Crear Delivery]
H --> I[Generar eCMR]
I --> J[Establecer relaciones]
J --> K[Retornar Auction actualizada]
style C fill:#FFB6C1
style E fill:#FFB6C1
style K fill:#90EE90
Ejemplo con cURL:
curl -X POST \
-H "Authorization: Bearer {token}" \
-F "signImage=@firma.png" \
https://api.demo.cargoffer.com/company/bid-auctions/TRANS-12345/sign
Ubicación de código: src/features/company/bid-auction/company.sign.js líneas 100-118
Request
Responses
- 200
- 400
- 401
Firma registrada exitosamente. La subasta pasa a estado 'completed' y se crea el delivery.
Response Headers
Datos de firma inválidos. Posibles causas:
- INVALID_FILE: Archivo no es una imagen válida
- FILE_TOO_LARGE: Tamaño excede el límite de 5MB
- INVALID_FORMAT: Formato no soportado (solo JPEG/PNG)
- AUCTION_NOT_SIGNED: La subasta no cumple requisitos para firma
Response Headers
No autorizado. Posibles causas:
- NO_TOKEN: Token JWT inválido o expirado
- Usuario no es el ganador de la subasta
- Subasta no está en estado 'awarded'