API de integração de entregas

Programações prontas para o entregador.

Envie empresa, programação de saída e itens em uma única operação autenticada. Os dados são validados, armazenados de forma idempotente e disponibilizados no Angatu Entregas.

Introdução

Visão geral

Esta API é exclusiva para a integração GiuSoft → Lojas Angatu. A credencial possui somente o escopo delivery:write e não permite acesso ao painel administrativo, aos clientes ou a outros recursos internos.

  1. Autentique com usuário e senha fornecidos por canal seguro.
  2. Use o token no header Authorization.
  3. Envie empresa e programações no mesmo JSON.
  4. Use uma chave de idempotência para cada nova operação.
Etapa 1

Autenticação

POST/api/integrations/v1/auth/token

O token expira em 3.600 segundos. Solicite um novo token após a expiração; usuário e senha nunca devem ser enviados aos endpoints de dados.

curl --request POST \
  --url https://api.lojasangatu.com.br/api/integrations/v1/auth/token \
  --header 'Content-Type: application/json' \
  --data '{
    "usuario": "giusoft-wms",
    "senha": "SENHA_FORNECIDA_EM_CANAL_SEGURO"
  }'

Resposta HTTP 200

{
  "access_token": "eyJhbGciOiJIUzI1NiIs...",
  "token_type": "Bearer",
  "expires_in": 3600,
  "scope": "delivery:write"
}
Armazene senha e token somente no servidor. Nunca registre esses valores em logs, URLs, aplicativos clientes ou analytics.
Etapa 2

Empresa e programações

POST/api/integrations/v1/delivery-programs

Cada requisição representa uma empresa e aceita até 100 programações, 5.000 linhas de itens e 5 MB no total.

curl --request POST \
  --url https://api.lojasangatu.com.br/api/integrations/v1/delivery-programs \
  --header 'Authorization: Bearer SEU_ACCESS_TOKEN' \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: 7a63fdf8-1fd8-43cb-bfea-f424265bc665' \
  --data '{
    "empresa": {
      "id": "5139",
      "nome": "CLIENTE EXEMPLO",
      "tipo": "J",
      "cnpj": "12345678000190",
      "codigoSistemaExterno": "82457452452545",
      "endereco": "Rua Exemplo, 120",
      "complemento": "Galpão B",
      "cep": "42717454"
    },
    "programacoesSaida": [{
      "programacaoSaida": {
        "id": "53444",
        "os": "ARM020000000049/2025",
        "numeroCliente": "12022222324586",
        "reservada": "1",
        "iniciada": "0",
        "separada": "0",
        "conferida": "0",
        "executada": "0",
        "cancelada": "0"
      },
      "itens": [{
        "id": "649938",
        "codigoItem": "05.2002",
        "codigoBarrasItem": "27896098902411",
        "siglaUnidade": "CX",
        "descricaoUnidade": "Caixa",
        "numeroSequencia": "1",
        "quantidadeProgramada": "10.000000",
        "quantidadeReservada": 10,
        "quantidadeSeparada": 0,
        "quantidadeExpedida": 0
      }]
    }]
  }'

Resposta HTTP 200

{
  "accepted": true,
  "duplicate": false,
  "company_id": "5139",
  "programs_received": 1,
  "items_received": 1,
  "processed_at": "2026-08-20T18:25:43.000Z",
  "request_id": "c3529cce-d7ab-4df9-96dc-21497cd9dc41"
}
Contrato

Campos aceitos

empresa

CampoFormatoDescrição
id obrigatório1–20 dígitosID da empresa no WMS.
nome obrigatórioaté 255 caracteresNome utilizado na entrega.
tipo obrigatórioF ou JPessoa física ou jurídica.
cnpj obrigatório11 ou 14 dígitosCPF ou CNPJ sem pontuação.
codigoSistemaExterno obrigatórioaté 50 caracteresChave no sistema de origem.
endereco obrigatórioaté 500 caracteresEndereço da entrega.
complementoaté 255 caracteresInformação complementar.
cep obrigatório8 dígitosCEP sem pontuação.

programacoesSaida

Use os nomes oficiais programacaoSaida e itens. Os indicadores de status aceitam 0 ou 1. Linhas repetidas por lote são preservadas, inclusive quando possuem o mesmo ID.

Os itens podem conter código, código de barras, unidade, sequência, quantidades programada, reservada, separada e expedida, além de lote, validade, fabricação e indicador de avaria.

Confiabilidade

Idempotência

O header Idempotency-Key é obrigatório e deve ter entre 16 e 100 caracteres. Repetir o mesmo JSON com a mesma chave retorna duplicate: true sem duplicar dados. A mesma chave com conteúdo diferente retorna HTTP 409.

Gere um UUID v4 por novo envio e persista-o junto à operação no WMS.
Diagnóstico

Erros

HTTPCódigoAção recomendada
400invalid_request / invalid_giusoft_*_payloadCorrija a estrutura ou os campos.
401invalid_integration_credentialsRevise usuário e senha.
401invalid_or_expired_tokenSolicite um novo token.
409idempotency_key_reusedUse outra chave para conteúdo diferente.
413payload_too_largeDivida o envio.
415unsupported_media_typeEnvie application/json.
429too_many_integration_requestsRespeite o header Retry-After.

As respostas incluem X-Request-Id. Informe esse valor ao suporte para diagnóstico, sem compartilhar credenciais ou payloads.

Obrigatório

Requisitos de segurança

  • Use somente HTTPS com TLS válido.
  • Envie o token exclusivamente como Authorization: Bearer.
  • Armazene credenciais em cofre de segredos.
  • Use timeout e backoff exponencial somente para 429 e 5xx.
  • Não grave CPF/CNPJ, endereço, senha, token ou corpo completo em logs.
  • A revogação da credencial invalida imediatamente os tokens emitidos.