logo
logo

Docs Order Eventos de Pedidos

A API é orientada a eventos. Um pedido pode então ter vários eventos vinculados a ele.

Eventos

Eventos, no contexto de mensageria, representam algo que aconteceu em um sistema que pode ser de interesse para outros sistemas ou serviços. Eventos são fundamentais para a arquitetura orientada a eventos, onde os produtores de eventos publicam mensagens que são consumidas por um ou mais serviços interessados, sem a necessidade de acoplamento direto entre eles. Isso permite uma maior escalabilidade, flexibilidade e resiliência do sistema. No caso do iFood, um evento pode ser a criação de um novo pedido, a atualização do status de um pedido, ou a finalização de um pedido.

Meios de entrega de eventos

Meios de entrega de eventos se referem aos mecanismos disponíveis para entrega de eventos no iFood. Por exemplo: polling, webhook, mqtt, xmpp...

Atualmente o módulo de eventos de pedidos disponível para as integradoras conta com o polling e o webhook.

Documentação sobre a entrega de eventos via endpoint de polling

Know more

Documentação sobre a entrega de eventos via webhook

Know more

Estrutura do Evento

NomeDescrição
idid único do evento
codecódigo do evento
fullCodecódigo completo do evento (nome)
orderIdpedido ao qual esse evento está vinculado
merchantIdid do merchant do pedido
createdAtdata de criação do event
metadatainformações adicionais do evento

Exemplo:

{
  "id": "d585214c-b95a-4c4d-9d05-16f7d8f99999",
  "code": "PAA",
  "fullcode": "PICKUP_AREA_ASSIGNED",
  "orderId": "169e6c99-93e9-43b2-981a-498817088888",
  "merchantId": "820af392-002c-47b1-bfae-d7ef31743c99",
  "createdAt": "2020-01-01T00:00:00.000Z",
  "metadata": {
    "PICKUP_AREA_CODE": "1",
    "PICKUP_AREA_TYPE": "NUMBER"
  }
}

Grupos de Eventos

Os eventos de um pedido podem ser classificados por grupo:

GrupoDescrição
ORDER_STATUSEventos que representam uma mudança no status do pedido
CANCELLATION_REQUESTEventos relacionados ao cancelamento de um pedido
ORDER_TAKEOUTEventos relacionados à retirada de pedidos
DELIVERYEventos relacionados à entrega de um pedido
DELIVERY_ADDRESSEventos relacionados à mudanças no endereço de entrega de um pedido
DELIVERY_GROUPEventos relacionados a agrupamento de entrega de pedidos
DELIVERY_ONDEMANDEventos relacionados à solicitação do serviço de entrega iFood sob demanda (modelo híbrido ou marketplace)
DELIVERY_COMPLEMENTEventos relacionados à entrega complementar (quando o pedido entregue está incompleto)
ORDER_MODIFIEREventos relacionados à edição de pedidos
ORDER_HANDSHAKEEventos relacionados à plataforma de negociação

Eventos Opcionais Alguns tipos de eventos são opcionais e você não precisa implementar no seu aplicativo. Nesses casos você deve enviar acknowledgment mesmo para esses eventos que pretende ignorar para que você não os receba novamente no próximo polling (entra em um looping de eventos "repetidos").

Eventos por Grupo

NomeCódigoDescrição
PLACEDPLCNovo pedido na plataforma
CONFIRMEDCFMPedido foi confirmado e será preparado
SEPARATION_STARTEDSPSIndica o início do processo de separação dos itens do pedido (Exclusivo para pedidos de Mercado)
SEPARATION_ENDEDSPEIndica a conclusão da sepração dos itens do pedido (Exclusivo para pedidos de Mercado)
READY_TO_PICKUPRTPIndica que o pedido está pronto para ser retirado (Pra Retirar)
DISPATCHEDDSPIndica que o pedido saiu para entrega (Delivery)
CONCLUDEDCONPedido foi concluído
CANCELLEDCANPedido foi cancelado

CONCLUDED O evento CONCLUDED é um evento gerado automaticamente pelo iFood. E o tempo de geração desse evento pode variar entre o momento da entrega e até 2 horas depois.

Exemplos:

