logo
logo
Docs Shipping
Envío de pedidos realizados en la plataforma iFood: Este módulo permite que los comerciantes envíen pedidos realizados en la plataforma iFood (Pedidos que ya tienen un orderId). Esto es especialmente útil para los comerciantes que tienen sus propios repartidores, pero que pueden necesitar el servicio de entrega de iFood en situaciones de sobrecarga o falta de repartidores.Para utilizar este tipo de servicio debe ser contratado a través del menú Servicios del Portal del Socio. De lo contrario, no será posible registrar pedidos, verificar la disponibilidad de entrega o solicitar un repartidor.
Elegibilidad Este tipo de entrega no está disponible para cualquier pedido. El pedido solo será elegible cuando cumpla con algunos criterios como:
  • El comerciante está en un modelo de negocio que permite esta solicitud (si el comerciante es de servicio completo, el pedido ya es entregado por nuestra logística y no es posible solicitar un repartidor asociado)
  • El pedido es para entrega a domicilio (no es posible solicitar en los pedidos Para Recoger)
  • El área de entrega está cubierta por los repartidores asociados
Envío de pedidos realizados a través de otros canales de venta: El módulo también permite que los comerciantes envíen pedidos que se han realizado a través de otros canales de venta, como teléfono, WhatsApp, aplicación o sitio web propio (Pedidos que no tienen un orderId preexistente). Para obtener más información sobre Sob Demanda, visite https://news.ifood.com.br/entrega-facil-o-delivery-do-ifood-fora-do-app/

Definiciones

Los pedidos en la plataforma iFood son aquellos que ya tienen un orderId, que contiene la información necesaria del restaurante y del cliente para realizar la cotización y solicitud.Por otro lado, los pedidos fuera de la plataforma iFood no tienen un orderId preexistente, ya que no se originan internamente. En este caso, se necesitan información adicional para realizar la cotización y solicitud.
Para utilizar el módulo, Sob Demanda se debe contratar a través del menú Servicios del Portal de Aliados. En caso contrario, no será posible registrar pedidos, consultar disponibilidad de entrega o solicitar domiciliario.
Estos criterios son aplicables solo para las integradoras que desean integrar exclusivamente con el módulo Shipping al contratar servicios de entrega para pedidos fuera de la plataforma iFood. Para las integradoras que también desean utilizar el módulo de Orders, se aplica el criterio de homologación de Orders.Para aquellas que ya están homologadas, aunque no es obligatorio, se recomienda que para utilizar el módulo Shipping también se realice la homologación, con el fin de validar si las solicitudes se están realizando correctamente y detectar posibles problemas.
  • Hacer requests al endpoint de /polling regularmente cada 30 segundos;
  • Enviar /acknowledgment para todos los eventos recibidos inmediatamente después del request de polling;
  • Recibir, confirmar y enviar un pedido Sob Demanda para ahora (orderType = DELIVERY / orderTiming = IMMEDIATE / salesChannel = POS);
  • Recibir y cancelar un pedido de entrega para ahora (orderType = DELIVERY / orderTiming = IMMEDIATE / salesChannel = POS). Es obligatorio disponibilizar una lista con todos los códigos/motivos de cancelación previstos en la documentación;
  • Actualizar el estado de un pedido cancelado por el cliente o iFood;
  • Actualizar el estado de un pedido que puede haber sido confirmado/cancelado por otra aplicación como por ejemplo: Gestor de Pedidos;
  • Recibir el mismo evento más de una vez en el polling y descartarlo si este evento se entregó más de una vez;;
  • Aceptar o rechazar un cambio de dirección.
  • Debe ser capaz de verificar el código de recolección y saber si el código ha sido validado.
  • Renovar el token solamente cuando esté a punto de vencer o inmediatamente después de que venza.
  • La aplicación debe respetar las políticas de rate limit de cada endpoint.
  • El comando impreso siguiendo el modelo sugerido en la documentación es un requisito deseable.
  • Informar en pantalla y/o comando impreso la información para indicar donde el domiciliario debe dejar el pedido (que viene en el campo delivery.observations)

Pedidos fuera de la plataforma iFood

ClientAPIPolling de Eventos1- Disponibilidad de EntregaGET /merchants/{merchantId}/deliveryAvailabilitiesDisponibilidad y ventanas de entrega2- Registro del pedidoPOST /merchants/{merchantId}/ordersEnvía evento de código de confirmaciónID del pedido3- Cancelación del pedidoPOST /orders/{orderId}/cancelEnvía evento de cancel orderRetorna solicitud aceptadaClientAPIPolling de Eventos
Antes de registrar un pedido fuera de iFood, es importante consultar la disponibilidad de entrega. Es posible que la dirección no esté dentro del área de cobertura e incluso si la dirección está dentro del área, es posible que haya alguna indisponibilidad temporal en la región, como un radio de entrega temporalmente reducido. A través de esta consulta también es posible obtener el período de tiempo estimado para la entrega del pedido e informar al cliente.
Este paso no es obligatorio, pero realizar la consulta antes de registrar el pedido evita que se produzcan errores y permiten que la tienda planifique con antelación la preparación del pedido.
Para consultar la disponibilidad logística, solo debes realizar la solicitud GET /deliveryAvailabilities pasando los siguientes parámetros:
  • merchantId - ID de la tienda que va a solicitar la entrega
  • latitude - coordenada latitudinal de la dirección de entrega
  • longitude - coordenada longitudinal de la dirección de entrega
/shipping/v1.0/merchants/123f78cf-2879-44f7-92b7-1e4668dda999/deliveryAvailabilities?latitude=-23.455575&longitude=-46.669957

Éxito

