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.
- Autentique com usuário e senha fornecidos por canal seguro.
- Use o token no header
Authorization. - Envie empresa e programações no mesmo JSON.
- Use uma chave de idempotência para cada nova operação.
Autenticação
/api/integrations/v1/auth/tokenO 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"
}Empresa e programações
/api/integrations/v1/delivery-programsCada 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"
}Campos aceitos
empresa
| Campo | Formato | Descrição |
|---|---|---|
| id obrigatório | 1–20 dígitos | ID da empresa no WMS. |
| nome obrigatório | até 255 caracteres | Nome utilizado na entrega. |
| tipo obrigatório | F ou J | Pessoa física ou jurídica. |
| cnpj obrigatório | 11 ou 14 dígitos | CPF ou CNPJ sem pontuação. |
| codigoSistemaExterno obrigatório | até 50 caracteres | Chave no sistema de origem. |
| endereco obrigatório | até 500 caracteres | Endereço da entrega. |
| complemento | até 255 caracteres | Informação complementar. |
| cep obrigatório | 8 dígitos | CEP 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.
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.
Erros
| HTTP | Código | Ação recomendada |
|---|---|---|
| 400 | invalid_request / invalid_giusoft_*_payload | Corrija a estrutura ou os campos. |
| 401 | invalid_integration_credentials | Revise usuário e senha. |
| 401 | invalid_or_expired_token | Solicite um novo token. |
| 409 | idempotency_key_reused | Use outra chave para conteúdo diferente. |
| 413 | payload_too_large | Divida o envio. |
| 415 | unsupported_media_type | Envie application/json. |
| 429 | too_many_integration_requests | Respeite o header Retry-After. |
As respostas incluem X-Request-Id. Informe esse valor ao suporte para diagnóstico, sem compartilhar credenciais ou payloads.
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.