{
  "id": "58c3f8fc-fb2a-49a3-b99c-09ecf2cd590d",
  "code": "PLC",
  "fullCode": "PLACED",
  "orderId": "8ee1ba27-b3be-4164-8f5c-285236a20ecc",
  "merchantId": "820af392-002c-47b1-bfae-d7ef31743c99",
  "createdAt": "2021-02-17T15:07:20.04Z"
}
NomeCódigoDescrição
CANCELLATION_REQUESTEDCARSolicitação de cancelamento feita pelo Merchant (loja) ou pelo iFood de maneira automática (pedidos não confirmados dentro do prazo) ou de maneira manual através do nosso time de atendimento
CANCELLATION_REQUEST_FAILEDCARFSolicitação de cancelamento negada
CONSUMER_CANCELLATION_REQUESTEDCCRSolicitação de cancelamento feita pelo cliente
CONSUMER_CANCELLATION_ACCEPTEDCCAA solicitação de cancelamento feita pelo cliente foi aprovada pelo Merchant (loja)
CONSUMER_CANCELLATION_DENIEDCCDA solicitação de cancelamento feita pelo cliente foi negada pelo Merchant (loja)

Sempre que uma solicitação de cancelamento é aprovada, também é gerado um evento de CANCELLED (CAN).

Exemplos:

{
  "id": "4d063d88-32f6-4b89-b68b-48890b098c71",
  "orderId": "dd2796df-1c09-446b-a3b4-81f28849c459",
  "merchantId": "820af392-002c-47b1-bfae-d7ef31743c99",
  "code": "CAR",
  "fullCode": "CANCELLATION_REQUESTED",
  "createdAt": "2021-02-17T19:51:45.704Z",
  "metadata": {
    "reason_code": "504",
    "details": "MANUAL(RESTAURANT_WITHOUT_DELIVERY_MAN) - Restaurante sem entregador",
    "ORIGIN": "ORDER_MANAGER",
    "CLIENT_ID": "iconnect_v3_homologation"
  }
}
NomeCódigoDescrição
HANDSHAKE_DISPUTEHSDO evento indica que uma negociação foi iniciada e que obrigatoriamente deve ser respondida
HANDSHAKE_SETTLEMENTHSSO evento sinaliza e formaliza que uma negociação foi respondida

Exemplos:

{
  "id":"6d34f8be-7fa6-40f1-877f-8ac564db2a7c",
  "orderId":"23f5d785-6c76-47d8-bdd0-b3090c90a2a8",
  "code":"HSD",
  "fullcode":"HANDSHAKE_DISPUTE",
  "merchantId":"23f5d785-6c76-47d8-bdd0-b3090c90a2a8",
  "createdAt":"2023-06-23T13:09:06.287636Z",
  "metadata":{
    "disputeId":"5166ded9-bdee-4440-8c73-b5488e8b1f83",
    "action":"CANCELLATION",
    "timeoutAction":"REJECT_CANCELLATION",
    "handshakeType":"AFTER_DELIVERY",
    "handshakeGroup":"CUSTOMER_ORDER_SUPPORT",
    "message":"Pedido veio errado",
    "expiresAt":"2023-06-23T13:15:06.287636Z",
    "alternatives":[
      {
        "id":"2d35d0b9-67ae-46d2-8261-f0a40e5d07fd",
        "type":"REFUND",
        "metadata":{
          "maxAmount":{
            "value":"6000",
            "currency":"BRL"
          }
        }
      }
    ],
    "metadata":{
      "evidences":[
        {
          "url":"https://merchant-api.ifood.com.br/notification/v1.0/orders/{orderId}/assets/{imageId}",
          "contentType": "image/jpg",
        }
      ],
      "items":[
        {
          "id":"296b1757-4edf-4a4a-9f03-dfc10d4e907a",
          "uniqueId":"fe3620ad-c475-4f01-93b9-1ed95907a9ab",
          "integrationId":"73",
          "index":1,
          "quantity":1,
          "amount":{
            "value":"3890",
            "currency":"BRL"
          },
          "reason":"Não veio a batata, apenas as esfihas"
        }
      ],
      "garnishItems":[
        {
          "id":"ffa2e2f0-361e-4076-8781-e7c8073326e1",
          "parentUniqueId":"efe73d06-ccfd-4605-a2a5-1b5b64284b47",
          "integrationId":"MAI-9601273-601273",
          "quantity":1,
          "index":2,
          "amount":{
            "value":"2650",
            "currency":"BRL"
          },
          "reason":"Revirado e faltando o queijo"
        }
      ]
    },
    "createdAt":"2023-06-23T13:06:50.448434Z"
  },
  "receivedAt":"2023-06-23T13:06:50.628451Z"
}
NomeCódigoDescrição
PICKUP_AREA_ASSIGNEDPAACliente está aguardando na vaga especial para retirar o pedido

