ANTAQ

SISPAT - API de Bens Patrimoniais v2.3.0

Agência Nacional de Transportes Aquaviários - ANTAQ

Importar por Planilha Exportar OpenAPI Manual de Inventário

Guia de Integração Rápida

Autenticação e Segurança

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.

Acesso para Empresas de Tecnologia

Empresas de tecnologia interessadas em desenvolver soluções integradas ao SisPAT podem solicitar acesso ao ambiente de homologação (Sandbox) para estudar e testar a API.

Para isso, envie um e-mail para inventario@antaq.gov.br com as seguintes informações do representante responsável:

  • Nome completo
  • CPF
  • E-mail corporativo
  • CNPJ da empresa
Nota: O acesso concedido é restrito ao ambiente de Sandbox e vinculado ao CNPJ da empresa de tecnologia. Não há acesso aos dados de produção das entidades reguladas.

Controles de Segurança

ControleImplementação
Transporte seguroHTTPS obrigatório em todos os endpoints; HTTP rejeitado
AutenticaçãoAPI Key individual por empresa, vinculada ao CNPJ
AutorizaçãoChave só opera sobre dados do CNPJ ao qual está vinculada
Isolamento de ambientesProdução e Sandbox com chaves e bases de dados separadas
Rotação de credenciaisAPI Keys podem ser revogadas e recriadas a qualquer momento
RastreabilidadeTodas as operações de escrita são registradas com log estruturado
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á.
Vinculação de Bens (Hierarquia Pai-Filho)

O campo opcional numero_registro_patrimonial_pai permite vincular um bem acessório (filho) a um bem principal (pai). Isso é útil para bens como sensores, válvulas ou componentes que possuem registros patrimoniais próprios mas estão fisicamente vinculados a um bem maior (tanques, guindastes, etc.).

A hierarquia é limitada a um único nível (pai → filho). Não é possível criar estruturas mais profundas (avô → pai → filho).

Regras de Validação

# Regra Exemplo
1 Não pode referenciar a si mesmo — o numero_registro_patrimonial_pai não pode ser igual ao numero_registro_patrimonial do próprio bem. PAT-001 não pode ser pai de PAT-001.
2 Pai deve existir — o numero_registro_patrimonial_pai deve corresponder a um bem já cadastrado no mesmo CNPJ. O bem pai precisa ser criado antes do bem filho. Se PAT-999 não existe, não pode ser referenciado como pai.
3 Pai não pode ser filho de ninguém — o bem apontado como pai não pode possuir um numero_registro_patrimonial_pai preenchido. Isso garante apenas um nível de hierarquia, bloqueando a criação de "netos". Se PAT-002 já é filho de PAT-001, então PAT-002 não pode ser pai de PAT-003.
4 Bem com filhos não pode virar filho — um bem que já é referenciado como pai por outros bens não pode receber um numero_registro_patrimonial_pai. Isso impede a criação de hierarquia multinível "por cima". Se PAT-001 já tem filhos, não pode ser vinculado como filho de PAT-010.

Exemplo de uso

Cadastre primeiro o bem principal (pai) e depois o bem acessório (filho) referenciando o pai:

// 1. Primeiro, cadastre o bem principal (pai)
PUT /sispat/bens/
{
    "cnpj": "04903587000108",
    "numero_registro_patrimonial": "PAT-2024-0001",
    "nome_item": "Guindaste portuário",
    ...
}

// 2. Depois, cadastre o bem acessório (filho) vinculando ao pai
PUT /sispat/bens/
{
    "cnpj": "04903587000108",
    "numero_registro_patrimonial": "PAT-2024-0001-A",
    "numero_registro_patrimonial_pai": "PAT-2024-0001",
    "nome_item": "Sensor de carga do guindaste",
    ...
}
Nota: Na resposta do GET, o campo numero_registro_patrimonial_pai só aparece para bens que possuem um pai vinculado. Para bens sem vínculo, o campo é omitido (valor null).

Respostas de erro

Todas as violações das regras de hierarquia retornam HTTP 422:

// Auto-referência
{"status": 422, "error": "VALIDATION_ERROR",
 "message": "O bem não pode ser pai de si mesmo."}

// Pai inexistente
{"status": 422, "error": "VALIDATION_ERROR",
 "message": "Bem pai não encontrado. O número de registro patrimonial \"PAT-999\" não existe para este CNPJ."}

// Pai já é filho (tentativa de criar neto)
{"status": 422, "error": "VALIDATION_ERROR",
 "message": "O bem pai informado já é filho de outro bem. Apenas um nível de hierarquia é permitido (pai → filho)."}

// Bem com filhos tentando virar filho
{"status": 422, "error": "VALIDATION_ERROR",
 "message": "Este bem já possui bens filhos vinculados. Um bem pai não pode ser vinculado como filho de outro bem."}
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 da Administração
6Bens em Operação
7Imobilizado em Andamento
8Benfeitorias úteis em Bens de Terceiros

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.
18Tonelada/hora (transportadores, elevadores de caneca)
19kVA (transformadores elétricos)
20m³/hora (bombas centrífugas)
21CV (motores elétricos)

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 — Atualização do dicionário tipo_de_bem (alinhamento ao SICRASP/2022)

  • Novo valor adicionado ao dicionário tipo_de_bem:
    • 8 — Benfeitorias úteis em Bens de Terceiros.
  • Renomeação de rótulos (os códigos numéricos foram preservados; só o texto descritivo mudou):
    • 5: Bens Próprios - AdministraçãoBens da Administração;
    • 6: Bens Próprios - OperaçãoBens em Operação.
  • Faixa aceita pela API passa de 1..7 para 1..8. A lista completa está na seção Dicionário de Campos Enumerados acima.
  • Retrocompatível: bens já cadastrados com os códigos 5 e 6 permanecem válidos sem necessidade de atualização — apenas a interpretação textual do código mudou, em alinhamento à estrutura do imobilizado adotada pelo SICRASP a partir de 2022. Integrações existentes continuam funcionando sem ajuste.

Abril/2026 — Novas unidades de medida (equipamentos portuários)

  • Adicionados quatro códigos ao dicionário unidade_de_medida para atender equipamentos típicos do setor portuário:
    • 18 — Tonelada/hora (transportadores e elevadores de caneca);
    • 19 — kVA (transformadores elétricos);
    • 20 — m³/hora (bombas centrífugas);
    • 21 — CV (motores elétricos).
  • Faixa aceita pela API passa de 1..17 para 1..21. A lista completa está na seção Dicionário de Campos Enumerados acima.
  • Retrocompatível: os códigos anteriores (1–17) permanecem inalterados. Integrações existentes continuam funcionando sem ajuste.

Abril/2026 — Vinculação de bens (hierarquia pai-filho)

  • Novo campo opcional numero_registro_patrimonial_pai no PUT e GET para vincular bens acessórios (filhos) a um bem principal (pai).
  • Hierarquia limitada a um único nível (pai → filho). Quatro regras de validação impedem auto-referência, pais inexistentes, criação de "netos" e transformação de pais existentes em filhos.
  • Retrocompatível: o campo é opcional e nullable. Integrações existentes continuam funcionando sem alteração.

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.