## 🔐 Autenticação ### Tipo de Autenticação A API utiliza API Key via header Authorization. ### Como usar a API Key Inclua a API Key no header Authorization de todas as requisições: ``` Authorization: sua-api-key-aqui ``` ## 🚦Limites de Requisições (Rate Limit) Para garantir a estabilidade do serviço, aplicamos os seguintes limites: | Periodo | Limite | | -------- | -------- | | 24 horas | 500 Requisições | Importante: Se você exceder qualquer um desses limites, receberá um erro 429 Too Many Requests e precisará aguardar antes de fazer novas requisições ## 🚀 Endpoint Criar Pedidos ``` POST /external-integration/order/create ``` Headers Obrigatórios ``` Content-Type: application/json Authorization: sua-api-key-aqui ``` ## 📝 Estrutura de Requisição ### Campos Obrigatórios | Campo | Tipo | Descrição | | -------- | -------- | -------- | | company_id | string (UUID) | ID único da empresa/restaurante | | payment_code | string (enum) | Código do método de pagamento | | company_id | object | Dados completos do cliente | ### Campos Opcionais | Campo | Tipo | Descrição | | -------- | -------- | -------- | | value | number | Valor total do pedido | | details | string | Observações ou detalhes do pedido | | external_order_id | string | ID do pedido no seu sistema | ## 💳 Códigos de Pagamento Disponíveis | Código | Descrição | | -------- | -------- | | ONLINE | Pagamento online/pré-pago | |MONEY | Dinheiro | |CARD | Cartão de crédito | |DEBIT | Cartão de débito | |PIX | PIX | ## 👤 Estrutura do Cliente ### Campos Obrigatórios do Cliente | Campo | Tipo | Descrição | | -------- | -------- | -------- | | name | string | Nome completo do cliente | | phone | string | Telefone do cliente | | address | object | Endereço completo do cliente | ### Estrutura do Endereço | Campo | Tipo | Obrigatório |Descrição | -------- | -------- | -------- |-------- | name | string | ✅ |Nome/apelido do endereço | street_name | string | ✅ | Nome da rua | number | string | ✅ |Número do endereço | neighborhood | string | ✅ | Bairro | city | string | ✅ |Cidade | state | string | ✅ |Estado (UF) | zipCode | string | ✅ |CEP | complement | string | ❌ |Complemento | latitude | number | ❌ |Latitude (coordenada) | longitude | number | ❌ | Longitude (coordenada) ## 📚 Exemplo de Requisição ``` { "company_id": "123e4567-e89b-12d3-a456-426614174000", "payment_code": "ONLINE", "value": 2500, "details": "Pizza grande de calabresa, sem cebola", "external_order_id": "PED-2024-001", "customer": { "name": "João Silva", "phone": "11999887766", "address": { "name": "Casa", "street_name": "Rua das Flores", "number": "123", "complement": "Apto 45", "neighborhood": "Centro", "city": "São Paulo", "state": "SP", "zipCode": "01234-567", "latitude": -23.5505, "longitude": -46.6333 } } } ``` Requisição caso o endereço de coleta seja diferente do endereço da empresa: ``` { "company_id": "123e4567-e89b-12d3-a456-426614174000", "payment_code": "ONLINE", "value": 2500, "details": "Pizza grande de calabresa, sem cebola", "external_order_id": "PED-2024-001", "customer": { "name": "João Silva", "phone": "11999887766", "address": { "name": "Casa", "street_name": "Rua das Flores", "number": "123", "complement": "Apto 45", "neighborhood": "Centro", "city": "São Paulo", "state": "SP", "zipCode": "01234-567", "latitude": -23.5505, "longitude": -46.6333 } }, "origin_address": { "street_name": "Avenida Arno Carlos Gracher", "neighborhood": "Centro 2", "complement": "Casa", "zipCode": "88350310", "city": "Brusque", "state": "SC", "number": "662", "name": "Gabriel origin", "latitude": -27.132851, "longitude": -42.017300 } } ``` ## ✅ Exemplo de Resposta de Sucesso ``` { "msg": "Order created successfully", "order_id": "8f58da53-f923-43fa-a771-66beba5a39f8", } ``` ## ❌ Códigos de Erro | Código | Descrição | Solução | | -------- | -------- | -------- | | 400 | Dados inválidos | Verifique se todos os campos obrigatórios estão preenchidos corretamente | | 401 | Não autorizado | Verifique se a API Key está correta no header Authorization | | 404 | Empresa não encontrada | Verifique se o company_id está correto | | 429 | Limite de requisições excedido | Aguarde antes de fazer nova requisição | | 500 | Erro interno do servidor | Tente novamente em alguns minutos | ### Exemplo de Erro de Validação ``` { "statusCode": 400, "message": [ "company_id must be a UUID", "payment_code must be one of the following values: ONLINE, MONEY, CARD, DEBIT, PIX", "customer.name should not be empty" ], "error": "Bad Request" } ``` ## 🟢 Status do Pedido ### 🚦Limites de Requisições (Rate Limit) Para garantir a estabilidade do serviço, aplicamos os seguintes limites: | Período | Limite | | -------- | -------- | | Por dia | 5000 requisições | Importante: Se você exceder qualquer um desses limites, receberá um erro **429 Too Many Requests** e precisará aguardar antes de fazer novas requisições. ### Atualização de Status: ``` Rota PUT: /external-integration/order/status ``` Body: ``` { "order_id": "d8955eae-9c08-4853-9940-61bf3e3681b3", "status": "READY" } ``` Resultado: Status 200 | Status | Descrição | | -------- | -------- | | READY | Para prontificar o pedidos, informando que o entregador pode ir retirar | | CANCELED | Para cancelar um pedido cadastrado | ### Consulta Status: ``` Rota GET: /external-integration/order/status/:order_id ``` Resultado: ``` { "order_id": "d8955eae-9c08-4853-9940-61bf3e3681b3", "status": "READY" } ``` | Status | Descrição | | -------- | -------- | | PENDING | Pedidos aguardando prontificação | | READY | Pedido pronto para retirada | | DISPATCHED | Pedido despachado para entregador | | ON_WAY_TO_PICKUP | Entregador a caminho da retirada | | ON_STORE | Entregador no estabelecimento | | PICKED_UP | Entregador em rota de entrega | | ON_CLIENT | Entregador no cliente | | DELIVERED | Pedido entregue | | CANCELED | Pedido cancelado | ## 🔧 Dicas de Implementação 1. **Validação de UUID** O company_id deve ser um UUID válido. Exemplo: 123e4567-e89b-12d3-a456-426614174000 2. **Formato do Telefone** Envie o telefone apenas com números: 11999887766 3. **Coordenadas (Opcional)** Se disponível, envie latitude e longitude para melhor precisão na entrega. 4. **Rate Limit** Implemente um sistema de controle de requisições para não exceder os limites