SAP Business One · HANA · API REST

Service Layer feito direito.
Sem caixa-preta.

A API REST oficial do SAP B1 é poderosa — mas só entrega o que promete quando a integração na frente é robusta. A gente entrega esse "na frente": idempotência, retry, observabilidade, escala. Pronto pra produção desde o primeiro release.

10M+ chamadas/mês em produção
99,7% SLA medido nos últimos 12 meses
120ms latência média p95
14 canais externos integrados
Como pensamos

Não chamamos o Service Layer cru. Encapsulamos.

A documentação da SAP mostra como fazer um POST /Orders. Isso resolve um exemplo, não uma operação real. Em produção é diferente: rede instabiliza, sessão expira, item não existe mais, dois canais tentam criar o mesmo pedido. Toda integração séria precisa de uma camada na frente.

Construímos essa camada — um cliente HTTP tipado com retry, backoff, renovação de sessão, chave de idempotência por requisição, métricas Prometheus, logs estruturados, validação de schema antes do envio. Você ganha um SDK seu, mantido pela B1Hub, com SLA.

  • Pool de sessões reutilizável (não autentica a cada request)
  • Retry com backoff exponencial + jitter, com circuit breaker
  • Idempotência via header — falha no meio não duplica pedido
  • Cache de leitura (BPs, Items, listas auxiliares) com invalidação por evento
// cliente tipado, idempotente, com retry — exemplo Node
const result = await sapB1.orders.create({
  CardCode: 'C001234',
  DocDate: '2026-05-08',
  DocumentLines: [
    { ItemCode: 'P-1001', Quantity: 2 },
    { ItemCode: 'P-1002', Quantity: 1 },
  ],
  U_OriginChannel: 'vtex',
  U_ExternalId:    'VTEX-9988-2026',
}, {
  idempotencyKey: 'vtex:9988:2026',
  retry: { max: 3, backoffMs: 500 },
});

// se a chamada já passou antes (mesma key),
// retorna o mesmo DocEntry — não duplica pedido
console.log(result.DocEntry, result.DocNum);
Por que Service Layer

Service Layer vs DI API vs ODBC direto

Cada caminho serve pra um propósito. Pra integração externa em produção, Service Layer é o caminho certo na maioria dos casos. Eis o porquê:

Critério Service Layer (REST) DI API (COM/.NET) ODBC direto
Plataforma do cliente Qualquer linguagem (Node, Python, Java, .NET, PHP) Windows + .NET Qualquer com driver ODBC
Aplica regras de negócio do B1 ✓ Sim (totais, impostos, validações) ✓ Sim Não — bypass perigoso
Performance HANA ✓ Otimizado, OData v4 Razoável Rápido em leitura, perigoso em escrita
Suportado pela SAP ✓ Oficial, documentado ✓ Oficial Não suportado pra escrita
Cloud-friendly (HTTPS, stateless) ✓ Nativo Não Parcial
Recomendado para E-commerce, mobile, BI, integrações externas Add-ons cliente Windows, batch interno Apenas leitura ad-hoc / BI
Onde se encaixa

Onde a gente costuma plugar

E-commerce / marketplace

VTEX, Shopify, WooCommerce, Magento, Mercado Livre, Magalu. Pedido entra como Sales Order no B1 com estoque empenhado. Preço e estoque sincronizam de hora em hora.

App mobile e portais

Aplicativo de pedidos pra vendedor externo, portal do cliente, portal do fornecedor. Auth JWT, leitura em tempo real, escrita auditada, modo offline com sync.

BI e data warehouse

Carga incremental pra Power BI, Looker, Metabase. Não bate no banco do B1 direto — usa Service Layer + cache + ETL versionado, com lineage rastreável.

CRM e automação comercial

RD Station, HubSpot, Pipedrive, Bitrix. Lead vira BP, oportunidade vira Sales Quotation, venda fechada vira Sales Order — sem digitação dupla.

Como trabalhamos

Da proposta ao go-live

Diagnóstico técnico

Mapeamos volumes, eventos, exceções, integrações vizinhas. Saída: documento técnico e estimativa firme.

Prova de conceito

Caso de uso mais crítico no ar em 2 semanas, em ambiente de homologação, com métricas reais.

Hardening

Cenários de falha: rede caindo, sessão expirando, payload inválido, race condition. Cada um com teste.

Go-live e operação

Cutover supervisionado. Suporte 30 dias incluso, com painel de auditoria entregue ao cliente.

Vamos integrar seu SAP B1 com qualquer sistema

Mande os requisitos. Em até 48h voltamos com diagnóstico, escopo, prazo e custo estimado. Sem compromisso, sem proposta engessada.