Ir para o conteúdo

Cadastrar GTA

POST /integracao/gta

📌 O que o endpoint faz

Este endpoint é responsável por executar a operação de Cadastrar GTA. Ele trafega dados diretamente na base do SISBOV, permitindo a gestão correta das informações via integração de sistemas. Os dados são processados e validados mediante as rigorosas regras exigidas pelo MAPA para as certificadoras.


🧠 Lógica de Negócio (PORTUGOL)

A rotina interna do microserviço e sua cadeia de responsabilidades é definida simplificadamente pelos seguintes passos estruturados:

FUNÇÃO `CadastrarGTA`(payload):
  1. Validar campos obrigatórios do payload recebido.
  2. Verificar regras de unicidade e vínculos (ex: verificar se as entidades relacionadas como Produtor e Propriedade existem).
  3. Aplicar as regras de permissão (Perfil Certificadora só acessa seus dados).
  4. Instanciar a nova entidade com status ativo ou inicial.
  5. SALVAR no banco de dados.
  6. RETORNAR código 201 com o ID gerado.
FIM_FUNÇÃO

📋 Dados da Requisição (Payload)

Essa tabela lista de forma robusta os campos do corpo JSON exato deste endpoint, baseado nos payloads presentes no Postman oficial.

🔗 Objeto Base Esperado (REQUEST BODY): GTASync

Campo do Payload Tipo Variável Comportamento no Envio
tipogta Object 🚨 Obrigatório
serie Object 🚨 Obrigatório
tipoTransporte Object 🚨 Obrigatório
idPropriedadeOrigem Object 🚨 Obrigatório
numeroComposto Object 🚨 Obrigatório
idPropriedadeDestino Object 🚨 Obrigatório
identificadorReceitaProdutorNaoCadastrado Object 🚨 Obrigatório
dataValidade LocalDate 🚨 Obrigatório
nomePropriedadeNaoCadastrada Object 🚨 Obrigatório
dataEntrada LocalDate 🚨 Obrigatório
oesaPropriedadeNaoCadastrada Object 🚨 Obrigatório
uf Object 🚨 Obrigatório
numero Object 🚨 Obrigatório
idProdutorOrigem Object 🚨 Obrigatório
idProdutorDestino Object 🚨 Obrigatório
dataEmissao LocalDate 🚨 Obrigatório
quantidadeDeAnimais Object 🚨 Obrigatório
nomeProdutorNaoCadastrado Object 🚨 Obrigatório
dataSaida LocalDate 🚨 Obrigatório
idFrigorificoDestino Object 🚨 Obrigatório

Fonte de Informação: A lista de obrigatoriedade acima foi compilada processando os exemplos reais contidos na Collection do Postman.


📦 Modelos de Dados (Data Models)

Configuração da Requisição

  • URL Base: https://api-cert.sisbov.agro.br (Produção) / https://api-cert-hom.sisbov.agro.br (Homologação)
  • Path Parameter / Query Parameter: Parâmetros definidos na própria URL (/integracao/gta). Em caso de paginação, utilizar os query parameters padrões formados por ?pageSize=20&currentPage=0.
  • Header Parameters:
    • Authorization: Bearer <seu_token_jwt> (Obrigatório em todas as chamadas)
    • Content-Type: application/json

Payload de Envio (Request)

Em endpoints que requerem o envio de corpo de dados (ex: POST, PUT), deve-se enviar um objeto JSON compatível com o DTO adequado. Variáveis obrigatórias não podem ser enviadas como nulas. Em PUTs de atualização as entidades geralmente reagem de forma atômica — você deve preencher o DTO integralmente contendo suas modificações.

Resposta (Response)

  • Sucesso (200/201/204): O payload retornado apresenta o status de confirmação, porções da entidade, ou no caso de cadastros, o { "id": "<uuid>" }.
  • Erro de Negócio (400/417):
    {
      "error": "Descrição detalhada do bloqueio pela regra de negócio"
    }
    
  • Erro de Acesso (401/403): Token expirado ou dados fora da permissão da certificadora.

🚀 Exemplo de Uso (Postman Collection)

Recorte real gerado a partir do arquivo SISBOV 2.0.postman_collection.json.

POST https://api-cert-hmg-sisbov.agricultura.gov.br/integracao/gta
Content-Type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2htZy1zaXNib3YuYWdyaWN1bHR1cmEuZ292LmJyIiwiaWF0IjoxNzcwMjIzMDczLCJhdXRoX3RpbWUiOjE3NzAyMjMwNzMsIm5hbWUiOiJFZHNvbiIsImV4cCI6MTc3MDIzMDI3MywidXBuIjoiZWRzb25Ac2VrdGVjaC5jb20uYnIiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJlZHNvbkBzZWt0ZWNoLmNvbS5iciIsImdyb3VwcyI6WyJjZXJ0aWZpY2Fkb3JhIl0sImp0aSI6IjIwNzE5MmYzLWZiODgtNDlmYy1iOTE3LWFkNjJjMDQwMzg3OSJ9.UPAkx1mzOjRMA0Xy9cVfyDqnBzTO_LeRxuz7vBDXLmmij4Xs5EQt8VgAArYV3HtVzw3DuNZ20mjI4ekOpGt4xAN5-InPOiY9h56XIm7PEGJ4tBT-q7L-EyQe2Anddc6VGu29CspX2SpEE0IZ7-O8eQsWExZWJD-vNZvHPoY9j-dQc1UUi2NilsoFNaAt71pA_1uCZECXx9Fa-7Ey6nFunhVC3UFA7dsXGVYxkQb9fuTdBYMyTMieN14_1RRblvDN8AjZn_gXek6XjQWlaqWqATz3a0QkhrNHgdGGf7xUsS3d-uu7GhY7ZU0xoMzd-3SSx1f59-XXcVgdOGhK0sAxPg

{
  "numero": "987654",
  "serie": "AC",
  "numeroComposto": "AC9876541",
  "uf": "GO",
  "idPropriedadeOrigem": null,
  "idPropriedadeDestino": "d6ceaadb-ca7f-4b7b-83a5-844e76085036",
  "idProdutorOrigem": null,
  "idProdutorDestino": "9e1ec815-f00d-4ea7-b1c2-0d6d8f8d6d2f",
  "idFrigorificoDestino": null,
  "dataEmissao": "2026-01-30",
  "dataValidade": "2026-02-02",
  "dataEntrada": "2026-02-02",
  "dataSaida": "2026-02-02",
  "quantidadeDeAnimais": "100",
  "tipoTransporte": "RODOVIARIO",
  "tipogta": "SEM_IDENTIFICACAO_ORIGEM",
  "identificadorReceitaProdutorNaoCadastrado": "79859763100",
  "nomeProdutorNaoCadastrado": null,
  "oesaPropriedadeNaoCadastrada": "52009100921",
  "nomePropriedadeNaoCadastrada": null
}

📑 Simulação Swagger (OpenAPI)

Exemplo da especificação gerada que molda a página do Swagger Interativo:

Nenhuma definição OpenAPI pública encontrada para este endpoint na especificação base.