Exemplo:

{
  "id": "d585214c-b95a-4c4d-9d05-16f7d8f99999",
  "code": "PAA",
  "fullcode": "PICKUP_AREA_ASSIGNED",
  "orderId": "169e6c99-93e9-43b2-981a-498817088888",
  "merchantId": "820af392-002c-47b1-bfae-d7ef31743c99",
  "createdAt": "2020-01-01T00:00:00.000Z",
  "metadata": {
    "PICKUP_AREA_CODE": "1",
    "PICKUP_AREA_TYPE": "NUMBER"
  }
}
NomeCódigoDescrição
ASSIGN_DRIVERADRUm entregador foi alocado para realizar a entrega
GOING_TO_ORIGINGTOEntregador está a caminho da origem para retirar o pedido
ARRIVED_AT_ORIGINAAOEntregador chegou na origem para retirar o pedido
COLLECTEDCLTEntregador coletou o pedido
ARRIVED_AT_DESTINATIONAADEntregador chegou no endereço de destino
DELIVERY_RETURNING_TO_ORIGINDRGOEntregador está retornando ao local de origem(coleta) do pedido
DELIVERY_RETURNED_TO_ORIGINDRDOEntregador já retornou ao local de origem(coleta) do pedido
DELIVERY_CANCELLATION_REQUESTEDDCRSolicitação de cancelamento de entregador
DELIVERY_DROP_CODE_REQUESTEDDDCRInforma o código de confirmação de entrega
DELIVERY_DROP_CODE_VALIDATION_SUCCESSDDCSO código de confirmação foi validado com sucesso
DELIVERY_RETURN_CODE_REQUESTEDDRCRInforma a decisão e o código de confirmação da devolução
Nos pedidos Sob Demanda (`salesChannel:"POS"`), os eventos de DELIVERY_DROP_CODE incluirão o campo `code` no Metadata. Por outro lado, nos pedidos Full-Service (`salesChannel:"IFOOD"`), os eventos de DELIVERY_DROP_CODE não incluirão o campo `code` no Metadata, mais exclusivamente o evento DDCR - DELIVERY_DROP_CODE_REQUESTED.

Exemplos:

{
  "id": "4d063d88-32f6-4b89-b68b-48890b098c71",
  "orderId": "dd2796df-1c09-446b-a3b4-81f28849c459",
  "merchantId": "820af392-002c-47b1-bfae-d7ef31743c99",
  "code": "ADR",
  "fullCode": "ASSIGN_DRIVER",
  "createdAt": "2021-02-17T19:51:45.704Z",
  "metadata": {
    "workerVehicleType": "CAR",
    "workerName": "Fulano da Silva",
    "workerExternalUuid": "99d1d32e-7001-4b94-b969-17366d40159b",
    "workerPhotoUrl": "https://nv-production-logistics-driver-account.s3.amazonaws.com/static/drivers/photo/99d1d32e-7001-4b94-b969-17366d401999.jpg"
  }
}
NomeCódigoDescrição
DELIVERY_ADDRESS_CHANGE_REQUESTEDDARCliente solicitou alteração do endereço de entrega do pedido
DELIVERY_ADDRESS_CHANGE_USER_CONFIRMEDDAUCliente confirmou o endereço de entrega
DELIVERY_ADDRESS_CHANGE_ACCEPTEDDAAA alteração do endereço de entrega foi aprovada pelo parceiro
DELIVERY_ADDRESS_CHANGE_DENIEDDADA alteração do endereço de entrega foi negada pelo parceiro

Eventos exclusivos para pedidos Sob Demanda Os eventos de DELIVERY_ADDRESS são exclusivos para pedidos do Sob Demanda (salesChannel:"POS").

Exemplos:

{
  "id": "4d063d88-32f6-4b89-b68b-48890b098c71",
  "orderId": "dd2796df-1c09-446b-a3b4-81f28849c459",
  "merchantId": "820af392-002c-47b1-bfae-d7ef31743c99",
  "code": "DAR",
  "fullCode": "DELIVERY_ADDRESS_CHANGE_REQUESTED",
  "createdAt": "2021-02-17T19:51:45.704Z",
  "metadata": {
      "address": {
        "streetName": "Rua de teste",
        "streetNumber": "1",
        "complement": "Teste",
        "reference": "Teste",
        "neighborhood": "Centro",
        "city": "Bairro de Teste",
        "state": "AC",
        "country": "BR",
        "coordinates": {
          "latitude": -9.11,
          "longitude": -67.22
        }
      }
  }
}
NomeCódigoDescrição
DELIVERY_GROUP_ASSIGNEDDGAIndica que 2 ou mais pedidos foram agrupados em uma mesma rota de entrega
DELIVERY_GROUP_DISMISSEDDGDIndica que a rota de entrega de pedidos agrupadas foi destituída

Exemplos:

{
  "id": "4d063d88-32f6-4b89-b68b-48890b098c71",
  "orderId": "dd2796df-1c09-446b-a3b4-81f28849c459",
  "merchantId": "820af392-002c-47b1-bfae-d7ef31743c99",
  "code": "DGA",
  "fullCode": "DELIVERY_GROUP_ASSIGNED",
  "createdAt": "2021-02-17T19:51:45.704Z",
  "metadata": {
    "deliveryGroupId": "4d063d88-32f6-4b89-b68b-48890b098c71",
    "orderIds": ["dd2796df-1c09-446b-a3b4-81f28849c459", "dd2796df-1c09-446b-a3b4-81f28849c888"]
  }
}
NomeCódigoDescrição
REQUEST_DRIVER_AVAILABILITYRDAIndica se o pedido é elegível para requisitar o serviço de entrega sob demanda e o custo do serviço caso seja elegível
REQUEST_DRIVERRDRIndica que foi feita uma requisição do serviço de entrega sob demanda
REQUEST_DRIVER_SUCCESSRDSRequisição de entrega aprovada
REQUEST_DRIVER_FAILEDRDFRequisição de entrega negada
Valores possíveis: SAFE_MODE_ON, OFF_WORKING_SHIFT_POST, CLOSED_REGION, SATURATED_REGION
DELIVERY_CANCELLATION_REQUEST_ACCEPTEDDCRAA solicitação de cancelamento de entregador foi realizada com sucesso
DELIVERY_CANCELLATION_REQUEST_REJECTEDDCRRA solicitação de cancelamento de entregador não foi realizada

Atenção O evento REQUEST_DRIVER_AVAILABILITY será descontinuado e está atualmente em processo de migração para o módulo de Shipping no novo fluxo de disponibilidade de entrega mais detalhes na seção

Exemplos:

{
  "id": "4d063d88-32f6-4b89-b68b-48890b098c71",
  "orderId": "dd2796df-1c09-446b-a3b4-81f28849c459",
  "merchantId": "820af392-002c-47b1-bfae-d7ef31743c99",
  "code": "RDA",
  "fullCode": "REQUEST_DRIVER_AVAILABILITY",
  "createdAt": "2021-02-17T19:51:45.704Z",
  "metadata": {
    "quote": {
      "original": {
        "currency": "BRL",
        "value": "499"
      },
      "discount": {
        "currency": "BRL",
        "value": "0"
      },
      "final": {
        "currency": "BRL",
        "value": "499"
      }
    },
    "available": true
  }
}
NomeCódigoDescrição
RETURN_TO_STORERTSSolicitação de retorno para buscar itens do pedido que faltaram (complementar o pedido entregue incompleto)

Exemplo:

{
  "id": "05dec672-5fd7-46ce-bdd2-fda515d33eb8",
  "code": "RTS",
  "fullCode": "RETURN_TO_STORE",
  "orderId": "96eebd06-50a5-4e87-908d-d93bbb1ef17b",
  "merchantId": "820af392-002c-47b1-bfae-d7ef31743c99",
  "createdAt": "2021-02-23T15:28:13.084Z"
}
NomeCódigoDescrição
PATCH_REQUESTEDPRQRequisição de alteração de um pedido
PATCH_REQUEST_CANCELLEDPRQCRequisição de alteração de pedido cancelada
PATCH_COMMITTEDPCOPedido alterado
PATCH_COMMITTED_FAILEDPCOFFalha na alteração do pedido

