orderId preexistente) al servicio de entrega Bajo Demanda.GET /shipping/v1.0/merchants/{merchantId}/deliveryAvailabilities?latitude={lat}&longitude={lng}merchantId (path) - ID del merchantlatitude (query) - Latitud de la dirección de entregalongitude (query) - Longitud de la dirección de entrega| Campo | Tipo | Descripción |
|---|---|---|
| id | uuid | ID de la cotización |
| expirationAt | datetime | Validez de la cotización (UTC) |
| createdAt | datetime | Fecha de creación (UTC) |
| distance | integer | Distancia en metros |
| preparationTime | integer | Tiempo de preparación en segundos |
| quote.grossValue | decimal | Valor bruto |
| quote.discount | decimal | Descuento |
| quote.raise | decimal | Incremento |
| quote.netValue | decimal | Valor neto |
| deliveryTime.min | integer | Tiempo mínimo de entrega (segundos) |
| deliveryTime.max | integer | Tiempo máximo de entrega (segundos) |
| hasPaymentMethods | boolean | Indica métodos de pago disponibles |
| paymentMethods[].method | string | 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": "Visa",
"liability": "IFOOD",
"paymentType": "OFFLINE",
"method": "CREDIT"
},
{
"id": "93c1c7c7-61f1-4dd9-bb84-62a03254701d",
"liability": "IFOOD",
"paymentType": "OFFLINE",
"method": "CASH"
}
]
}| Código | Descripción |
|---|---|
| BadRequest | Problema en la solicitud. Verifique los datos |
| BadRequestMerchant | Merchant no disponible |
| DeliveryDistanceTooHigh | Dirección fuera del área de cobertura |
| OffOpeningHours | Fuera del horario de funcionamiento |
| OriginNotFound | Tienda fuera del área logística |
| ServiceAreaMismatch | Dirección fuera del área de cobertura |
| HighDemand | Logística temporalmente no disponible |
| MerchantStatusAvailability | Merchant con pendencia |
| InvalidPaymentMethods | Forma de pago no aceptada |
| NRELimitExceeded | Límite de repartidores alcanzado |
| UnavailableFleet | Flota no disponible |
customer.phone.type="CUSTOMER" con teléfono válidocustomer.phone.type="STORE"DELIVERY_DROP_CODE_REQUESTED con metadata.CODE para poner el código a disposición del cliente.POST /shipping/v1.0/merchants/{merchantId}/orders| Campo | Tipo | Descripción |
|---|---|---|
| customer.name* | string | Nombre (máx. 50 caracteres) |
| customer.phone.type | string | CUSTOMER (por defecto) o STORE |
| customer.phone.countryCode* | string | Código del país (2 dígitos). Ej: 55 |
| customer.phone.areaCode* | string | Código de área (2 dígitos). Ej: 11 |
| customer.phone.number* | string | Teléfono (7-9 dígitos) |
customer.phone.type="STORE"| Campo | Tipo | Descripción |
|---|---|---|
| delivery.merchantFee* | float | Tarifa del socio |
| delivery.preparationTime | integer | Tiempo de preparación (segundos) |
| delivery.quoteId | uuid | ID de la cotización |
| delivery.deliveryAddress.postalCode* | string | Código postal (8 dígitos) |
| delivery.deliveryAddress.streetNumber* | string | Número |
| delivery.deliveryAddress.streetName* | string | Calle (máx. 50 caracteres) |
| delivery.deliveryAddress.complement | string | Complemento (máx. 50 caracteres) |
| delivery.deliveryAddress.reference | string | Referencia (máx. 70 caracteres) |
| delivery.deliveryAddress.neighborhood* | string | Barrio (máx. 50 caracteres) |
| delivery.deliveryAddress.city* | string | Ciudad (2-50 caracteres) |
| delivery.deliveryAddress.state* | string | Estado (2 letras). Ej: SP |
| delivery.deliveryAddress.country* | string | País (2 letras). Ej: BR |
| delivery.deliveryAddress.coordinates.latitude* | float | Latitud |
| delivery.deliveryAddress.coordinates.longitude* | float | Longitud |
| Campo | Tipo | Descripción |
|---|---|---|
| items[].id* | uuid | ID del artículo |
| items[].name* | string | Nombre (máx. 50 caracteres) |
| items[].externalCode | string | Código externo |
| items[].quantity* | integer | Cantidad (> 0) |
| items[].unitPrice* | float | Precio unitario (≥ 0) |
| items[].price* | float | Precio total (quantity * unitPrice) |
| items[].optionsPrice* | float | Precio de los complementos (≥ 0) |
| items[].totalPrice* | float | Total (price + optionsPrice) |
| Campo | Tipo | Descripción |
|---|---|---|
| payments.methods[].method* | string | CREDIT, DEBIT o CASH |
| payments.methods[].type* | string | OFFLINE |
| payments.methods[].value* | float | Valor |
| payments.methods[].card.brand* | string | Marca (si CREDIT/DEBIT) |
| payments.methods[].cash.changeFor* | float | Cambio (si CASH) |
payments (procesado por el merchant)| Campo | Tipo | Descripción |
|---|---|---|
| displayId | string | ID amigable (máx. 4 caracteres). Ej: A4BC |
| metadata | object | Información adicional (máx. 20 caracteres) |
delivery.preparationTime para retrasar la asignación del repartidor.{
"id": "522e4d7e-0ce1-44f3-8cc7-73a9f190a5e8",
"trackingUrl": "https://meupedido.ifood.com.br/522e4d7e-0ce1-44f3-8cc7-73a9f190a5e8"
}salesChannel="POS"| Código | Descripción |
|---|---|
| BadRequest | Problema en la solicitud |
| BadRequestCustomer | Cliente no disponible |
| BadRequestMerchant | Merchant no disponible |
| DeliveryDistanceTooHigh | Fuera del área de cobertura |
| HighDemand | Logística no disponible temporalmente |
| MerchantEasyDeliveryDisabled | Servicio no habilitado |
| OffOpeningHours | Fuera del horario de funcionamiento |
| OriginNotFound | Tienda fuera del área logística |
| PaymentMethodNotFound | Método de pago no encontrado |
| PaymentTotalInvalid | Valor del pago no corresponde al total |
| ServiceAreaMismatch | Dirección fuera de la cobertura |
| NRELimitExceeded | Límite de repartidores alcanzado |
customer.phone.type="STORE"POST /shipping/v1.0/orders/{orderId}/userConfirmAddressPOST /shipping/v1.0/orders/{orderId}/deliveryAddressChangeRequestPOST /shipping/v1.0/orders/{orderId}/acceptDeliveryAddressChangemetadata.action="region-mismatch"POST /shipping/v1.0/orders/{orderId}/denyDeliveryAddressChange| Código | Status | Descripción |
|---|---|---|
| BadRequest | 400 | Parámetros inválidos |
| OrderNotFound | 404 | Pedido no encontrado o expirado (>8h) |
| ChangeAddressOperationConflict | 409 | Conflicto con operación existente |
| ChangeAddressOperationNotStarted | 409 | Ninguna alteración pendiente |
| MaxDistanceHigherThanAllowed | 400 | Alteración > 500m |
| RegionMismatch | 400 | Nueva dirección en región diferente |
salesChannel="POS".GET /shipping/v1.0/orders/{orderId}/cancellationReasons[{
"cancelCodeId": "817",
"description": "El cliente canceló el pedido por el restaurante"
}]POST /shipping/v1.0/orders/{orderId}/cancel{
"reason": "Cliente solicitó cancelación",
"cancellationCode": "817"
}CANCELLED (éxito) o CANCELLATION_REQUEST_FAILED (falla)| Nivel | Descripción |
|---|---|
| LOW | Confianza baja |
| MODERATE | Confianza moderada |
| HIGH | Confianza alta |
| VERY_HIGH | Confianza muy alta |
| Regla | Descripción |
|---|---|
| customer_phone_valid | Teléfono válido (no STORE, >11 dígitos) |
| customer_phone_is_fixed | Teléfono fijo (8 dígitos) |
| customer_address_confirmed | Dirección confirmada por el cliente |
| customer_address_change_requested | Cliente solicitó alteración |
| merchant_address_change_approved | Merchant aprobó alteración |
| merchant_address_change_denied | Merchant rechazó alteración |
customer_phone_valid:false → LOWcustomer_phone_is_fixed:true → MODERATEcustomer_phone_is_fixed:true + customer_address_confirmed:true → VERY_HIGHcustomer_phone_valid:true → HIGHcustomer_phone_valid:true + alteración aprobada → VERY_HIGHcustomer_phone_valid:true + alteración rechazada → LOWGET /shipping/v1.0/orders/{orderId}/safeDelivery{
"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"
}400 OrderWithoutSafeDelivery: Pedido sin reglas de confianza404 OrderNotFound: Pedido no encontrado