Perguntas Frequentes (FAQ)
Qual a mínima estrutura obrigatória para inserir um pedido via API?
Para inserir um pedido, os campos obrigatórios são:
- id (máx. 10 caracteres)
- status (ex.: open)
- deliveryPoint (ao menos address)
Exemplo de requisição:
POST https://app.foodydelivery.com/rest/1.2/orders
{
"id": "301",
"status": "open",
"deliveryPoint": {
"address": "Rua José Neves, 590"
}
}
Se eu enviar coordinates, preciso preencher os outros campos do deliveryPoint?
Sim. Quando coordinates é informado, também devem ser preenchidos: street, houseNumber, city, region e country.
Se eu não enviar as coordenadas, devo enviar o máximo de informações do deliveryPoint?
Sim. Caso coordinates não seja enviado, a Foody tenta geocodificar a partir de deliveryPoint.address. Quanto mais campos preenchidos (rua, número, bairro, cidade, estado, país), maior a precisão.
Como adicionar um pedido completo com todos os campos?
POST https://app.foodydelivery.com/rest/1.2/orders
{
"id": "301",
"status": "open",
"deliveryFee": 5.0,
"paymentMethod": "money",
"notes": "sem cebola",
"courierFee": 4.0,
"orderTotal": 84.5,
"orderDetails": "1x pizza de calabresa",
"deliveryPoint": {
"address": "Rua José Neves, 590",
"street": "Rua José Neves",
"houseNumber": "590",
"postalCode": "04650-140",
"coordinates": {
"lat": -23.657821664941558,
"lng": -46.67431259551918
},
"city": "São Paulo",
"region": "SP",
"country": "BR",
"complement": "sala 03"
},
"customer": {
"customerPhone": "+5511987521144",
"customerName": "José da Silva",
"customerEmail": "nome@empresa.com"
},
"date": "2020-06-18T14:13:27-03:00"
}
Como consultar um pedido por uid?
Use o método GET /orders/{uid}. Retorna dados completos, incluindo courier, collectionPoint e datas de fluxo.
Qual a diferença entre id e uid do pedido?
- id: identificador do sistema integrador (até 10 caracteres) – Este número será exibido no mapa operacional Foody Delivery.
- uid: identificador gerado pela Foody, usado para GET/PUT.
Como listar pedidos em um período?
GET https://app.foodydelivery.com/rest/1.2/orders/?startDate=2020-06-22T00:00:00-03:00&endDate=2020-06-22T23:59:59-03:00
Retorna até 500 pedidos ordenados por date
Existe limite de resultados ao listar pedidos?
Sim, máximo de 500 por requisição. Para mais, faça paginação alterando startDate.
Como atualizar um pedido?
PUT https://app.foodydelivery.com/rest/1.2/orders/{uid}
{
"id": "301",
"status": "ready",
"orderDetails": "1x pizza calabresa, 1x refrigerante"
}
(O payload é igual ao POST, exceto uid e date que não devem ser enviados).
Como atualizar somente o status de um pedido?
PUT https://app.foodydelivery.com/rest/1.2/orders/updatestatus/{uid}
{
"status": "closed"
}
Permitido apenas para ready, closed e cancelled.
Quais são todos os status de um pedido?
- open, ready, dispatched, accepted, onGoing, delivered, closed, cancelled, rejected.
Posso cancelar um pedido em qualquer momento?
Não. Alguns cenários exigem motivo de cancelamento e há restrição quando o pedido já foi finalizado ou está sob um operador logístico externo.
Existe recomendação para uso de polling?
Sim. No máximo a cada 30 segundos. O ideal é usar webhooks.
Como rastrear localização do entregador?
GET https://app.foodydelivery.com/rest/1.2/orders/tracking/{orderuid}
Retorna posição atual (courierLocationCoordinates) e rota (pontos de coleta e entrega).
Em que status o rastreamento funciona?
Somente quando o pedido está em onGoing e o entregador está em rota de entrega do pedido.
O que significa pointsToCollect e pointsToDelivery?
Listam os locais de coleta e entrega do entregador, com ordem (position).
Como identificar a ordem de entrega dentro da rota?
Pelo campo position. Exemplo: pedido com position 3 só será entregue após os anteriores.
Quais erros a API pode retornar?
- 400 (E09 datas inválidas, E17 propriedade obrigatória ausente, E21 valor inválido)
- 401 (E19 acesso não autorizado)
- 403 (E04 limite de pedidos, E11 plano free, E25 cancelamento não permitido)
- 404 (E20 pedido não encontrado)
- 500 (E18 erro desconhecido)
Como passo o token (API Foody) nas requisições?
Aqui está um exemplo direto de como ficaria o header de autenticação na prática, pronto para usar em uma requisição cURL (ou em qualquer cliente HTTP):
curl -X POST "https://app.foodydelivery.com/rest/1.2/orders" \
-H "Content-Type: application/json;charset=UTF-8" \
-H "Authorization: 123e4567-e89b-12d3-a456-426614174000" \
-H "SoftwareCompanyPartnerToken: abcdef1234567890" \
-d '{
"id": "301",
"status": "open",
"deliveryPoint": {
"address": "Rua José Neves, 590"
}
}'
Qual o formato de data/hora aceito nos endpoints?
Use sempre ISO 8601 com fuso: yyyy-MM-dd’T’HH:mm:ssXXX (ex.: 2020-06-22T21:30:01-03:00).
Quais métodos de pagamento são aceitos?
Enum suportado em paymentMethod: money, card, online, on_credit, pix, e_wallet.
Como enviar valores numéricos (ex.: deliveryFee, courierFee, orderTotal)?
Use número decimal no formato 00.00. Ex.: “deliveryFee“: 5.0.
Como estruturar orderDetails para melhor leitura?
A API aceita texto livre, mas recomenda descrever itens de forma estruturada (ex.: 1x Macarrão | R$ 25,99, 1x Pizza Grande | R$ 30,99).
O postalCode (CEP) é obrigatório?
Não. Mas, se enviado, precisa estar válido e no formato 00000-000 ou 00000000.
Exemplo de pedido com CEP válido e sem coordenadas (geocodificação por endereço)
POST https://app.foodydelivery.com/rest/1.2/orders
{
"id": "302",
"status": "open",
"deliveryPoint": {
"address": "Avenida Paulista, 1000, Bela Vista",
"postalCode": "01310-100"
}
}
Sem coordinates, a Foody obtém a geolocalização a partir do address.
Quando devo omitir coordinates?
Coordinates não quando você não tem as coordenadas exatas do ponto de entrega; use somente quando forem precisas.
Se eu enviar coordinates, quais campos do deliveryPoint passam a ser obrigatórios?
Além das coordenadas, preencha street, houseNumber, city, region e country (ISO 3166-1, ex.: BR).
Exemplo de pedido com coordinates e campos complementares exigidos
POST https://app.foodydelivery.com/rest/1.2/orders
{
"id": "303",
"status": "open",
"deliveryPoint": {
"address": "Rua José Neves, 590",
"street": "Rua José Neves",
"houseNumber": "590",
"postalCode": "04650-140",
"coordinates": { "lat": -23.657821664941558, "lng": -46.67431259551918 },
"city": "São Paulo",
"region": "SP",
"country": "BR"
}
}