Este endpoint devuelve el http status code 200 OK en caso que la logística esté disponible. El body de la respuesta contiene::
  • id - id de la cotización
  • expirationAt - fecha y hora de expiración de la cotización UTC
  • createdAt - fecha y hora de creación de la cotización UTC
  • quote.grossValue - valor bruto de la entrega
  • quote.discount - valor del descuento de la entrega
  • quote.raise - valor del incremento
  • quote.netValue - valor neto de la entrega
  • deliveryTime.min - tiempo mínimo estimado para la entrega en segundos
  • deliveryTime.max - tiempo máximo estimado para la entrega en segundos
  • distance - radio de distancia de entrega en metros (1000, 2000, 3000...)
  • preparationTime - tiempo de preparación en segundos
  • hasPaymentMethods - informa si hay métodos de pago disponibles
  • paymentMethods.id - id del método de pago
  • paymentMethods.brand - marca de la tarjeta de crédito/débito
  • paymentMethods.liability - responsable de recibir el pago (IFOOD)
  • paymentMethods.paymentType - tipo de pago ej.: OFFLINE
  • paymentMethods.method - método de pago CREDIT,DEBIT o CASH
{
  "id": "57cd1046-2e06-446f-a2dd-18a518212c3c",
  "expirationAt": "2023-08-18T19:49:06Z",
  "createdAt": "2023-08-17T19:49:06Z",
  "distance": 3000,
  "preparationTime": 60,
  "quote": {
    "grossValue": 7.99,
    "discount": 0,
    "raise": 0,
    "netValue": 7.99
  },
  "deliveryTime": {
    "min": 1200,
    "max": 1800
  },
  "hasPaymentMethods": true,
  "paymentMethods": [
    {
      "id": "21c65a8c-f29e-463f-b0bd-240edeb593c4",
      "brand": "CardBrand",
      "liability": "IFOOD",
      "paymentType": "OFFLINE",
      "method": "CREDIT"
    },
    {
      "liability": "IFOOD",
      "paymentType": "OFFLINE",
      "method": "CASH",
      "id": "93c1c7c7-61f1-4dd9-bb84-62a03254701d"
    }
  ]
}

Error

Este endpoint devuelve el http status code 400 Bad Request si la logística no está disponible para entregar el pedido en esta ubicación o en esa tienda.
NombreDescripción
BadRequestValidación de modelo
BadRequestMerchantSocio no disponible
DeliveryDistanceTooHighLa dirección de entrega excede el área logística atendida por iFood
OffOpeningHoursEl pedido está fuera del horario de operación de la logística de iFood
OriginNotFoundAún no entregamos en tu región, ya que tu tienda está fuera del área logística de iFood
ServiceAreaMismatchLa dirección de entrega está fuera de nuestra área de cobertura
HighDemandLa logística de iFood está temporalmente no disponible. Por favor, intenta de nuevo más tarde
MerchantStatusAvailabilityRestaurante con pendencia, contacte el Soporte de Sob Demanda
InvalidPaymentMethodsEl método de pago elegido por el cliente no es aceptado por la máquina de iFood
NRELimitExceededSu tienda tiene muchos repartidores asociados esperando. Libere repartidores para que pueda solicitar la entrega Sob Demanda.
{
  "code": "DeliveryDistanceTooHigh",
  "message": "Sob Demanda no disponible: la dirección de entrega está a más de 10 km de tu tienda.",
  "details": ["Delivery distance too high"]
}
Este endpoint devuelve el http status code 500 Internal Server Error en caso que haya alguna falla al registrar ese pedido.
NombreDescripción
InternalServerErrorError interno del servidor
{
  "code": "InternalServerError",
  "message": "Lo sentimos, tuvimos un problema. Inténtalo de nuevo más tarde.",
  "details": ["Internal server error"]
}
Para registrar un pedido y solicitar un domiciliario aliado, sólo debes hacer la solicitud POST /orders pasando en el body la información del pedido.
Importante! Un domiciliario aliado se asignará automáticamente después de registrar exitosamente un pedido a través de este endpoint. Si la entrega no es posible, el pedido no es registrado y se vuelve un error.
Para garantizar la seguridad de las entregas y evitar casos de pedidos perdidos, se generará un código de confirmación de entrega. Este código consta de los últimos 4 dígitos del número de teléfono del consumidor final proporcionado en el pedido. El repartidor de iFood solicitará esta secuencia de números al realizar la entrega.

No quiero que mi pedido tenga un Código de Confirmación de Entrega

