Marketplace externo

Recibir una adjudicación

OperioHub confirma a la flota ganadora que su propuesta ha sido adjudicada y entrega credenciales temporales de operación.

Volver a todos los endpoints

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.

POST webhooks.award.url configurado en la interfaz 200-299 con 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.

400

Confirmación inválida

La aceptación no contiene los IDs esperados, accepted no es true o falta data.webhooks.incidentChat.url.

502

Adjudicación no confirmada

La flota devolvió un estado no 2xx o una respuesta no válida.