Marketplace externo
Recibir una adjudicación
Este webhook solo se envía después de seleccionar una propuesta externa válida. OperioHub no marca la adjudicación como definitiva hasta recibir una aceptación correlacionada.
Sin auth Perfil: Bearer opcional configurado en la interfaz
Campos principales
Resumen de los campos relevantes para este endpoint.
| Campo | Tipo | Descripción |
|---|---|---|
eventType / eventId / occurredAt | string / uuid / ISO 8601 | Evento marketplace_order.awarded, identificador del evento y fecha de emisión. |
order | MarketplaceOperationalOrder | Mismo contrato operativo usado durante la cotización. |
marketplace | object | marketplaceOrderRequestId, selectedQuoteId y externalQuoteId. |
rider | object | null | Snapshot del rider entregado por la propuesta seleccionada. |
operations | object | Credenciales temporales agrupadas por capacidad operativa. |
operations.tracking | object | method, url, bearerToken y expiresAt para publicar ubicación. |
operations.status | object | method, url, bearerToken y expiresAt para actualizar estados del pedido adjudicado. |
operations.incidentChat | object | method, url, bearerToken y expiresAt para que la flota envíe mensajes a OperioHub. |
data.webhooks.incidentChat.url | HTTPS URL | Campo obligatorio del ACK: URL de la flota en la que OperioHub publica eventos de incidencias. |
Confirmación obligatoria
La respuesta debe ser JSON, confirmar exactamente los tres IDs recibidos y declarar el webhook de chat de la flota.
- Responder con data.accepted: true.
- data.webhooks.incidentChat.url es obligatorio y debe ser una URL HTTPS a la que OperioHub pueda publicar los eventos de chat.
- externalAssignmentId es opcional y sirve como referencia interna de la flota.
- Tras validar esta respuesta, OperioHub confirma la adjudicación y el pedido pasa a dispatcher_accepted.
- Conserva por separado los tres Bearer recibidos: tracking, status y chat tienen permisos distintos.
- Una respuesta no 2xx, malformada, rechazada, sin webhook de chat o con IDs distintos hace fallar la adjudicación y revoca los tokens emitidos.
Respuesta 202
{
"data": {
"accepted": true,
"orderId": "11111111-1111-4111-8111-111111111111",
"marketplaceOrderRequestId": "22222222-2222-4222-8222-222222222222",
"selectedQuoteId": "33333333-3333-4333-8333-333333333333",
"externalAssignmentId": "FLEET-ASSIGNMENT-42",
"webhooks": {
"incidentChat": { "url": "https://flota.example/webhooks/incident-chat" }
}
}
} Payload recibido
{
"eventType": "marketplace_order.awarded",
"eventId": "44444444-4444-4444-8444-444444444444",
"occurredAt": "2026-07-15T10:05:00.000Z",
"order": { "orderId": "11111111-1111-4111-8111-111111111111", "dispatchOrderId": "POS-93442", "currentStatus": "pending_approval" },
"marketplace": { "marketplaceOrderRequestId": "22222222-2222-4222-8222-222222222222", "selectedQuoteId": "33333333-3333-4333-8333-333333333333", "externalQuoteId": "FLEET-QUOTE-42" },
"rider": { "externalRiderId": "rider-42", "displayName": "Rider externo", "phone": null, "vehicleType": "motorcycle" },
"operations": {
"tracking": { "method": "POST", "url": "https://api.operiohub.com/api/marketplace/orders/11111111-1111-4111-8111-111111111111/external-rider-location", "bearerToken": "TRACKING_TOKEN", "expiresAt": "2026-07-15T14:05:00.000Z" },
"status": { "method": "POST", "url": "https://api.operiohub.com/api/marketplace/orders/11111111-1111-4111-8111-111111111111/external-status", "bearerToken": "STATUS_TOKEN", "expiresAt": "2026-07-15T14:05:00.000Z" },
"incidentChat": { "method": "POST", "url": "https://api.operiohub.com/api/marketplace/orders/11111111-1111-4111-8111-111111111111/external-incident-chat/messages", "bearerToken": "CHAT_TOKEN", "expiresAt": "2026-07-15T14:05:00.000Z" }
}
} Errores esperados
Respuestas habituales que debe contemplar la integración.
Confirmación inválida
La aceptación no contiene los IDs esperados, accepted no es true o falta data.webhooks.incidentChat.url.
Adjudicación no confirmada
La flota devolvió un estado no 2xx o una respuesta no válida.