Si no tiene acceso al número de teléfono del cliente o no desea proporcionarlo, deberá enviar customer.phone.type="STORE" para que no se solicite el código de confirmación de entrega.Para que el pedido tenga habilitado el código de confirmación de entrega, se debe proporcionar el número de teléfono del cliente y este número de teléfono debe ser válido, ya que solo así el clientepodrá proporcionar el código de confirmación de entrega correcto al repartidor de iFood.
¡Atención! El consumidor final debe ser informado de que el repartidor de iFood solicitará el código de confirmación y que este código se refiere a los últimos 4 dígitos de su número de teléfono. Si el consumidor no conoce el código en el momento de la entrega, el pedido será cancelado, lo que resultará en una mala experiencia para el cliente y pérdidas para el restaurante.
Socios que utilizan la página de seguimiento de iFood
El código de confirmación estará disponible en la página de seguimiento de iFood para que el consumidor final pueda proporcionar el código correcto al repartidor de iFood.
Socios que no utilizan la página de seguimiento de iFood
Para proporcionar el código de confirmación en caso de que no utilice la página de seguimiento de iFood, será necesario consumir el atributo metadata.CODE del evento DELIVERY_DROP_CODE_REQUESTED para que el código se pase al consumidor final. Este evento se propagará solo en situaciones donde el código de confirmación sea obligatorio, por lo tanto, si el evento no se envía, significa que no será necesaria la confirmación de entrega.
¡Atención! Cuando se valide el código de confirmación de entrega, propagaremos el evento DELIVERY_DROP_CODE_VALIDATION_SUCCESS. Si este evento no se envía, el código no habrá sido validado.
A continuación, se muestran todos los campos de pedido que se registrarán en iFood.Nota: Los campos marcados con un asterisco (*) son obligatorios.
NombreTipoDescripción
customer*objectDatos del cliente.
customer.name*stringEscribe el nombre del cliente. Formato: Libre, con límite de 50 caracteres.
customer.phone*objectDatos del teléfono del cliente.
customer.phone.typestringTipo de teléfono del cliente. Los valores posibles son STORE o CUSTOMER. Si no se envía, será CUSTOMER.
customer.phone.countryCode*stringEspecifica el código de país. Formato: Un número de 2 dígitos. Ejm: 55. No es necesario si customer.phone.type es STORE.
customer.phone.areaCode*stringEscribe el código de área de una localidad. Formato: Un número de 2 dígitos. Ej: 41. No es necesario si customer.phone.type es STORE.
customer.phone.Number*stringEscribe el número de teléfono del cliente. Formato: Un número de 7 a 9 dígitos Ej: 995663945. No es necesario si customer.phone.type es STORE.
delivery*objectDatos de entrega del cliente.
delivery.merchantFee*floatTarifa de cobro realizada por el aliado
delivery.preparationTimeintegerEscribe el tiempo de preparación del pedido en segundos
delivery.quoteIdstringID de la cotización solicitada anteriormente para solicitar la entrega
delivery.deliveryAddressobjectDetalles de la dirección de entrega del cliente.
delivery.deliveryAddress.postalCode*stringEscribe el código postal de la dirección de entrega del cliente. Formato: Un número de 8 dígitos. Ej: 82510290
delivery.deliveryAddress.streetNumber*stringEscribe el número de dirección de entrega delservicio para el cliente.
delivery.deliveryAddress.streetName*stringEscribe el nombre de la calle del cliente. Formato: Libre, con límite de 50 caracteres.
delivery.deliveryAddress.complementstringEscribe el complemento del cliente (bloque, departamento, etc.). Formato: Libre, con límite de 50 caracteres.
delivery.deliveryAddress.referencestringEscribe el punto de referencia del cliente Formato: Libre, con límite de 70 caracteres.
delivery.deliveryAddress.neighborhood*stringEscribe el barrio de la dirección del cliente. Formato: Libre, con límite de 50 caracteres.
delivery.deliveryAddress.city*stringEscribe la ciudad de la dirección del cliente. Formato: Libre, con un mínimo de 2 y un máximo de 50 caracteres.
delivery.deliveryAddress.state*stringEscribe el estado de la dirección del cliente. Formato: Dos letras, que representan las siglas del estado correspondiente. Ej: SP
delivery.deliveryAddress.country*stringEscribe el país de la dirección del cliente. Formato: Dos letras Ej: CO
delivery.deliveryAddress.coordinates*objectDatos de las coordenadas de la dirección
delivery.deliveryAddress.coordinates.latitude*floatEscribe la latitud de la dirección del cliente.
delivery.deliveryAddress.coordinates.longitude*floatEscribe la longitud de la dirección del cliente.
items*array of objectsDatos de cada artículo del pedido.
items.id*uuidIdentificación del artículo
items.name*stringEscribe el nombre del artículo Formato: Libre, con límite de 50 caracteres.
items.externalCodestringCódigo de artículo en su aplicación
items.quantity*integerEscribe la cantidad del artículo. El valor debe ser mayor que cero
items.unitPrice*floatRepresenta el precio unitario de cada artículo. El valor debe ser mayor o igual a cero
items.optionsarray of objectsDatos complementarios
items.options.id*uuidInforma el identificador del complemento
items.options.name*stringEscribe el nombre del complemento. Formato: Libre, con límite de 50 caracteres.
items.options.externalCodestringCódigo de artículo en su aplicación
items.options.index*integerEscribe el índice en el array de las guarniciones
items.options.quantity*integerEscribe la cantidad de aquella guarnición
items.options.unitPrice*floatEscribe el precio unitario de la guarnición
items.options.price*floatEscribe el precio total de la guarnición options.price = options.quantity * options.unitPrice
items.price*floatEscribe el precio total del precio del producto = quantity * unitPrice. El valor debe ser mayor o igual a cero
items.optionsPrice*floatEscribe el precio total de las guarniciones. El valor debe ser mayor o igual a cero
items.totalPrice*floatEscribe el precio total totalPrice = price + optionsPrice. El valor debe ser mayor o igual a cero
paymentsobjectInformar métodos de pago
payments.methodsarray of objectsMétodos de pago. Obligatorio cuando la forma de pago sea OFFLINE
payments.methods.method*stringCREDIT, DEBIT o CASH (solo 1 opción)
payments.methods.type*stringTipo de pago ej. OFFLINE
payments.methods.value*floatMonto pagado a través del método informado
payments.methods.cardobjectTarjeta de crédito/débito. Obligatorio cuando el método sea CREDIT/DEBIT
payments.methods.card.brand*stringMarca de tarjeta de crédito/débito
payments.methods.cashobjectPago en efectivo. Obligatorio cuando el método sea CASH
payments.methods.cash.changeFor*floatCambio para cuánto. Valor en efectivo físico que el conductor deberá recibir.
displayIdstringID amigable para facilitar la identificación del pedido por la tienda y el conductor. Formato: Hasta 4 dígitos alfanuméricos. Ej: A4BC
metadataobjectMetadatos para información adicional, requeridos, identificación de pedidos.Ej: M3019, idPDV501248, identificadorPOS Formato: Límite de 20
metadata.prop1*Dictionary<string, string>Información adicional

Ejemplos

{
  "customer": {
    "name": "Customer Name",
    "phone": {
      "type": "CUSTOMER",
      "countryCode": "55",
      "areaCode": "11",
      "number": "999999999"
    }
  },
  "delivery": {
    "merchantFee": 0,
    "preparationTime": 900,
    "quoteId": "3d2a7e2c-34ad-4b72-9ee5-79cec2b482a7",
    "deliveryAddress": {
      "postalCode": "69923000",
      "streetNumber": "100",
      "streetName": "Ramal Bujari",
      "complement": "",
      "neighborhood": "Centro",
      "city": "Bujari",
      "state": "AC",
      "country": "BR",
      "reference": "Cerca de la pastelería",
      "coordinates": {
        "latitude": -9.822159,
        "longitude": -67.948475
      }
    }
  },
  "items": [
    {
      "id": "7b956744-38f6-418a-90fa-22676b53e6d1",
      "name": "Produto Teste",
      "externalCode": "123456",
      "quantity": 1,
      "unitPrice": 1,
      "price": 1,
      "optionsPrice": 0,
      "totalPrice": 1,
      "options": []
    }
  ],
  "payments": {
    "methods": [
      {
        "method": "CREDIT",
        "type": "OFFLINE",
        "value": 1,
        "card": {
          "brand": "CardBrand"
        }
      }
    ]
  },
  "displayId" : "AB3D",
  "metadata": {
    "additionalProp1": "string"
  }
}

Formas de pago

Pagos offline el repartidor recibirá el valor del pedido en la entrega a través de la maquinita de iFood o en efectivo dependiendo del método enviado, es necesario enviar el objeto de pago. Es necesario que la cotización tenga este método de pago en la lista de paymentMethods, de lo contrario se devolverá un error.Pagos en línea no procesamos pagos en línea, este pago es recaudado por el Comerciante, por lo que no es necesario enviar el objeto de pago.

Tiempo de Preparación

