ANTAQ

SISPAT - API de Bens Patrimoniais v2.2.0

Agência Nacional de Transportes Aquaviários - ANTAQ

Importar por Planilha Exportar OpenAPI Manual de Inventário

Guia de Integração Rápida

Como Obter sua API Key

O acesso ao SisPAT é realizado exclusivamente através do Login Único Gov.BR.

Ambiente de Produção

  1. Acesse o SisPAT em prd-apex.antaq.gov.br/ords/r/sfc/sispat/ e clique em "Entrar com Gov.BR"
  2. Informe seu CPF e senha do Gov.BR
  3. Após autenticado, navegue até "Gerenciador de API"
  4. Gere uma nova credencial

Ambiente de Homologação (Sandbox)

Para utilizar o ambiente de homologação, é necessário criar uma conta no ambiente de staging do Login Único Gov.BR:

  1. Acesse sso.staging.acesso.gov.br
  2. Informe o CPF
  3. Concorde com os termos de uso
  4. No passo de validação por reconhecimento facial, escolha "Não tenho celular" e na tela seguinte clique em "Tentar de outra forma"
  5. Use os dados pessoais fictícios abaixo para validação:
    • Data de nascimento: 01/01/1980
    • Nome da mãe: MAMAE
  6. Cadastre uma senha conforme as orientações demonstradas
  7. Informe um e-mail ou telefone celular para confirmação do cadastro

Após o cadastro, acesse o SisPAT Sandbox em des-apex.antaq.gov.br/ords/r/sfc_dev/sispat/ e clique em "Entrar com Gov.BR". Navegue até "Gerenciador de API" e gere uma credencial de teste.

Atenção: A chave é pessoal e intransferível. Ela concede poderes de leitura e escrita nos dados da sua organização. Mantenha-a em sigilo absoluto.
Validando a Conexão (Teste Rápido)

Antes de iniciar a integração, valide o acesso ao ambiente de desenvolvimento:

cURL (Terminal/CMD)

curl -X GET "https://des-apex.antaq.gov.br/ords/sfc_sispat/sispat/bens/" \
     -H "x-api-key: sispat_test_SUA_CHAVE_TESTE" \
     -H "Accept: application/json"

PowerShell (Windows)

