Manual de Integração ERP — Portal Retail API¶
URL base nos exemplos
Os exemplos neste manual utilizam o host https://api.retailportal.com apenas como ilustração. Na integração real, substitua pelo URL base da API fornecido pela EVOT (homologação ou produção, conforme o contrato). Os caminhos (/erp-data/...) permanecem os mesmos, altera-se somente o host.
🎯 Objetivos Principais da Integração¶
O objetivo fundamental desta documentação é orientar a comunicação direta entre o ERP e o Portal Retail. A integração tem dois papéis principais e muito bem definidos:
- Recebimento de Dados em Lote (ERP → Portal Retail): Possibilitar que o sistema do ERP envie informações operacionais (produtos, estoque, vendas, etc.) ao nosso sistema, garantindo alta performance por meio de rotinas de carga em lote, conforme especificado nos Endpoints (Item 3).
- Consultas em Tempo Real e Exportação (Portal Retail → ERP): Capacitar nossa aplicação a realizar chamadas (queries) sob demanda para o banco de dados do ERP, essenciais para validações (ex: validação de EAN) e envios de cadastros, conforme detalhado no item de Consultas ao ERP (Item 10).
Acordo de Estratégia
A modalidade de envio de novos itens será combinada tecnicamente entre as partes, podendo ocorrer via Envio Direto (Push) imediato (REST ou SOAP) ou via Webhooks (Event) seguindo o modelo de notificação e resgate.
📚 Índice Completo¶
Este manual técnico foi desenvolvido para guiar empresas na integração de seus sistemas ERP com a API Portal Retail. Oferece instruções detalhadas, exemplos práticos e boas práticas comprovadas.
📖 Capítulos do Manual¶
1️⃣ Visão Geral¶
O que você precisa entender primeiro
- Objetivo do módulo ERP
- Como funciona o fluxo de integração
- Operações síncronas vs assíncronas
- Entendendo HTTP 202 Accepted
- Estados de processamento de batch
Tempo de leitura: ~15 minutos
2️⃣ Autenticação e Segurança¶
Como se conectar à API com segurança
- Tipo de autenticação (API Key)
- Exemplos práticos com cURL e Bash
- Cabeçalhos obrigatórios
- Rate limiting e proteção
- Boas práticas de segurança
Tempo de leitura: ~20 minutos
Essencial antes de: Primeira integração
3️⃣ Recebimento de Informações vindas do ERP¶
Todos os endpoints para o seu ERP enviar dados ao Portal
- Visão geral de 9 endpoints principais
- Envio em lote (Batch) para alta volumetria
- Produtos (ErpProduct)
- Estoque (ErpStock)
- Vendas diárias e mensais
- Lojas, fornecedores, medicamentos, grupos de compra
- Relatório de batch jobs
Tempo de leitura: ~25 minutos
Referência: Consulte sempre que precisar criar/atualizar dados
4️⃣ Modelo de Dados — Entrada¶
Estrutura esperada dos dados que você envia
- Campos obrigatórios vs opcionais
- Tipos de dados corretos
- Regras de validação
- Exemplos válidos e inválidos
- Tratamento especial de datas
Tempo de leitura: ~20 minutos
Crítico para: Preparar dados corretos
5️⃣ Modelo de Dados — Saída (Sucesso)¶
O que você receberá em caso de sucesso
- HTTP 200 OK — Atualização bem-sucedida
- HTTP 201 Created — Criação bem-sucedida
- HTTP 202 Accepted — Batch enfileirado
- HTTP 200 OK — Consulta de status
- Progressão de estados
- Estrutura completa de resposta
Tempo de leitura: ~20 minutos
6️⃣ Modelo de Dados — Saída (Erro)¶
Como diagnosticar e resolver problemas
- HTTP 400 — Erros de validação
- HTTP 401 — Autenticação falhou
- HTTP 404 — Recurso não encontrado
- HTTP 409 — Conflito/duplicidade
- HTTP 500 — Erro do servidor
- HTTP 429 — Rate limit
- Exemplos de cada erro
- Como corrigir
Tempo de leitura: ~25 minutos
Consulte quando: Receber mensagem de erro
7️⃣ Relatório de Execução do Batch¶
Monitorar progresso de operações em lote
- Endpoint GET /batch-job-report/{jobId}
- Estados: Enqueued, Processing, Finished, Failed
- Campos e interpretação
- Polling recomendado
- Implementação em Python/Bash
- Fluxo completo de exemplo
Tempo de leitura: ~20 minutos
Essencial para: Operações em batch
8️⃣ Fluxo de Reenvio em Caso de Erro¶
Identificar, diagnosticar e corrigir erros
- Árvore de decisão
- Tipos de erro e como resolvê-los
- Erros em batch
- Retry automático com backoff exponencial
- Reenvio inteligente
- Código completo de exemplo
Tempo de leitura: ~25 minutos
Leia quando: Primeira falha ocorrer
9️⃣ Boas Práticas¶
Implementar integração robusta e eficiente
- Tamanho ideal das cargas
- Frequência recomendada
- Idempotência e segurança contra duplicatas
- Strategies para evitar duplicidades
- Connection pooling
- Processamento paralelo
- Monitoramento e logging
- Alertas e notificações
- Checklist de implementação
- SLA recomendado
Tempo de leitura: ~30 minutos
Leia antes de: Colocar em produção
🔟 Consultas e Envio de Dados ao ERP¶
Validações e exportação de cadastros para o ERP
- Consulta e validação de EAN e NCM
- Envio de cadastros aprovados (Produtos, Fornecedores e Grupos)
- Modelos de payloads e regras de negócio
- Rastreabilidade de envios e tratamento de erros
Tempo de leitura: ~10 minutos
Essencial para: Rotinas de validação e envio de cadastros
1️⃣1️⃣ Glossário de Integração¶
Dicionário de termos técnica e de negócio
- Mapeamento EN/PT-BR
- Descrição detalhada dos campos dos payloads
- Referência para desenvolvedores ERP
1️⃣2️⃣ Webhooks (Eventos e Notificações)¶
Aviso em tempo real sobre novos cadastros
- O que são e como funcionam
- Payload padronizado do disparo
- Eventos de Produto e Fornecedor
- Resgate de dados completos (Fetch)
- Segurança e retentativas
🎯 Guias Rápidos por Caso de Uso¶
Caso 1: Primeira Integração (Novo)¶
Ordem de leitura: 1. Visão Geral — Entender conceitos 2. Autenticação — Obter chave, entender segurança 3. Endpoints — Escolher endpoint correto 4. Dados Entrada — Formatar dados 5. Exemplo Prático — Testar primeira requisição
Tempo total: ~2 horas
Caso 2: Integrando Batch em Produção¶
Ordem de leitura: 1. Endpoints — /product/batch 2. Dados Entrada — Formatar 1000 itens 3. Dados Saída Sucesso — Entender 202 4. Relatório Batch — Polling de status 5. Boas Práticas — Otimizar integração
Tempo total: ~90 minutos
Caso 3: Debugar Erro Atual¶
Ordem rápida: 1. Dados Saída Erro — Identificar tipo 2. Fluxo Reenvio — Corrigir
Tempo total: ~20 minutos
Caso 4: Sincronização Automática Diária¶
Ordem de leitura: 1. Boas Práticas — Estratégias 2. Endpoints — /get-latest-integration 3. Relatório Batch — Monitoramento
Tempo total: ~45 minutos
📋 Exemplo Completo — Passo a Passo¶
Objetivo: Criar 100 produtos¶
# PASSO 1: Preparar dados (JSON válido)
# Ver: [Dados Entrada](./04-DADOS-ENTRADA.md)
curl --request POST \
--url https://api.retailportal.com/erp-data/product/batch \
--header 'Content-Type: application/json' \
--header 'X-API-Key: SUA-CHAVE-AQUI' \
--data '{
"products": [
{
"erpId": 12345,
"ncmCode": "84733090",
"status": "Active",
"description": "Dipirona 500mg",
...
},
...
]
}'
# PASSO 2: Receber 202 + jobId
# Resposta: { "jobId": "hangfire-123...", ... }
# Ver: [Dados Saída Sucesso](./05-DADOS-SAIDA-SUCESSO.md)
# PASSO 3: Consultar status
curl --request GET \
--url https://api.retailportal.com/erp-data/batch-job-report/hangfire-123... \
--header 'X-API-Key: SUA-CHAVE-AQUI'
# PASSO 4: Aguardar até "Finished"
# Ver: [Relatório Batch](./07-BATCH-RELATORIO.md)
# PASSO 5: Analisar resultado
# successCount = 100, failureCount = 0
# ✓ Sucesso total!
🔑 Conceitos-Chave¶
HTTP 202 Accepted¶
Significa que sua requisição foi ACEITA, mas ainda NÃO foi processada. É normal em operações em batch. Você deve consultar o status depois.
Saiba mais: Visão Geral 1.4
Idempotência¶
A API garante que reenviar a mesma requisição não criará duplicatas. Você pode reenviar com segurança se perder conexão.
Saiba mais: Boas Práticas 9.3
Batch vs Individual¶
- Individual (POST/PUT): Resposta imediata (1-5s), até 1 item
- Batch: Resposta 202 + polling, até 1.000 itens, mais rápido no total
Compare: Visão Geral 1.3
Rate Limiting¶
Se fizer mais de 100 tentativas de autenticação em 5 minutos, será bloqueado por 15 minutos.
Saiba mais: Autenticação 2.4
🆘 Troubleshooting Rápido¶
| Problema | Solução | Ref |
|---|---|---|
| "Unauthorized" | Verifique API Key | 2.3 |
| "Field required" | Adicione campo obrigatório | 4.1 |
| "Invalid DateTime" | Use formato ISO 8601 com Z | 4.3 |
| Job ainda "Processing" | Continue consultando | 7.2.2 |
| "Already exists" | Use PUT em vez de POST | 6.5 |
| Error 500 servidor | Aguarde 5 min e reenvie | 6.6 |
📞 Suporte¶
- Email: suporte@evot.com.br
- Portal: https://www.evot.com.br
- SLA: Resposta em até 8 horas
Inclua ao contactar: - JobId (se aplicável) - Timestamp do erro - JSON enviado - Mensagem de erro exata
📄 Estrutura de Diretórios¶
integracao-erp/
├── README.md (você está aqui)
├── 01-VISAO-GERAL.md
├── 02-AUTENTICACAO-SEGURANCA.md
├── 03-ENDPOINTS.md
├── 04-DADOS-ENTRADA.md
├── 05-DADOS-SAIDA-SUCESSO.md
├── 06-DADOS-SAIDA-ERRO.md
├── 07-BATCH-RELATORIO.md
├── 08-REENVIO-ERROS.md
├── 09-BOAS-PRATICAS.md
├── 10-CONSULTAS-E-ENVIO.md
├── 11-GLOSSARIO.md
├── 12-WEBHOOKS.md
└── exemplos/ (em breve)
├── exemplo_produto_individual.json
├── exemplo_batch_1000_items.json
├── exemplo_python_completo.py
├── exemplo_bash_curl.sh
└── exemplo_nodejs.js
✅ Checklist Pré-Produção¶
Antes de colocar a integração em produção:
- [ ] Leu o manual completo
- [ ] Testou autenticação com API Key
- [ ] Formatou dados corretamente
- [ ] Testou criação individual
- [ ] Testou batch pequeno (10 itens)
- [ ] Testou batch grande (1.000 itens)
- [ ] Implementou polling de batch
- [ ] Implementou retry automático
- [ ] Adicionou logging
- [ ] Testou tratamento de erros
- [ ] Documentou procedimentos
- [ ] Testou sincronização incremental
- [ ] Tem contato de suporte identificado
📈 Versão e Histórico¶
| Versão | Data | Alterações |
|---|---|---|
| 1.0 | Jun 2025 | Versão inicial completa |
| 1.1 | 13 Abr 2026 | Inclusão de Webhooks e revisão de dados Base64 |
📝 Licença e Uso¶
Este manual é fornecido pela Portal Retail para integração de sistemas ERP. Uso restrito a parceiros autorizados. Não reproduzir ou distribuir sem autorização.
🚀 Próximas Etapas¶
- Escolha seu caso de uso (novo, debugging, produção, etc.)
- Siga o guia rápido correspondente
- Implemente a integração
- Teste antes de produção
- Contacte suporte se tiver dúvidas
Última atualização: Abril 2026
Manual versão: 1.1
API versão: v1 (ErpData)
🎓 Recursos Adicionais¶
- Documentação de API Completa
- Código de Exemplo em Múltiplas Linguagens
Dúvidas? Contacte: suporte@evot.com.br