Para mejorar la eficiencia y la satisfacción del cliente, el campo delivery.preparationTime puede ser utilizado para indicar el tiempo necesario para preparar el pedido antes de la asignación del repartidor. Este campo es opcional y, si no se envía, se mantendrá el modelo actual de asignación inmediata.Cómo utilizar el Tiempo de Preparación
  • Sin Tiempo de Preparación Informado: Si no se envía el campo delivery.preparationTime, la asignación del repartidor ocurrirá inmediatamente después de la confirmación del pedido, siguiendo el modelo actual.
  • Con Tiempo de Preparación Informado: Cuando se envíe el campo delivery.preparationTime, la asignación del repartidor se realizará solo después del tiempo de preparación especificado. En este caso, el campo delivery.preparationTime debe enviarse con el valor correspondiente al tiempo necesario en segundos. Por ejemplo, si el tiempo de preparación es de 15 minutos, envíe delivery.preparationTime=900. Esto permite que el restaurante tenga el tiempo necesario para preparar el pedido antes de que se asigne el repartidor.
¡Atención! Es importante que el tiempo de preparación informado sea lo más preciso posible para evitar retrasos en la entrega y garantizar una buena experiencia para el cliente. Informar un tiempo de preparación incorrecto puede resultar en una mala experiencia para el cliente y pérdidas para el restaurante, como el cierre por acumulación de repartidores.

Metadata

El campo metadata, permite agregar información complementaria al pedido, esta información no se pasa a la aplicación del conductor o al gestor de pedidos
/shipping/v1.0/merchants/<merchantId>/orders

Éxito

Este endpoint devuelve el http status code 202 Accepted si el pedido se registra correctamente y el domiciliario aliado se asigna sin problemas. El body de la respuesta contiene:
  • id - ID del pedido creado
  • trackingUrl - URL de la página de seguimiento del pedido
{
  "id": "522e4d7e-0ce1-44f3-8cc7-73a9f190a5e8",
  "trackingUrl": "https://meupedido.ifood.com.br/522e4d7e-0ce1-44f3-8cc7-73a9f190a5e8"
}
¿El pedido fuera de iFood registrado está disponible en el polling? Sí. El pedido que se registró para ser entregado por uno de los domiciliarios aliados de iFood es procesado por nuestra infraestructura y está disponible en el polling de la API de Order. El campo salesChannel="POS" identifica los pedidos que se importaron y provienen de otro canal de adquisición.
¿Es posible rastrear un pedido entregado por Sob Demanda? Sí. Después de que el pedido se registre con éxito, se devuelve el ID del pedido, que se puede consultar en el endpoint del tracking de la API del Order.

Errores

Este endpoint devuelve el http status code 400 Bad Request en caso que la logística no esté disponible para entregar el pedido o ocurra alguna falla al registrar ese pedido.
NombreDescripción
BadRequestValidación de modelo
BadRequestCustomerCliente no disponible
BadRequestMerchantSocio no disponible
DeliveryDistanceTooHighLa dirección de entrega excede el área logística atendida por iFood
HighDemandLa logística de iFood está temporalmente no disponible. Por favor, intenta de nuevo más tarde
MerchantEasyDeliveryDisabledEl servicio no está disponible
OffOpeningHoursEl pedido está fuera del horario de operación de la logística de iFood
OriginNotFoundAún no entregamos en tu región, ya que tu tienda está fuera del área logística de iFood
PaymentMethodNotFoundEl método de pago elegido por el cliente no es aceptado por la máquina de iFood
PaymentTotalInvalidEl valor pagado a través del método informado no coincide con el valor total de la compra (los valores de “value” y “totalPrice” no coinciden)
ServiceAreaMismatchLa dirección de entrega está fuera de nuestra área de cobertura
NRELimitExceededSu tienda tiene muchos repartidores asociados esperando. Libere repartidores para que pueda solicitar la entrega Sob Demanda.
{
  "code": "DeliveryDistanceTooHigh",
  "message": "Sob Demanda no disponible: la dirección de entrega está a más de 10 km de tu tienda.",
  "details": ["Delivery distance too high"]
}
Este endpoint retorna o http status code 500 Internal Server Error si ocurre alguna falla al registrar el pedido.
NombreDescripción
InternalServerErrorError interno del servidor
{
  "code": "InternalServerError",
  "message": "Lo sentimos, tuvimos un problema. Inténtalo de nuevo más tarde.",
  "details": ["Internal server error"]
}
A través de este flujo, el cliente podrá confirmar su dirección o solicitar un cambio en la misma. En los casos en que haya un cambio en la dirección de entrega, se llevará a cabo un proceso de validación por parte del socio, donde se decidirá la aprobación o el rechazo de la solicitud.Los clientes que siguen sus pedidos a través de la página de seguimiento proporcionada por iFood tienen la opción de confirmar la dirección de entrega o solicitar su cambio. Para que esto sea posible, es necesario que el pedido no haya sido creado con el atributo customer.phone.type="STORE".
Página de seguimientoAPIClienteEl cliente confirma/solicita cambio de direcciónConfirmación/Solicitud de cambio de direcciónEvento DAR/DAUEvento DAR/DAUAceptación/Rechazo de la solicitudEl socio acepta o rechaza el cambio de direcciónEn caso de ninguna acción, rechazo automático después de 15 minutosEvento DAD/DAAEl cliente visualiza el resultado de la solicitudEvento DAD/DAAPágina de seguimientoAPICliente
¡Atención! Asegúrese de enviar el número de teléfono correcto del cliente, utilizado como WhatsApp, para que se envíe el código de confirmación de cambio (OTP). Este procedimiento es fundamental para garantizar la seguridad del socio, del cliente y de la entrega.
Los socios que opten por crear su propia experiencia de confirmación o solicitud de cambio de dirección de entrega deben implementar los endpoints responsables de este flujo.
ClientAPI1 - El cliente confirma o solicita cambio de direcciónConfirmación/Solicitud de cambio de direcciónEvento DAR/DAUAceptación/Rechazo de la solicitud2 - El socio acepta o rechaza el cambio de dirección2.1 - En caso de ninguna acción, rechazo automático después de 15 minutosEvento DAD/DAAClientAPI
¡Atención! En este flujo, iFood no realiza ningún proceso de confirmación de cambio con envío de un código OTP. La responsabilidad de validar y garantizar este proceso recae en el socio.
Para confirmar la dirección, simplemente realice la solicitud POST /userConfirmAddress pasando los siguientes parámetros:
  • orderId - ID del pedido que tendrá la dirección confirmada
/shipping/v1.0/orders/:orderId/userConfirmAddress

Respuestas