Exemplos:

{
  "id": "59835381-33cf-48e3-a697-bfaff0c7a9b4",
  "code": "PRQ",
  "fullCode": "PATCH_REQUESTED",
  "orderId": "dd2796df-1c09-446b-a3b4-81f28849c999",
  "merchantId": "820af392-002c-47b1-bfae-d7ef31743c99",
  "createdAt": "2021-02-26T14:31:38.391Z",
  "metadata": {
    "patchRequestId": "48f89d40-e48c-4f7d-890a-ae84861b712f",
    "agent": "MERCHANT",
    "changeLevel": "PATCH_ITEMS",
    "customerId": "2834daad-9c2b-4e14-a9b1-c52bc143fb99",
    "storeName": "Nome da Loja",
    "notificationType": "APPROVAL",
    "approvalTimeout": "2021-02-26T14:42:38.315284Z"
  }
}

Não é possível filtrar eventos do grupo OUTROS.

NomeCódigoDescrição
ORDER_PATCHEDOPAIndica que houve uma alteração no pedido
RECOMMENDED_PREPARATION_STARTRPSRecomendação de início do preparo do pedido para otimizar a retirada e entrega. Gerado somente para pedidos com entrega iFood e quando nossos algoritmos identificam uma oportunidade de otimizar o início de preparo.
PREPARATION_STARTEDPRSPedido começou a ser preparado
CONSUMER_PREPARATION_TIME_REQUESTEDCPRCliente solicita informações sobre o tempo de preparo do pedido
CHANGE_PREPARATION_TIMECPTInforma ao cliente que houve uma mudança no tempo de preparo do pedido
BOX_ASSIGNEDBOAPedido elegível para ser deixado no iFood Box

Exemplos:

{
  "id": "4d063d88-32f6-4b89-b68b-48890b098c71",
  "orderId": "dd2796df-1c09-446b-a3b4-81f28849c459",
  "merchantId": "820af392-002c-47b1-bfae-d7ef31743c99",
  "code": "OPA",
  "fullCode": "ORDER_PATCHED",
  "createdAt": "2021-02-23T11:51:45.704Z",
  "metadata": {
    "changes": [
      {
        "changeType": "EDIT_ITEMS",
        "items": [
          {
            "id": "3dc09021-be6b-4be6-92a1-15a07b464141",
            "uniqueId": "3dc09021-be6b-4be6-92a1-15a07b464141",
            "externalCode": "123",
            "changes": {
              "optionsChanges": [
                {
                  "changeType": "ADD_OPTIONS",
                  "options": [
                    {
                      "id": "d585214c-b95a-4c4d-9d05-16f7d8f99999",
                      "externalCode": "1234567",
                      "quantity": 1,
                      "unitPrice": 2
                    }
                  ]
                },
                {
                  "changeType": "EDIT_OPTIONS",
                  "options": [
                    {
                      "id": "d585214c-b95a-4c4d-9d05-16f7d8f98799",
                      "quantity": {
                        "from": 2,
                        "to": 1
                      },
                      "unitPrice": 7
                    }
                  ]
                },
                {
                  "changeType": "DELETE_OPTIONS",
                  "options": [
                    {
                      "id": "d585214c-b95a-4c4d-9d05-16f7d8f98789"
                    }
                  ]
                }
              ],
              "quantity": {
                "from": "1",
                "to": "800"
              },
              "unit": {
                "from": "KG",
                "to": "g"
              }
            },
            "unitPrice": 20,
            "optionsPrice": {
              "from": 8.5,
              "to": 2
            },
            "totalPrice": {
              "from": 28.5,
              "to": 22
            }
          }
        ]
      }
    ],
    "total": {
      "subtotal": {
        "from": 28.5,
        "to": 22
      }
    },
    "payments": {
      "methods": [
        {
          "value": 22,
          "currency": "BRL",
          "type": "ONLINE",
          "method": "CREDIT / DEBIT / MEAL_VOUCHER / FOOD_VOUCHER",
          "card": {
            "brand": "Nome da Bandeira"
          }
        }
      ]
    }
  }
}

Outros conteúdos que podem ser do seu interesse: