Baixe o app para aproveitar ainda mais
Prévia do material em texto
Documentação técnica Pool de Pedidos Versão 2 Atualizações do documento Versão Responsável Data Descrição v.1 Marcos Juliano Santos -PO 27/05/2022 Criação do documento v.2 Matheus Freire Drulla – Analista 07/06/2023 Atualização do documento SUMÁRIO INTRODUÇÃO ......................................................................................................................................................................................... 3 DEFINIÇÕES ............................................................................................................................................................................................ 3 Tipos de pedidos ............................................................................................................................................................................. 2 Momento do pedido........................................................................................................................................................................ 3 Canais de venda .............................................................................................................................................................................. 3 Ciclo de vida do pedido .................................................................................................................................................................. 3 Status do pedido ............................................................................................................................................................................. 4 FLUXO DE INTEGRAÇÃO ...................................................................................................................................................................... 4 Autorização ..................................................................................................................................................................................... 4 Recepção de pedidos ...................................................................................................................................................................... 5 Consultar novos pedidos ................................................................................................................................................................. 5 Estrutura do evento ........................................................................................................................................................................ 6 Filtros .............................................................................................................................................................................................. 6 Filtrar por Merchants (Lojas) ......................................................................................................................................................... 6 Acknowledgment............................................................................................................................................................................. 7 Confirmação ................................................................................................................................................................................... 7 Obter detalhes do pedido............................................................................................................................................................... 7 Payload........................................................................................................................................................................................... 8 Informações gerais .................................................................................................................................................................... 9 Merchant ................................................................................................................................................................................... 9 Andress ...................................................................................................................................................................................... 9 Contacts .................................................................................................................................................................................. 10 Customer ................................................................................................................................................................................. 10 Delivery .................................................................................................................................................................................... 11 DeliveryAndress ....................................................................................................................................................................... 11 2 Manual de Sistema Delivery Control – Pool de Pedidos 07/06/2023 Itens ......................................................................................................................................................................................... 11 Total ......................................................................................................................................................................................... 12 Payments ..................................................................................................................................................................................12 Atualizar dados e status do pedido .............................................................................................................................................. 13 AMBIENTE ......................................................................................................................................................................................... 15 Desenvolvimento .......................................................................................................................................................................... 15 Homologação ................................................................................................................................................................................ 15 Produção ...................................................................................................................................................................................... 15 3 Manual de Sistema Delivery Control – Pool de Pedidos 07/06/2023 INTRODUÇÃO Através da API do Pool de Pedidos, fornecemos aos parceiros logísticos a capacidade de integrar os pedidos de entrega diretamente em seu sistema, facilitando o processo de gestão e execução das entregas. DEFINIÇÕES A API do Pool de Pedidos é uma interface de programação de aplicativos que permite que os parceiros logísticos se conectem de forma eficiente ao nosso sistema de pedidos de delivery. Essa integração simplifica o fluxo de trabalho, permitindo que os parceiros recebam e processem os pedidos de entrega diretamente em seu próprio sistema, otimizando assim a gestão e a execução das entregas. Tipos de pedidos No Pool de Pedidos será disponibilizado tão somente pedidos de DELIVERY. Order Type Descrição DELIVERY Pedidos que devem ser entregues no endereço escolhido pelo cliente. Momento do pedido Todos os pedidos serão preparados imediatamente e devem ser enviados o mais breve possível. Order Timing Descrição IMMEDIATE Pedidos que devem ser preparados imediatamentee enviados o mais breve possível. Canais de venda Canal de vendas pelo qual o pedido entra na plataforma (novos canais podem ser adicionados). Sales Channel Descrição Código de confirmação finalização da rota IFood Pedidos realizados através do Ifood. Sim Grupo Madero Pedidos realizados através do app Madero. Sim Rappi Pedidos realizados através do Rappi. Não Pede Pronto Pedidos realizados através do Pede Pronto. Não Ciclo de vida do pedido 4 Manual de Sistema Delivery Control – Pool de Pedidos 07/06/2023 A API é orientada a eventos, sendo assim, um pedido pode ter mais de evento vinculados a ele. Segue um diagrama com os possíveis status de um pedido. Sales Channel Descrição Avaliable Evento que indica que o pedido está disponível para o serviço de entrega. Packaged Evento que indica que a produção do pedido foi finalizada. Unavaliable Evento que indica que o pedido está indisponível para o serviço de entrega. Cancelled Evento que indica que o pedido está cancelado. Status do pedido Para o devido rastreamento e melhor gestão, os pedidos devem receber as devidas atualizações de status. Sales Channel Descrição EnRouteToPickup Entregador alocou o pedido e está a caminho da coleta. ArrivedAtPickup Entregador chegou na filial para retirada do pedido. EnRouteToDropoff O pedido foi coletado e o entregador está a caminho para realizar a entrega. ArrivedAtDropoff Entregador chegou no endereço de entrega. Completed Entrega concluída. Canceled Entrega cancelada. Relocated Entregador foi realocado e está a caminho da coleta Returned Não foi possível finalizar a entrega e o pedido retornou a filial FLUXO DE INTEGRAÇÃO Autorização Para garantir a segurança dos dados fornecidos e identificar o cliente, todos os endpoints da API requerem autenticação. O acesso é concedido através de um token exclusivo, gerado pelo Grupo Madero para cada cliente. Para autenticar, é necessário incluir o token fornecido no cabeçalho (headers) de todas as requisições. Isso pode ser feito seguindo as instruções abaixo. 5 Manual de Sistema Delivery Control – Pool de Pedidos 07/06/2023 Para efetuar a autenticação, você deve incluir o token fornecido no cabeçalho (headers) de todas as requisições, utilizando os dados abaixo: Campo Tipo Descrição x-functions-key string Token de acesso gerado. No caso de falha na autenticação, a API retornará o código de resposta 401. Esse código indica que a requisição não foi autorizada devido à falta ou inválida autenticação. Portanto, ao receber esse código, é necessário revisar as informações de autenticação fornecidas e garantir que o token esteja correto no cabeçalho da requisição. Se persistirem os problemas de autenticação, entre em contato com o Grupo Madero para obter assistência adicional. Recepção de pedidos Consultar novos pedidos Para receber os novos pedidos, é necessário fazer requisições no endpoint de polling regularmente, com um intervalo de 30 segundos. Sempre que ocorrer um novo evento, você receberá uma resposta com o código 200, juntamente com a lista de eventos associados. No entanto, se não houver novos eventos no momento, você ainda receberá uma resposta com o código 200, mas a lista de eventos estará vazia. Esse fluxo de polling garante que você seja notificado sobre os novos pedidos assim que estiverem disponíveis, permitindo uma integração em tempo real com o sistema de pedidos. Lembre-se de implementar esse processo de polling em seu código para receber as atualizações oportunamente. GET https://fn-hml-delivery-pool.azurewebsites.net/api/Polling Por quanto tempo que os pedidos e eventos são disponibilizados? 6 Manual de Sistema Delivery Control – Pool de Pedidos 07/06/2023 Os pedidos e eventos são mantidos pela API até as 04h00 do dia seguinte à data do pedido, após esse período eles não são mais retornados.. Ordenação dos eventos Os eventos não são entregues necessariamente de maneira ordenada. Caso seja necessário, após obter o detalhamento de todos os pedidos você pode ordenar pelo createdAt A API adota uma abordagem orientada a eventos, permitindo que um pedido possua múltiplos eventos associados. Esses eventos representam diferentes etapas e atualizações ocorridas ao longo do ciclo de vida do pedido. Estrutura do evento Campo Tipo Descrição id uuid Identificador único do pedido. status enum Status do pedido. Exemplo: Filtros É possível filtrar os pedidos que deseja receber utilizando a consulta mencionada acima Filtrar por Merchants (Lojas) Por padrão, o endpoint de polling retorna todos os eventos de todos os merchants aos quais o token da requisição tem acesso. No entanto, é possível especificar o merchant desejado na requisição para receber apenas os eventos relacionados a ele. Para isso, inclua na sua requisição as informações do merchant conforme o exemplo abaixo: GET https://fn-hml-delivery-pool.azurewebsites.net/api/Polling?storeId=0a0000aa-0aa0-00aa-aa00-0000aa000001 https://fn-hml-delivery-pool.azurewebsites.net/api/Polling?storeId=0a0000aa-0aa0-00aa-aa00-0000aa000001 https://fn-hml-delivery-pool.azurewebsites.net/api/Polling?storeId=0a0000aa-0aa0-00aa-aa00-0000aa000001 https://fn-hml-delivery-pool.azurewebsites.net/api/Polling?storeId=0a0000aa-0aa0-00aa-aa00-0000aa000001 https://fn-hml-delivery-pool.azurewebsites.net/api/Polling?storeId=0a0000aa-0aa0-00aa-aa00-0000aa000001 https://fn-hml-delivery-pool.azurewebsites.net/api/Polling?storeId=0a0000aa-0aa0-00aa-aa00-0000aa000001 https://fn-hml-delivery-pool.azurewebsites.net/api/Polling?storeId=0a0000aa-0aa0-00aa-aa00-0000aa000001 https://fn-hml-delivery-pool.azurewebsites.net/api/Polling?storeId=0a0000aa-0aa0-00aa-aa00-0000aa000001 https://fn-hml-delivery-pool.azurewebsites.net/api/Polling?storeId=0a0000aa-0aa0-00aa-aa00-0000aa000001 https://fn-hml-delivery-pool.azurewebsites.net/api/Polling?storeId=0a0000aa-0aa0-00aa-aa00-0000aa000001 https://fn-hml-delivery-pool.azurewebsites.net/api/Polling?storeId=0a0000aa-0aa0-00aa-aa00-0000aa000001 https://fn-hml-delivery-pool.azurewebsites.net/api/Polling?storeId=0a0000aa-0aa0-00aa-aa00-0000aa000001 https://fn-hml-delivery-pool.azurewebsites.net/api/Polling?storeId=0a0000aa-0aa0-00aa-aa00-0000aa000001 https://fn-hml-delivery-pool.azurewebsites.net/api/Polling?storeId=0a0000aa-0aa0-00aa-aa00-0000aa000001 https://fn-hml-delivery-pool.azurewebsites.net/api/Polling?storeId=0a0000aa-0aa0-00aa-aa00-0000aa000001 https://fn-hml-delivery-pool.azurewebsites.net/api/Polling?storeId=0a0000aa-0aa0-00aa-aa00-0000aa000001 https://fn-hml-delivery-pool.azurewebsites.net/api/Polling?storeId=0a0000aa-0aa0-00aa-aa00-0000aa000001 https://fn-hml-delivery-pool.azurewebsites.net/api/Polling?storeId=0a0000aa-0aa0-00aa-aa00-0000aa000001 7 Manual de Sistema Delivery Control – Pool de Pedidos 07/06/2023 Substitua <0a0000aa-0aa0-00aa-aa00-0000aa000001> pelo identificador único do merchant desejado. Dessa forma, a resposta da requisição incluirá apenas os eventos associados a esse merchant específico, em vez de todos os merchants disponíveis. Certifique-se de fornece o identificador correto do merchant na sua requisição para receber os eventos desejados. Rate Limit É importante observar que os eventos não são entregues em ordem necessariamente. Se você precisar, é possível ordenar os pedidos pelo campo "createdAt" após obter todos os detalhes. Confirmação Para evitar o recebimento de eventos duplicados, é necessário enviar uma confirmação assim que novos eventos forem recebidos pela API.Essa confirmação informa à API que o evento foi recebido e processado com sucesso, impedindo o reenvio do mesmo evento. É uma prática importante para manter a sincronização adequada entre a sua integração e a API. ACKNOWLEDGMENT POST https://fn-hml-delivery-pool.azurewebsites.net/api/Acknowledgment Campo Tipo Obrigatório Descrição id uuid Sim Identificador único do pedido. status enum Sim Status do pedido. No corpo da request, você pode enviar um array de eventos. Exemplo: Recomendações importantes: • Faça uma request de acknowledgment para cada request de polling. https://fn-hml-delivery-pool.azurewebsites.net/api/Acknowledgment https://fn-hml-delivery-pool.azurewebsites.net/api/Acknowledgment https://fn-hml-delivery-pool.azurewebsites.net/api/Acknowledgment https://fn-hml-delivery-pool.azurewebsites.net/api/Acknowledgment https://fn-hml-delivery-pool.azurewebsites.net/api/Acknowledgment https://fn-hml-delivery-pool.azurewebsites.net/api/Acknowledgment https://fn-hml-delivery-pool.azurewebsites.net/api/Acknowledgment https://fn-hml-delivery-pool.azurewebsites.net/api/Acknowledgment 8 Manual de Sistema Delivery Control – Pool de Pedidos 07/06/2023 • Caso receba eventos que não sejam utilizados pelo seu aplicativo, envie o acknowledgment desses eventos mesmo assim para que não fique recebendo-os a cada polling novamente. Recomendamos que esse seja o tratamento padrão para todo evento ainda não mapeado no seu aplicativo. • Só é preciso enviar acknowledgment do evento uma única vez. Obter detalhes do pedido O endpoint retorna o código 200 juntamente com o conteúdo do pedido quando é fornecido um ID válido na requisição. No entanto, se um ID inválido ou o ID de um pedido antigo for informado, o endpoint retornará o código 404, indicando que o pedido não foi encontrado. Certifique-se de fornecer um ID válido e atualizado para obter os detalhes corretos do pedido. GET https://fn-hml-delivery-pool.azurewebsites.net/api/Orders/0a0000aa-0aa0-00aa-aa00-0000aa000001 Pedidos antigos A API mantém os pedidos e eventos até 04h00 do dia subsequente a data do pedido. Cuidado para não consultar repetidamente pedidos antigos para evitar ser bloqueado temporariamente devido ao rate limit. Payload Nessa seção você encontrará todos os detalhes do payload de um pedido. Um pedido contém as seguintes informações: 9 Manual de Sistema Delivery Control – Pool de Pedidos 07/06/2023 • Informações gerais - id, data de criação do pedido dentre outros. • Merchant - identificação do merchant (loja) • Customer - identificação do cliente que deve receber o pedido • Itens - produtos/pratos • Benefits - cupons de desconto incentivos • Additional Fees - taxas adicionais • Total - somatório dos valores do pedido • Payments - detalhes sobre as formas de pagamento • Delivery - informações sobre a forma de entrega do pedido e o endereço • Lat/long da localização do estabelecimento origem e do endereço final (cliente). Nossa API fornece todas as informações essenciais necessárias para que o parceiro logístico realize a entrega do pedido ao nosso cliente, além de outras funcionalidades adicionais. Informações Gerais Campo Tipo Descrição id uuid Identificador único do pedido. displayId string Id amigável para facilitar a identificação do pedido pela loja. Deve ser exibido na interface do seu aplicativo. salesChannel string Canal de vendas pelo qual o pedido entra na plataforma (novos canais podem ser adicionados). orderTiming enum Momento de entrega do pedido. preparationTimeInSeconds integer Estimativa do fim do preparo do pedido. createdAt date Data de criação do pedido. Exemplo: Merchant Campo Tipo Descrição id uuid Identificador único do Merchant (loja). name string Nome do merchant (loja). 10 Manual de Sistema Delivery Control – Pool de Pedidos 07/06/2023 observations string Observações relacionadas ao processo de coleta do pedido (Ex.: Coletar o pedido pela porta lateral) Exemplo: Andress Campo Tipo Descrição streetName string Nome da rua ou avenida. streetNumber string Número (Obs: pode conter letras). neighborhood string Bairro ou setor. city string Cidade. state string Estado. country string País. reference string Ponto de referência. coordinates.latitude double Latitude. coordinates.longitude double Longitude. Exemplo: Contacts Campo Tipo Descrição phone string Número de telefone com DDD do Merchant (loja). email string Endereço de email do Merchant (loja). 11 Manual de Sistema Delivery Control – Pool de Pedidos 07/06/2023 Exemplo: Customer Campo Tipo Descrição name string Nome do cliente. phone string 0800 para contato com o cliente. (Obs: o 0800 estará disponível tão somente para pedidos onde o salesChannel for igual a DLV_IFO ou DLV_ALP). localizer string Código localizador que deve ser informado ao ligar para o número 0800. Exemplo: Delivery Campo Tipo Descrição deliveryAndress -- Endereço onde o pedido deve ser entregue Exemplo: DeliveryAndress Campo Tipo Descrição deliveryAndress.streetName string Nome da rua ou avenida. deliveryAndress.streetNumber string Número (Obs: pode conter letras). deliveryAndress.complement string Complemento (Ex: Apartamento, Quadra, Lote). deliveryAndress.neighborhood string Bairro ou setor. 12 Manual de Sistema Delivery Control – Pool de Pedidos 07/06/2023 deliveryAndress.city string Cidade. deliveryAndress.state string Estado. deliveryAndress.country string País. coordinates.latitude double Latitude. coordinates.longitude double Longitude. Exemplo: Itens Campo Tipo Descrição id uuid Identificador único do item. name string Nome do item. quantity integer Quantidade do item. unitPrice double Preço unitário. price double Preço do item: price = quantity x unitPrice. optionsPrice double Preço dos complementos (options). discount double Valor de desconto sobre o item. totalPrice double preço total (totalPrice = price + optionsPrice - discount) index integer posição/ordem dos itens Exemplo: 13 Manual de Sistema Delivery Control – Pool de Pedidos 07/06/2023 Total Campo Tipo Descrição subtotal double Somatório do valor dos itens. deliveryFee double Valor da taxa de entrega. additionalFees double Somatório das taxas adicionais. benefits double Somatório dos benefits (cupons de desconto). orderAmount double Valor total do pedido (orderAmount = subTotal + deliveryFee + additionalFees - benefits). Exemplo: Payments Campo Tipo Descrição value double Valor do pagamento. type double Tipo de pagamento: ONLINE (pagamento já foi feito online pelo aplicativo e não deve ser cobrado na entrega) ou OFFLINE (pagamento deve ser feito no ato da entrega do pedido). prepaid double Valor que já foi pago (ONLINE). pending double Valor pendente que deve ser cobrado no ato da entrega (OFFLINE). 14 Manual de Sistema Delivery Control – Pool de Pedidos 07/06/2023 Exemplo: Atualizar dados e status do pedido Após confirmar e obter os detalhes do pedido, é necessário atualizar o statuse os dados do pedido. Para confirmar um pedido, utilize o endpoint POST /Orders. Em caso de sucesso, você receberá o código de resposta 201 (Aceito). No entanto, é importante observar que uma solicitação de atualização pode ser descartada por diversos motivos, como quando o pedido já foi cancelado anteriormente. Certifique-se de lidar adequadamente com as respostas e tratar os possíveis cenários de descarte de solicitações de atualização. POST https://fn-hml-delivery-pool.azurewebsites.net/api/Orders Campo Tipo Obrigatório Descrição id uuid Sim Identificador único do pedido (madero). order_id uuid Sim Identificador único do pedido (parceiro). order_tracking_url string Sim Url para tracking do pedido. courier_trip.dropoff_instructions string Não Instruções para entrega do pedido. courier_trip.courier.id uuid Sim Identificador único do entregador. courier_trip.courier.first_name string Sim Nome do entregador. courier_trip.courier.last_name string Não Sobrenome do entregador. courier_trip.courier.location. latitude double Sim Latitude do entregador no momento em que ocorreu a atualização de status. courier_trip.courier.location. longitude double Sim Longitude do entregador no momento em que ocorreu a atualização de status. courier_trip.courier.vehicle. form_factor string Sim Tipo do veículo. courier_trip.courier.vehicle. make string Não Marca do veículo. (Aplicável ao carro e moto). courier_trip.courier.vehicle. model string Não Modelo do veículo. (Aplicável ao carro e moto). courier_trip.courier.vehicle. license_plate string Sim (Carro e Moto) Placa do veículo. (Aplicável ao carro e moto). estimate_date Timestamp milliseconds Sim Tempo estimado para concluir a entrega do pedido (Coleta + Entrega). status enum Sim Status da entrega. 15 Manual de Sistema Delivery Control – Pool de Pedidos 07/06/2023 estimate_distance double Sim Distância estimada para concluir a entrega do pedido (Coleta + Entrega). related_id uuid Não Identificador único do pedido (Madero) (Aplicável apenas para pedidos roteirizados). confirmation_code string Sim (Apenas para o status Completed) Código de 4 números, que será informado pelo cliente, para a finalização da rota. (Utilizados para Grupo Madero e Ifood) Código de confirmação para finalização da rota O código de confirmação para conclusão da rota é obrigatório apenas quando encaminhado o status “Completed”, e em pedidos cuja o canal de venda está devidamente habilitado para o uso do código. Consultar a seção “Canais de Venda” para obter maiores detalhes. Impossibilidade de informar o código de confirmação Exemplo: Para casos em que o entregador se encontra impossibilidade de informar o código de confirmação (problemas sistêmicos, cliente não informou o código), poderá ser utilizado o código master para finalizar a rota. As rotas finalizadas através do código master serão devidamente auditadas. 16 Manual de Sistema Delivery Control – Pool de Pedidos 07/06/2023 Código Master: 7676a7c0-04f7-4ade-8643-a6180c6f36ea Response Código Tipo Mensagem Descrição 201 Success Accepted Status e dados atualizados com sucesso. 409 Bad request Order already Taken Pedido já foi apropriado por outra plataforma. 409 Bad request Order cancelled Pedido cancelado. 409 Bad request RelatedId can't be same as Id O related_id deve ser diferente do id. 409 Bad request Order not found Pedido não localizado. 401 Unauthorized 404 Not Found 500 Internal Server Error Erro não mapeado. AMBIENTE Desenvolvimento fn-dev-delivery-pool.azurewebsites.net/ 17 Manual de Sistema Delivery Control – Pool de Pedidos 07/06/2023 Homologação fn-hml-delivery-pool.azurewebsites.net/ Produção deliverycontrol- pool.grupomadero.com.br/
Compartilhar