Éxito
Este endpoint devuelve HTTP Status 202, sin nada en el cuerpo de la respuesta El polling recibirá un evento de DELIVERY_ADDRESS_CHANGE_USER_CONFIRMED cuando la solicitud sea exitosa.
Error
Este endpoint devuelve el código de estado HTTP 400 Bad Request si no se proporcionan los parámetros esperados.
NombreDescripción
BadRequestValidación de modelo
{
  "code": "BadRequest",
  "message": "Hubo un problema al leer la información. Verifique la información enviada.",
  "details": [
    "El campo 'OrderID' debe estar en formato uuid."
  ]
}
Este endpoint devuelve el código de estado HTTP 404 Not Found si el pedido no se encuentra, está completado o cancelado, o fue creado hace más de 8 horas.
NombreDescripción
OrderNotFoundPedido no encontrado
{
  "code": "OrderNotFound",
  "message": "Pedido no encontrado.",
  "details": []
}
Este endpoint devuelve el código de estado HTTP 409 Operation Conflict si hay un conflicto en la operación, como intentar confirmar la dirección de un pedido con cambio pendiente/confirmado/rechazado.
NombreDescripción
ChangeAddressOperationConflictConflicto en las operaciones de cambio de dirección.
{
  "code": "ChangeAddressOperationConflict",
  "message": "Existe un conflicto en la confirmación/solicitud de cambio de dirección de este pedido, ya puede tener la dirección confirmada por el cliente, o una solicitud de cambio pendiente/concluida",
  "details": []
}
Este endpoint devuelve el código de estado HTTP 500 Internal Server Error si ocurre algún error al registrar este pedido.
NombreDescripción
InternalServerErrorError interno del servidor
Cuando se solicite un cambio en la dirección de entrega, se generará un evento DELIVERY_ADDRESS_CHANGE_REQUESTED y se enviará a través del polling. Este evento indica que se ha solicitado el cambio de dirección, y la nueva dirección solicitada estará disponible en el atributo metadata.address.
¡Importante! Después de enviar la solicitud de cambio de dirección de entrega, el socio tendrá hasta 15 minutos para aceptar o rechazar la solicitud. Si no se toma ninguna acción dentro de ese tiempo, la solicitud será rechazada automáticamente.
Para solicitar el cambio de dirección, simplemente realice la solicitud POST /deliveryAddressChangeRequest pasando los siguientes parámetros:Los parámetros marcados con * son obligatorios
  • orderId* el ID del pedido que tendrá la dirección confirmada
  • streetName* nombre de la calle a la que se cambiará la dirección.
  • streetNumber número de la callea la que se cambiará la dirección.
  • complement complemento de la dirección a la que se cambiará.
  • reference referencia de la dirección a la que se cambiará.
  • neighborhood* barrio al que se cambiará la dirección.
  • city* ciudad a la que se cambiará la dirección.
  • state* estado al que se cambiará la dirección.
  • country* país al que se cambiará la dirección.
  • coordinates* coordenadas a las que se cambiará la dirección.
  • coordinates.latitude* latitud a la que se cambiará la dirección.
  • coordinates.longitude* longitud a la que se cambiará la dirección.
/shipping/v1.0/orders/:orderId/deliveryAddressChangeRequest

Respuestas

Éxito
Este endpoint devuelve HTTP Status 202, sin nada en el cuerpo de la respuesta El polling recibirá un evento de DELIVERY_ADDRESS_CHANGE_REQUESTED cuando la solicitud sea exitosa.
Error
Este endpoint devuelve el código de estado HTTP 400 Bad Request si no se proporcionan los parámetros esperados.
NombreDescripción
BadRequestValidación de modelo
MaxDistanceHigherThanAllowedSi el cambio de dirección supera los 500m.
{
  "code": "BadRequest",
  "message": "Hubo un problema al leer la información. Verifique la información enviada.",
  "details": [
    "El campo 'StreetName' es obligatorio.",
    "El campo 'Neighborhood' es obligatorio.",
    "El campo 'City' es obligatorio.",
    "El campo 'State' es obligatorio.",
    "El campo 'Country' es obligatorio.",
    "El campo 'Latitude' es obligatorio.",
    "El campo 'Longitude' es obligatorio."
  ]
}
Este endpoint devuelve el código de estado HTTP 404 Not Found si el pedidono se encuentra, está completado o cancelado, o fue creado hace más de 8 horas.
NombreDescripción
OrderNotFoundPedido no encontrado
{
  "code": "OrderNotFound",
  "message": "Pedido no encontrado.",
  "details": []
}
Este endpoint devuelve el código de estado HTTP 409 Operation Conflict si hay un conflicto en la operación, como intentar confirmar la dirección de un pedido con cambio pendiente/confirmado/rechazado.
NombreDescripción
ChangeAddressOperationConflictConflicto en las operaciones de cambio de dirección.
{
  "code": "ChangeAddressOperationConflict",
  "message": "Existe un conflicto en la confirmación/solicitud de cambio de dirección de este pedido, ya puede tener la dirección confirmada por el cliente, o una solicitud de cambio pendiente/concluida",
  "details": []
}
Este endpoint devuelve el código de estado HTTP 500 Internal Server Error si ocurre algún error al registrar este pedido.
NombreDescripción
InternalServerErrorError interno del servidor
Para aprobar el cambio de dirección, simplemente realice la solicitud POST /acceptDeliveryAddressChange pasando los siguientes parámetros:
  • orderId - ID del pedido que tendrá la dirección de entrega modificada
/shipping/v1.0/orders/:orderId/acceptDeliveryAddressChange

Respuestas

Éxito
Este endpoint devuelve HTTP Status 202, sin nada en el cuerpo de la respuesta El polling recibirá un evento de DELIVERY_ADDRESS_CHANGE_ACCEPTED cuando la solicitud sea exitosa.
Error
Este endpoint devuelve el código de estado HTTP 400 Bad Request si no se proporcionan los parámetros esperados.
Cuando el nombre del error es RegionMismatch, se enviará un evento DELIVERY_ADDRESS_CHANGE_DENIED con la acción="region-mismatch"
NombreDescripción
BadRequestValidación de modelo
RegionMismatchLa nueva dirección no está en la misma región que la original
{
  "code": "BadRequest",
  "message": "Hubo un problema al leer la información. Verifique la información enviada.",
  "details": [
    "Campo 'OrderID' debe estar en formato uuid."
  ]
}
Este endpoint devuelve el código de estado HTTP 404 Not Found si no se encuentra el pedido, está completado o cancelado, o fue creado hace más de 8 horas.
NombreDescripción
OrderNotFoundPedido no encontrado
{
  "code": "OrderNotFound",
  "message": "Pedido no encontrado.",
  "details": []
}
Este endpoint devuelve el código de estado HTTP 409 Operation Conflict si hay un conflicto en la operación, como intentar confirmar la dirección de un pedido con cambio pendiente/confirmado/rechazado.
NombreDescripción
ChangeAddressOperationConflictConflicto en las operaciones de cambio de dirección.
ChangeAddressOperationNotStartedNo hay un cambio de dirección pendiente.
{
  "code": "ChangeAddressOperationConflict",
  "message": "Existe un conflicto en la confirmación/solicitud de cambio de dirección de este pedido, ya puede tener la direcciónconfirmada por el cliente, o una solicitud de cambio pendiente/concluida",
  "details": []
}
Este endpoint devuelve el código de estado HTTP 500 Internal Server Error si hay algún error al registrar este pedido.
NombreDescripción
InternalServerErrorError interno del servidor
Para rechazar el cambio de dirección, simplemente realice la solicitud POST /denyDeliveryAddressChange pasando los siguientes parámetros:
  • orderId - ID del pedido que tendrá la solicitud de cambio de dirección rechazada
/shipping/v1.0/orders/:orderId/denyDeliveryAddressChange

Respuestas

Éxito
Este endpoint devuelve HTTP Status 202, sin nada en el cuerpo de la respuesta El polling recibirá un evento de DELIVERY_ADDRESS_CHANGE_DENIED cuando la solicitud sea exitosa.
Error
Este endpoint devuelve el código de estado HTTP 400 Bad Request si no se proporcionan los parámetros esperados.
NombreDescripción
BadRequestValidación de modelo
{
  "code": "BadRequest",
  "message": "Hubo un problema al leer la información. Verifique la información enviada.",
  "details": [
    "Campo ‘OrderID’ debe estar en formato uuid."
  ]
}
Este endpoint devuelve el código de estado HTTP 404 Not Found si no se encuentra el pedido, está completado o cancelado, o fue creado hace más de 8 horas.
NombreDescripción
OrderNotFoundPedido no encontrado
{
  "code": "OrderNotFound",
  "message": "Pedido no encontrado.",
  "details": []
}
Este endpoint devuelve el código de estado HTTP 409 Operation Conflict si hay un conflicto en la operación, como intentar confirmar la dirección de un pedido con cambio pendiente/confirmado/rechazado.
NombreDescripción
ChangeAddressOperationConflictConflicto en las operaciones de cambio de dirección.
ChangeAddressOperationNotStartedNo hay un cambio de dirección pendiente.
{
  "code": "ChangeAddressOperationConflict",
  "message": "Existe un conflicto en la confirmación/solicitud de cambio de dirección de este pedido, ya puede tener la dirección confirmada por el cliente, o una solicitud de cambio pendiente/concluida",
  "details": []
}
Este endpoint devuelve el código de estado HTTP 500 Internal Server Error si hay algún error al registrar este pedido.
NombreDescripción
InternalServerErrorError interno del servidor
Para cancelar una solicitud de entrega para pedidos que no son de la plataforma iFood, es crucial entender algunas condiciones. En primer lugar, solo los pedidos con el atributo salesChannel definido como POS pueden ser cancelados. Cualquier pedido que no se ajuste a este contexto no podrá ser cancelado a través del módulo de Shipping.Para obtener la lista de códigos de cancelación válidos para un pedido, puedes usar el endpoint GET /cancellationReasons.
  • orderId - ID del pedido
/shipping/v1.0/orders/<orderId>/cancellationReasons

Éxito

Este endpoint retorna el código de estado HTTP 200 OK si el pedido puede ser cancelado, junto con sus posibles códigos y descripciones de cancelación. Si el pedido ya no puede ser cancelado, el endpoint retornará el código de estado HTTP 204 No Content. El cuerpo de la respuesta contiene:
  • cancelCodeId - Código de la razón de la cancelación
  • description - Descripción de la razón de la cancelación
[{
  "cancelCodeId": "817",
  "description": "O cliente cancelou o pedido pelo restaurante"
}]

Erros

Este endpoint devuelve el código de estado HTTP 500 Internal Server Error si ocurre algún fallo al solicitar la cancelación de la entrega.
NombreDescripción
InternalServerErrorError interno del servidor
{
  "code": "InternalServerError",
  "message": "Error interno del servidor"
}
Para realizar la cancelación, debes hacer una solicitud al endpoint POST /cancel, pasando los siguientes parámetros:
  • orderID - Id del pedido
  • reason - Texto con la descripción del motivo
  • cancellationCode - Código de cancelación
/shipping/v1.0/orders/<orderId>/cancel

Éxito

Este endpoint devuelve HTTP Status 202, sin nada en el cuerpo de la respuesta El polling recibirá un evento de CANCELLATION_REQUESTED cuando la solicitud sea exitosa y posteriormente los eventos de CANCELLED o CANCELLATION_REQUEST_FAILED en caso de éxito o fracaso.

Error

Este endpoint devuelve el código de estado http 400 Bad Request si no se proporcionan los parámetros esperados.
NombreDescripción
BadRequestValidación de modelo
{
  "code": "BadRequest",
  "message": "Hubo un problema al leer la información. Verifique la información enviada.",
  "details": [
    "El campo 'OrderID' debe estar en formato uuid."
  ]
}
Este endpoint devuelve el código de estado http 500 Internal Server Error en caso de que ocurra algún fallo al solicitar la cancelación de la entrega.
NombreDescripción
InternalServerErrorError interno del servidor
{
  "code": "InternalServerError",
  "message": "Ops. Hubo un fallo. Intente de nuevo en unos momentos.",
  "details": ["Error interno del servidor"]
}
Para mejorar la seguridad de su entrega, hemos desarrollado un conjunto de reglas que nos permiten calificar el nivel de confianza en la entrega. Esta calificación se basa en los parámetros informados durante la creación del pedido y en el cambio o confirmación de la dirección realizados por el cliente después de la creación del pedido.
NombreDescripción
LOWBajo
MODERATEModerado
HIGHAlto
VERY_HIGHMuy alto
NombreDescripción
customer_phone_valid(El teléfono informado es diferente de customer.phone.type="STORE") y (no son solo números repetidos o números en secuencia (ej: 123456789)) y (el teléfono tiene más de 11 dígitos).
customer_phone_is_fixedEl teléfonoes un teléfono fijo con 8 dígitos.
customer_address_confirmedLa dirección de entrega fue confirmada por el cliente final.
customer_address_change_requestedEl cliente solicitó un cambio en la dirección de entrega.
customer_address_change_approvedEl socio aprobó el cambio de dirección de entrega.
customer_address_change_deniedEl socio rechazó el cambio de dirección de entrega.
El pedido con customer_phone_is_valid:false tendrá una puntuación LOW.El pedido con customer_phone_is_fixed:true tendrá una puntuación MODERATE.El pedido con customer_phone_is_fixed:true y customer_address_confirmed:true tendrá una puntuación VERY_HIGH.El pedido con customer_phone_is_valid:true tendrá una puntuación HIGH.El pedido con customer_phone_is_valid:true y customer_address_change_requested:true y merchant_address_change_approved:true tendrá una puntuación VERY_HIGH .El pedido con customer_phone_is_valid:true y customer_address_change_requested:true y merchant_address_change_denied:true tendrá una puntuación LOW.
El nivel de confianza en la entrega puede cambiar después de la creación del pedido. Las acciones realizadas después de la creación del pedido, como la confirmación de la dirección o la solicitud de cambio de dirección, tienen un impacto directo en el nivel de confianza en la entrega.
Para descubrir cuál es el nivel de confianza en la entrega de su pedido, simplemente envíe la solicitud GET /safeDelivery pasando los siguientes parámetros.
  • orderId - ID del pedido que tendrá consultado el nivel de seguridad en la entrega.
/shipping/v1.0/orders/:orderId/safeDelivery

Respuestas

Éxito
Este endpoint devuelve el código de estado http 200 OK si el pedido es elegible para seguridad en la entrega. El cuerpo de la respuesta contiene:
  • rules - Contiene un mapa deltipo [string]boolean que contiene la regla y la situación.
  • score - Nivel de confianza en la entrega del pedido generado en base a las reglas definidas en el campo rules.
{
	"rules": {
		"customer_address_change_requested": false,
		"customer_address_confirmed": false,
		"customer_phone_is_fixed": false,
		"customer_phone_valid": true,
		"merchant_address_change_approved": false,
		"merchant_address_change_denied": false
	},
	"score": "HIGH"
}
Erro
Este endpoint devuelve el código de estado http 400 Bad Request si no se proporcionan los parámetros esperados.
NombreDescripción
BadRequestValidación de modelo
OrderWithoutSafeDeliveryPedido sin reglas de confianza en la entrega.
BadRequest
{
  "code": "BadRequest",
  "message": "Hubo un problema al leer la información. Verifique la información enviada.",
  "details": [
    "El campo 'OrderID' debe estar en formato uuid."
  ]
}
OrderWithoutSafeDelivery
{
  "code": "OrderWithoutSafeDelivery",
  "message": "Pedido sin reglas de confianza en la entrega.",
  "details": []
}
Este endpoint devuelve el código de estado http 404 Not Found si no se encuentra el pedido.
NombreDescripción
OrderNotFoundPedido no encontrado
{
  "code": "OrderNotFound",
  "message": "Pedido no encontrado.",
  "details": []
}
Este endpoint devuelve el código de estado http 500 Internal Server Error si hay un fallo al consultar este pedido.
NombreDescripción
InternalServerErrorError interno del servidor
{
  "code": "InternalServerError",
  "message": "Ops. Hubo un fallo. Intente de nuevo en unos momentos.",
  "details": ["Internal server error"]
}

Pedidos en la plataforma iFood

ClientAPIPolling de Eventos1- Disponibilidad de EntregaGET /orders/{orderId}/deliveryAvailabilitiesDisponibilidad y ventanas de entrega2- Registro del pedidoPOST /orders/{orderId}/requestDriverEnvía evento de request driverID del pedido3- Cancelación de la entregaPOST /orders/{orderId}/cancelRequestDriverEnvía evento de cancel request driverRetorna solicitud aceptadaClientAPIPolling de Eventos
Antes de registrar una solicitud de entrega es importante consultar la cotización/disponibilidad de entrega. Es posible que la dirección no esté dentro del área de cobertura y aunque la dirección esté dentro del área, puede haber alguna indisponibilidad temporal en la región, como un radio de entrega reducido temporalmente. A través de esta consulta también es posible obtener la ventana de tiempo estimada para la entrega del pedido para informar al cliente.
Este paso no es obligatorio, pero realizar la consulta antes de registrar el pedido evita que ocurran errores y permite que la tienda se planifique en la preparación del pedido.
Para consultar la cotización de la logística para un pedido preexistente dentro de la plataforma iFood, simplemente realiza la solicitud GET /deliveryAvailabilities pasando los siguientes parámetros:
  • orderId - ID del pedido ya existente en la plataforma iFood para solicitar la entrega
/shipping/v1.0/orders/<orderId>/deliveryAvailabilities

Éxito

Este endpoint devuelve el código de estado http 200 OK si la logística está disponible. El cuerpo de la respuesta contiene:
  • id - id de la cotización
  • expirationAt - fecha y hora de expiración de la cotización UTC
  • createdAt - fecha y hora de creación de la cotización UTC
  • quote.grossValue - valor bruto de la entrega
  • quote.discount - valor del descuento de la entrega
  • quote.raise - valor del incremento
  • quote.netValue - valor neto de la entrega
  • deliveryTime.min - tiempo mínimo estimado para la entrega en segundos
  • deliveryTime.max - tiempo máximo estimado para la entrega en segundos
  • distance - radio de distancia de entrega en metros (1000, 2000, 3000...)
  • preparationTime - tiempo de preparación en segundos
  • hasPaymentMethods - informa si hay métodos de pago disponibles
  • paymentMethods.id - id del método de pago
  • paymentMethods.brand - marca de la tarjeta de crédito/débito
  • paymentMethods.liability - responsable de recibir el pago (IFOOD)
  • paymentMethods.paymentType - tipo de pago ej.: OFFLINE
  • paymentMethods.method - método de pago CREDIT o DEBIT
{
  "id": "57cd1046-2e06-446f-a2dd-18a518212c3c",
  "expirationAt": "2023-08-18T19:49:06Z",
  "createdAt": "2023-08-17T19:49:06Z",
  "distance": 3000,
  "preparationTime": 60,
  "quote": {
    "grossValue": 7.99,
    "discount": 0,
    "raise": 0,
    "netValue": 7.99
  },
  "deliveryTime": {
    "min": 1200,
    "max": 1800
  },
  "hasPaymentMethods": true,
  "paymentMethods": [
    {
      "id": "21c65a8c-f29e-463f-b0bd-240edeb593c4",
      "brand": "CardBrand",
      "liability": "IFOOD",
      "paymentType": "OFFLINE",
      "method": "CREDIT",
    }
  ]
}

Erro

Error