Invoke-RestMethod -Uri "https://des-apex.antaq.gov.br/ords/sfc_sispat/sispat/bens/" `
    -Headers @{"x-api-key"="sispat_test_SUA_CHAVE_TESTE"; "Accept"="application/json"}
Dica: Se receber código 200 OK com uma lista de itens (mesmo vazia), sua conexão está funcionando corretamente.
Consultar Bens - Exemplos de Código GET

A operação GET retorna todos os bens patrimoniais vinculados à sua API Key.

JavaScript (Fetch API)

fetch('https://prd-apex.antaq.gov.br/ords/sfc_sispat/sispat/bens/', {
    method: 'GET',
    headers: {
        'x-api-key': 'sispat_live_SUA_CHAVE_AQUI',
        'Accept': 'application/json'
    }
})
.then(response => response.json())
.then(data => {
    console.log('Total de registros:', data.pagination.total_records);
    console.log('Bens:', data.items);
})
.catch(error => console.error('Erro:', error));

Python (requests)

import requests

url = "https://prd-apex.antaq.gov.br/ords/sfc_sispat/sispat/bens/"
headers = {
    "x-api-key": "sispat_live_SUA_CHAVE_AQUI",
    "Accept": "application/json"
}

response = requests.get(url, headers=headers)

if response.status_code == 200:
    data = response.json()
    print(f"Total de registros: {data['pagination']['total_records']}")
    for bem in data['items']:
        print(f"- {bem['numero_registro_patrimonial']}: {bem['nome_item']}")
else:
    print(f"Erro {response.status_code}: {response.text}")

C# (.NET HttpClient)

using var client = new HttpClient();
client.DefaultRequestHeaders.Add("x-api-key", "sispat_live_SUA_CHAVE_AQUI");
client.DefaultRequestHeaders.Add("Accept", "application/json");

var response = await client.GetAsync("https://prd-apex.antaq.gov.br/ords/sfc_sispat/sispat/bens/");
var json = await response.Content.ReadAsStringAsync();

Console.WriteLine(json);
Sincronizar Bens - Exemplos de Código PUT

A operação PUT utiliza lógica de Upsert: cria se não existir, atualiza se já existir.

Importante: A chave única é formada por cnpj + numero_registro_patrimonial. Alterar o número de registro patrimonial criará um novo bem.

cURL

curl -X PUT "https://prd-apex.antaq.gov.br/ords/sfc_sispat/sispat/bens/" \
     -H "x-api-key: sispat_live_SUA_CHAVE_AQUI" \
     -H "Content-Type: application/json" \
     -H "Accept: application/json" \
     -d '{
       "cnpj": 4903587000108,
       "numero_registro_patrimonial": "PAT-2024-0001",
       "numero_do_contrato": "CT-2024-001",
       "cod_trigrama": "GND",
       "nome_item": "Guindaste portuário",
       "capitulo": 84,
       "posicao": 8427,
       "subposicao": 842710,
       "especificacao_tecnica": "Guindaste móvel sobre pneus, capacidade 50t",
       "cor": "Amarelo",
       "fornecedor": "Liebherr Brasil",
       "capacidade": 50,
       "unidade_de_medida": 16,
       "latitude": -23.9618,
       "longitude": -46.3322,
       "destinacao": "Operação portuária",
       "modalidade_de_tombamento": 1,
       "data_de_tombamento": "2024-01-15",
       "valor_original_de_compra": 1500000.00,
       "fonte_de_recurso": 1,
       "valor_justo_de_mercado": 1400000.00,
       "valor_residual": 150000.00,
       "vida_util_anos": 20,
       "taxa_depreciacao": 5.00,
       "data_de_avaliacao": "2024-01-15",
       "conta_contabil": "10.1.2.01",
       "historico": 1,
       "situacao": 1,
       "estado_de_conservacao": 3,
       "bem_da_uniao": 2,
       "bem_reversivel": 1,
       "natureza": 1,
       "vinculacao_contratual": 2,
       "tipo_de_bem": 5,
       "grupo_de_bens": 4,
       "sigla_uf": "SP"
     }'

JavaScript (Fetch API)

const bem = {
    cnpj: 4903587000108,
    numero_registro_patrimonial: "PAT-2024-0001",
    numero_do_contrato: "CT-2024-001",
    nome_item: "Guindaste portuário",
    // ... demais campos obrigatórios
};

fetch('https://prd-apex.antaq.gov.br/ords/sfc_sispat/sispat/bens/', {
    method: 'PUT',
    headers: {
        'x-api-key': 'sispat_live_SUA_CHAVE_AQUI',
        'Content-Type': 'application/json',
        'Accept': 'application/json'
    },
    body: JSON.stringify(bem)
})
.then(response => {
    if (response.status === 200) {
        console.log('Bem ATUALIZADO com sucesso');
    } else if (response.status === 201) {
        console.log('Bem CRIADO com sucesso');
    }
    return response.json();
})
.then(data => console.log(data));
Upload de Imagem - Exemplos de Código POST

Envia uma foto para um bem patrimonial já cadastrado.

Requisitos:
  • O bem deve existir (cadastre via PUT antes)
  • Tamanho máximo: 5MB
  • Formatos aceitos: JPEG, PNG, GIF, WebP, BMP
Nota: O CNPJ é obtido automaticamente da API Key. O bem é identificado pelo numero_registro_patrimonial enviado no header X-Numero-Registro-Patrimonial.

cURL

curl -X POST "https://prd-apex.antaq.gov.br/ords/sfc_sispat/sispat/bens/imagem" \
     -H "x-api-key: sispat_live_SUA_CHAVE_AQUI" \
     -H "X-Numero-Registro-Patrimonial: PAT-2024-0001" \
     -H "Content-Type: image/jpeg" \
     -H "X-Filename: guindaste_foto_01.jpg" \
     --data-binary @/caminho/para/foto.jpg

JavaScript (Fetch API)

const numRegPat = "PAT-2024-0001";
const fileInput = document.getElementById('fileInput');
const file = fileInput.files[0];

fetch('https://prd-apex.antaq.gov.br/ords/sfc_sispat/sispat/bens/imagem', {
    method: 'POST',
    headers: {
        'x-api-key': 'sispat_live_SUA_CHAVE_AQUI',
        'X-Numero-Registro-Patrimonial': numRegPat,
        'Content-Type': file.type,
        'X-Filename': file.name
    },
    body: file
})
.then(response => response.json())
.then(data => {
    console.log('Upload realizado:', data);
    console.log('Tamanho:', data.data.size_formatted);
})
.catch(error => console.error('Erro:', error));

Python (requests)

import requests

num_reg_pat = "PAT-2024-0001"
arquivo = "/caminho/para/foto.jpg"

url = "https://prd-apex.antaq.gov.br/ords/sfc_sispat/sispat/bens/imagem"

with open(arquivo, 'rb') as f:
    headers = {
        "x-api-key": "sispat_live_SUA_CHAVE_AQUI",
        "X-Numero-Registro-Patrimonial": num_reg_pat,
        "Content-Type": "image/jpeg",
        "X-Filename": "guindaste_foto_01.jpg"
    }
    response = requests.post(url, headers=headers, data=f)

if response.status_code == 200:
    data = response.json()
    print(f"Upload realizado: {data['data']['filename']}")
    print(f"Tamanho: {data['data']['size_formatted']}")
else:
    print(f"Erro {response.status_code}: {response.text}")

C# (.NET HttpClient)

using var client = new HttpClient();
client.DefaultRequestHeaders.Add("x-api-key", "sispat_live_SUA_CHAVE_AQUI");
client.DefaultRequestHeaders.Add("X-Numero-Registro-Patrimonial", "PAT-2024-0001");
client.DefaultRequestHeaders.Add("X-Filename", "guindaste_foto_01.jpg");

var url = "https://prd-apex.antaq.gov.br/ords/sfc_sispat/sispat/bens/imagem";

var imageBytes = await File.ReadAllBytesAsync("/caminho/para/foto.jpg");
var content = new ByteArrayContent(imageBytes);
content.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg");

var response = await client.PostAsync(url, content);
var json = await response.Content.ReadAsStringAsync();

Console.WriteLine(json);
Dica: A validação verifica os magic bytes (assinatura) do arquivo, não apenas a extensão. Renomear um arquivo PDF para .jpg não funcionará.
Códigos de Resposta HTTP
Código Status Descrição
200 OK Requisição bem-sucedida. No PUT, indica que o bem foi atualizado.
201 Created Recurso criado com sucesso. No PUT, indica que o bem foi cadastrado.
400 Bad Request Erro de validação: CNPJ inválido, campos obrigatórios faltando ou formato incorreto.
401 Unauthorized API Key não fornecida, inválida ou inativa. Verifique suas credenciais.
403 Forbidden API Key não tem permissão para operar com o CNPJ informado.
404 Not Found Recurso não encontrado. No POST de imagem, indica que o bem não existe.
422 Unprocessable Entity Dados semanticamente inválidos (ex: enum fora do range permitido).
500 Internal Server Error Erro interno não tratado. Contate o suporte.
Dicionário de Campos Enumerados

Campos que aceitam apenas valores específicos (enums):

modalidade_de_tombamento

ValorDescrição
1Aquisição
2Comodato
3Cessão
4Permuta
5Doação
6Fabricação
7Incorporação Prévia
8Transferência
9Encampação

fonte_de_recurso

ValorDescrição
1Próprio
2Tesouro Nacional
3Tesouro Estadual
4Tesouro Municipal

historico

ValorDescrição
1Tombado
2Não Tombado
3Inexistente
4Transferência União
5Sem Transferência
6Com Aceite
7Sem Aceite

situacao

ValorDescrição
1Servível
2Ocioso
3Antieconômico
4Recuperável
5Irrecuperável

estado_de_conservacao

ValorDescrição
1Novo
2Excelente
3Bom
4Regular
5Péssimo

grupo_de_bens

ValorDescrição
1Terrenos
2Edifícios e Benfeitorias
3Instalações
4Máquinas
5Aparelhos
6Equipamentos
7Equipamentos de Informática
8Sistemas Aplicativos (Softwares)
9Móveis e Utensílios
10Veículos
11Ferramentas
12Peças e Conjuntos de Reposição
13Benfeitorias em Propriedades Arrendadas
14Não Aplicável
15Infraestrutura Marítima
16Infraestrutura Acostagem
17Infraestrutura Terrestre
18Armazenagem
19Equipamentos de Armazenagem
20Outros Equipamentos

tipo_de_bem

ValorDescrição
1Bens da União - Administração
2Bens da União - Operação
3Bens da União - Terceiros
4Bens de Terceiros
5Bens Próprios - Administração
6Bens Próprios - Operação
7Imobilizado em Andamento

unidade_de_medida

ValorDescrição
1Não definido
2Caixa
3Coleção
4Conjunto
5Equip.
6Jogo
7Kg
8Km
9Litro
10M2
11M3
12Metro
13Par
14Parte
15Peça
16Tonelada
17Unid.

Campos binários (1=Sim, 2=Não)

  • bem_da_uniao
  • bem_reversivel
  • natureza (1=Móvel, 2=Imóvel)
  • vinculacao_contratual (1=Removível, 2=Não Removível)
  • modalidade_exploracao (1=Autoridade Portuária, 2=Arrendatário)
  • depreciacao_especial
Changelog da API

Histórico das mudanças relevantes para integradores, mantido para transparência ativa com as entidades reguladas e suas equipes de TI. Mudanças que afetam contratos existentes são sinalizadas em destaque.

Abril/2026 — Tipagem numérica para capacidade e unidade_de_medida

Mudança incompatível parcial. Os campos capacidade e unidade_de_medida passam a ser numéricos. Antes, capacidade era texto livre (ex.: "50 toneladas"); essa forma agora é rejeitada com HTTP 400.
  • capacidade: agora número (inteiro ou decimal, ≥ 0). Envie 50 em vez de "50 toneladas".
  • unidade_de_medida: agora inteiro de 1 a 17, vinculado ao dicionário oficial do APEX. Para "toneladas" use 16; para "metros cúbicos" use 11; consulte a tabela completa na seção Dicionário de Campos Enumerados acima.
  • Retrocompatibilidade preservada para strings numéricas: a API ainda aceita valores enviados como string desde que sejam numericamente válidos — por exemplo "50" ou "16" são convertidos automaticamente. Apenas strings descritivas ("50 toneladas") são rejeitadas.
  • Validação reforçada: CNPJs com mais de 14 dígitos e numero_registro_patrimonial acima de 50 caracteres agora retornam HTTP 400 com mensagem amigável (antes podiam cair em erro genérico do servidor).
  • Ação recomendada para integradores: ajustar os clientes para enviar capacidade como número JSON puro e unidade_de_medida como inteiro do dicionário.

Março/2026 — Ferramenta web de importação em lote

  • Nova interface para importação de bens via planilha Excel: upload.html. Inclui geração do modelo oficial, controle de envio em lote (com pausa, retomada e cancelamento) e relatório linha-a-linha do resultado.
  • Validações locais executadas no navegador antes do envio à API, reduzindo idas e voltas:
    • Combinação NCM (capítulo + posição + subposição) contra a tabela SISPAT_SUBPOSICOES;
    • Conta contábil contra a tabela SISPAT_CONTA_CONTABIL;
    • Código trigrama de porto contra a tabela TB_PORTOS.
  • Botão de exportação do contrato OpenAPI 3.0 disponível na navbar da documentação, facilitando geração de SDKs e mocks.
  • Link para o Manual de Inventário Patrimonial adicionado à navegação principal.
  • Correções na documentação interativa: tipos JSON, campos obrigatórios, exemplos coerentes e detecção robusta do cabeçalho da planilha.

Março/2026 — Padronização dos endpoints de imagem

Mudança incompatível. O campo id_cadastro_de_bens deixou de fazer parte do JSON de saída. A identificação pública de um bem é feita exclusivamente pelo par cnpj + numero_registro_patrimonial.
  • Os endpoints GET, PUT e POST de imagem foram padronizados para o mesmo formato de URL e cabeçalhos.
  • Removido o identificador interno do banco da resposta da API: clientes que dependiam de id_cadastro_de_bens devem migrar para a chave natural.
  • Correções em exemplos da documentação para refletir o novo contrato.

Janeiro/2026 — Lançamento da v2.1.0

  • Novo endpoint POST /sispat/imagem/ para upload de foto vinculada a um bem patrimonial. Tamanho máximo de 5 MB; formatos aceitos: JPEG, PNG, GIF, WebP, BMP.
  • Documentação interativa publicada com Swagger UI integrado, exemplos de cURL/JavaScript/Python e dicionário completo de campos enumerados.
  • Padronização da lista oficial de unidades de medida e descrições de bens patrimoniais.

Para reportar incidentes, esclarecer dúvidas de integração ou solicitar funcionalidades, contate a equipe responsável pelo SisPAT em inventario@antaq.gov.br.