Este endpoint devuelve el código de estado http 400 Bad Request si la logística no está disponible para entregar el pedido en esta ubicación o para este comerciante.
NombreDescripción
BadRequestValidación de modelo
BadRequestMerchantSocio no disponible
DeliveryDistanceTooHighLa dirección de entrega excede el área logística atendida por iFood
OffOpeningHoursEl pedido está fuera del horario de operación de la logística de iFood
OriginNotFoundAún no entregamos en tu región, ya que tu tienda está fuera del área logística de iFood
ServiceAreaMismatchLa dirección de entrega está fuera de nuestra área de cobertura
HighDemandLa logística de iFood está temporalmente no disponible. Por favor, intenta de nuevo más tarde
MerchantStatusAvailabilityRestaurante con pendencia, contacte el Soporte de Sob Demanda
InvalidPaymentMethodsEl método de pago elegido por el cliente no es aceptado por la máquina de iFood
SaturatedOfflinePaymentEn este instante, la opción de pago a la entrega no está disponible
NRELimitExceededSu tienda tiene muchos repartidores asociados esperando. Libere repartidores para que pueda solicitar la entrega Sob Demanda.
{
  "code": "DeliveryDistanceTooHigh",
  "message": "Sob Demanda no disponible: la dirección de entrega está a más de 10 Km de su tienda.",
  "details": ["Delivery distance too high"]
}
Este endpoint devuelve el código de estado http 500 Internal Server Error en caso de que ocurra algún fallo al registrar este pedido.
NombreDescripción
InternalServerErrorError interno del servidor
{
  "code": "InternalServerError",
  "message": "Ops. Hubo un fallo. Intente de nuevo en unos momentos.",
  "details": ["Error interno del servidor"]
}
Para solicitar el repartidor de acuerdo con la cotización devuelta, utiliza el siguiente endpoint POST /requestDriver pasando en el cuerpo la información del pedido.Este endpoint es asíncrono. Cuando tu solicitud sea procesada, recibirás un evento REQUEST_DRIVER confirmando que la solicitud se ha realizado y luego el resultado de la solicitud, que puede ser: REQUEST_DRIVER_SUCCESS o REQUEST_DRIVER_FAILED.
¡Atención! Un repartidor asociado será asignado automáticamente después de la solicitud a través de este endpoint. Si no es posible realizar la entrega, la solicitud de entrega no se registra y se devuelve un error.
  • orderId - ID del pedido ya existente en la plataforma iFood para solicitar la entrega
  • quoteId - ID de la cotización solicitada anteriormente para solicitar la entrega
/shipping/v1.0/orders/<orderId>/requestDriver

Éxito

Este endpoint devuelve el código de estado http 202 Accepted si la solicitud se registra con éxito.

Errores

Este endpoint devuelve el código de estado http 400 Bad Request si la logística no está disponible para entregar el pedido o si ocurre algún fallo al registrar este pedido.
NombreDescripción
BadRequestValidación de modelo
BadRequestCustomerCliente no disponible
BadRequestMerchantSocio no disponible
DeliveryDistanceTooHighLa dirección de entrega excede el área logística atendida por iFood
HighDemandLa logística de iFood está temporalmente no disponible. Por favor, intenta de nuevo más tarde
MerchantEasyDeliveryDisabledEl servicio no está disponible
OffOpeningHoursEl pedido está fuera del horario de operación de la logística de iFood
OriginNotFoundAún no entregamos en tu región, ya que tu tienda está fuera del área logística de iFood
ServiceAreaMismatchLa dirección de entrega está fuera de nuestra área de cobertura
MerchantStatusAvailabilityRestaurante con pendencia, contacte el Soporte de Sob Demanda
InvalidPaymentMethodsEl método de pago elegido por el cliente no es aceptado por la máquina de iFood
SaturatedOfflinePaymentEn este instante, la opción de pago a la entrega no está disponible
NRELimitExceededSu tienda tiene muchos repartidores asociados esperando. Libere repartidores para que pueda solicitar la entrega Sob Demanda.
{
  "code": "DeliveryDistanceTooHigh",
  "message": "Sob Demanda no disponible: la dirección de entrega está a más de 10 Km de su tienda.",
  "details": ["Delivery distance too high"]
}
Este endpoint devuelve el código de estado http 500 Internal Server Error en caso de que ocurra algún fallo al registrar este pedido.
NombreDescripción
InternalServerErrorError interno del servidor
{
  "code": "InternalServerError",
  "message": "Ops. Hubo un fallo. Intente de nuevo en unos momentos.",
  "details": ["Error interno del servidor"]
}
Para cancelar la solicitud de un repartidor iFood sin la necesidad de cancelar el pedido, la cancelación de la entrega debe realizarse a través del endpoint POST /orders/{id}/cancelRequestDriver.La cancelación solo se llevará a cabo si se solicita antes de la aceptación del repartidor, en este caso no se cobrará ninguna tarifa a la tienda. Si es necesario realizar la cancelación después de la aceptación del repartidor, debe seguir las reglas establecidas en Cancelación de pedido.
El endpoint es asíncrono. Cuando tu solicitud sea procesada, la tienda recibirá un evento DELIVERY_CANCELLATION_REQUEST_ACCEPTED, en caso de éxito, o DELIVERY_CANCELLATION_REQUEST_REJECTED, en caso de fallo. Consulta todos los detalles de estos eventos en esta sección.
Importante La acción es irreversible. Después de cancelar la solicitud de un repartidor, no será posible revertir este servicio. Para que se solicite un nuevo repartidor, se debe realizar una nueva solicitud de repartidor.
/shipping/v1.0/orders/<orderId>/cancelRequestDriver

Éxito

Este endpoint devuelve HTTP Status 202, sin nada en el cuerpo de la respuesta El polling recibirá un evento de DELIVERY_CANCELLATION_REQUESTED cuando la solicitud se envíe con éxito.

Error

Este endpoint devuelve el código de estado http 400 Bad Request si no se proporcionan los parámetros esperados.
NombreDescripción
BadRequestValidación de modelo
{
  "code": "BadRequest",
  "message": "Hubo un problema al leer la información. Verifique la información enviada.",
  "details": [
    "El campo 'OrderID' debe estar en formato uuid."
  ]
}
Este endpoint devuelve el código de estado http 500 Internal Server Error en caso de que ocurra algún fallo al solicitar la cancelación de la entrega.
NombreDescripción
InternalServerErrorError interno del servidor
{
  "code": "InternalServerError",
  "message": "Ops. Hubo un fallo. Intente de nuevo en unos momentos.",
  "details": ["Error interno del servidor"]
}