Wiki de Integração de Certificadoras – API SISBOV 2¶
Índice de Tópicos¶
| # | Tópico | Itens |
|---|---|---|
| 1 | Arquitetura e Conceitos Gerais | 10 |
| 2 | Segurança e Autenticação | 7 |
| 3 | Estrutura das Requisições | 3 |
| 4 | Códigos de Retorno HTTP | 2 |
| 5 | Rastreabilidade SISBOV | 4 |
| 6 | ERAS – Estabelecimento Rural Aprovado | 3 |
| 7 | Modelo de Entidades | 3 |
| 8 | Campos Obrigatórios em Payloads | 3 |
| 9 | Exemplos de Payload | 4 |
| 10 | Tipos e Enums | 5 |
| 11 | Fluxos Operacionais | 6 |
| 12 | Qualidade de Dados e Boas Práticas | 3 |
| 13 | Ambientes e Versionamento | 3 |
| Total | 56 |
1. Arquitetura e Conceitos Gerais¶
1.1 Qual é o objetivo principal da API de integração do SISBOV 2 para certificadoras?¶
Resposta: Permitir a comunicação automatizada entre os sistemas das certificadoras e o sistema SISBOV, possibilitando o registro, consulta e atualização de informações de rastreabilidade de animais e propriedades, garantindo padronização, integridade e auditoria das informações registradas.
1.2 Qual o modelo de comunicação utilizado pela API?¶
Resposta: RESTful API
1.3 Quais são os princípios REST respeitados pela API?¶
Resposta:
- Comunicação stateless
- Recursos identificados por URI
- Uso de métodos HTTP padronizados (GET, POST, PUT, DELETE)
- Representação em JSON
- Cacheabilidade quando aplicável
1.4 O que significa o princípio stateless em APIs REST?¶
Resposta: Cada requisição contém todas as informações necessárias para ser processada, sem dependência de estado de sessão no servidor. Permite escalabilidade horizontal, reduz dependência de sessão e facilita balanceamento de carga.
1.5 Qual formato de dados é utilizado nas requisições e respostas da API?¶
Resposta: JSON
1.6 O que representa o conceito de produtor no modelo de dados do SISBOV?¶
Resposta: Pessoa física ou jurídica responsável pela criação e manejo dos animais vinculados ao sistema de rastreabilidade.
1.7 O que representa uma propriedade dentro do sistema?¶
Resposta: Unidade rural vinculada a um produtor onde ocorre a criação ou manejo de animais registrados no SISBOV.
1.8 O que representa um proprietário dentro do sistema?¶
Resposta: Detentor legal da propriedade rural.
1.9 Qual é a relação entre Produtor, Propriedade e Animal?¶
Resposta:
- O produtor é o responsável legal pela atividade pecuária.
- O produtor possui uma ou mais propriedades.
- A propriedade possui um ou mais animais registrados no SISBOV.
1.10 O que significa idempotência em APIs?¶
Resposta: Uma requisição idempotente pode ser executada múltiplas vezes sem alterar o resultado final. Evita duplicidade de registros quando ocorrem reenvios de requisição por falhas de rede.
Exemplos de operações idempotentes: GET, PUT, DELETE.
2. Segurança e Autenticação¶
2.1 Qual método de autenticação é utilizado para acesso à API?¶
Resposta: Autenticação baseada em token de acesso (Bearer Token) obtido via endpoint
auth/system, informando os headersX-ACCESS-KEYeX-SECRET-KEY.
⚠️ O uso do WSO2 foi removido da API.
2.2 O que representa um token de acesso no contexto da API?¶
Resposta: Credencial digital temporária que comprova a identidade do cliente da API e permite acesso aos recursos autorizados.
2.3 Qual a finalidade do header Authorization nas requisições HTTP?¶
Resposta: Transportar o token de autenticação que autoriza o cliente a acessar a API.
2.4 Qual é a principal diferença entre autenticação e autorização?¶
Resposta:
- Autenticação → verifica quem é o usuário/sistema
- Autorização → define o que ele pode acessar
2.5 Por que é importante utilizar HTTPS nas chamadas da API?¶
Resposta:
- Garante criptografia da comunicação
- Protege dados sensíveis contra interceptação
- Garante integridade da comunicação
2.6 O que deve ser feito quando um token de acesso expira?¶
Resposta: Solicitar um novo token de acesso através do endpoint
auth/systemantes de realizar novas chamadas.
2.7 O que ocorre se uma requisição for enviada sem token?¶
Resposta: A API retorna HTTP 401 – Unauthorized (falha de autenticação).
3. Estrutura das Requisições¶
3.1 Quais são os principais métodos HTTP utilizados na API?¶
| Método | Uso |
|---|---|
| GET | Consulta de dados |
| POST | Criação de registros |
| PUT | Atualização |
| DELETE | Remoção |
3.2 O que é um Request Payload?¶
Resposta: Corpo da requisição enviado pelo cliente contendo os dados da operação, no formato JSON.
3.3 O que é um Response Payload?¶
Resposta: Corpo da resposta retornada pela API após o processamento da requisição.
4. Códigos de Retorno HTTP¶
4.1 Tabela de Códigos HTTP¶
| Código | Significado |
|---|---|
| 200 | Sucesso |
| 201 | Recurso criado com sucesso |
| 400 | Erro de validação na requisição |
| 401 | Falha de autenticação (token inválido) |
| 403 | Acesso proibido (não autorizado) |
| 404 | Recurso não encontrado |
| 417 | Erro de regra de negócio SISBOV |
| 500 | Erro interno do servidor |
4.2 O que significa o retorno 417 (Expectation Failed) na API SISBOV?¶
Resposta: Indica que a requisição foi tecnicamente recebida, porém falhou em validações de regra de negócio ou integridade de dados exigidas pelo sistema SISBOV. O retorno sempre vem acompanhado do texto descritivo do erro.
Exemplos de situações que geram 417:
- Número SISBOV inválido ou duplicado
- ERAS inexistente ou inválido
- Animal já registrado no sistema
- Inconsistência de rastreabilidade
- Data inválida
5. Rastreabilidade SISBOV¶
5.1 O que é o Número SISBOV?¶
Resposta: Identificador único e individual de rastreabilidade atribuído ao animal dentro do sistema SISBOV. Não pode ser reutilizado.
5.2 Quais são os tipos de Número SISBOV?¶
| Tipo | Descrição |
|---|---|
| 076 | Identificação padrão SISBOV (novos cadastros) |
| 105 | Identificação derivada, reidentificação ou estoque legado |
Novas solicitações de numeração geram apenas números padrão 076.
5.3 Por que o Número SISBOV é crítico para auditorias internacionais?¶
Resposta: Porque garante rastreabilidade individual do animal ao longo de toda a cadeia produtiva, sendo exigido em auditorias sanitárias e processos de exportação de carne.
5.4 O que representa um evento na vida do animal dentro do sistema?¶
Resposta: Registro de um acontecimento relevante no ciclo de vida do animal.
Exemplos de eventos:
- Nascimento / Identificação
- Movimentação entre propriedades
- Entrada em frigorífico
- Morte
- Desligamento
- Reidentificação
6. ERAS – Estabelecimento Rural Aprovado no SISBOV¶
6.1 O que é ERAS?¶
Resposta: Estabelecimento Rural Aprovado no SISBOV — identificador oficial atribuído a propriedades rurais habilitadas no sistema de rastreabilidade.
6.2 O que representa o codigoEras?¶
Resposta: Identificador da propriedade oficialmente habilitada no SISBOV. Utilizado para:
- Registro de animal
- Movimentação entre propriedades
- Vinculação de eventos
6.3 Um animal pode existir sem ERAS?¶
Resposta: Não. O
codigoErasé obrigatório no cadastro do animal. Se o ERAS for inválido, a API retorna HTTP 417.
7. Modelo de Entidades¶
7.1 Qual a diferença entre Produtor e Proprietário?¶
| Entidade | Descrição |
|---|---|
| Produtor | Responsável pela atividade pecuária e manejo dos animais |
| Proprietário | Detentor legal da propriedade rural |
Um produtor pode estar vinculado a várias propriedades e vice-versa. São cadastros independentes — não há hierarquia ou prioridade de criação.
7.2 Como vincular Produtor a uma Propriedade?¶
Resposta:
7.3 O campo isProprietario do Produtor — o que significa?¶
Resposta: Indica se o Produtor é também proprietário de uma Propriedade. Se informado
true, será cadastrado automaticamente um Proprietário que poderá ser localizado peloidentificadorReceita(chave natural).
8. Campos Obrigatórios em Payloads¶
8.1 Campos obrigatórios típicos para cadastro de animal¶
| Campo | Obrigatório |
|---|---|
numeroSisbov |
✅ Sim |
codigoEras |
✅ Sim |
sexoAnimal |
✅ Sim |
dataNascimento |
✅ Sim |
dataIdentificacao |
✅ Sim |
codigoRaca |
✅ Sim (consultar tabela de domínio) |
8.2 O que ocorre se um campo obrigatório estiver ausente?¶
Resposta: A requisição é rejeitada com HTTP 400 – Bad Request (erro de validação).
8.3 O que ocorre se um campo possuir valor inválido?¶
Resposta: A API retorna HTTP 417 – Expectation Failed (erro de regra de negócio).
9. Exemplos de Payload¶
9.1 Payload válido — cadastro de animal¶
{
"numeroSisbov": "076123456789012",
"codigoEras": "ERAS12345",
"sexoAnimal": "M",
"dataNascimento": "2022-05-10"
}
Resposta esperada: HTTP 201 Created
9.2 Payload inválido — campo obrigatório ausente¶
Erro esperado: HTTP 400 — campo numeroSisbov ausente.
9.3 Payload inválido — ERAS inexistente¶
{
"numeroSisbov": "076123456789012",
"codigoEras": "ERAS99999",
"sexoAnimal": "F",
"dataNascimento": "2021-03-15"
}
Erro esperado: HTTP 417 — ERAS inexistente ou inválido.
9.4 Payload inválido — SISBOV duplicado¶
Erro esperado: HTTP 417 — animal já registrado.
10. Tipos e Enums¶
10.1 TipoIdentificacao¶
Consultar Enum na sessão Schema do Swagger.
Valores documentados: BR, BRINCO, BRINCO_BOTON, BRINCO_DISPOSITIVO, BO, BRBO, BRTA, DEIV, TAMF, BRDE, VIVO, RIN, ASSRA, BOMF, MIGR, BRMF, BRBOF
10.2 TipoEntradaAnimal¶
| Valor | Quando usar |
|---|---|
NASCIMENTO |
Identificação no nascimento |
ENTRADA |
Entrada a partir de propriedade não ERAS |
REINDENTIFICACAO |
Reidentificação por mudança de elemento de identificação |
CARGA_INICIAL |
Portabilidade — não utilizado pelas certificadoras |
DADOS_MIGRADOS |
Portabilidade — não utilizado pelas certificadoras |
10.3 StatusAnimal¶
Consultar Enum na sessão Schema do Swagger.
Valores: VIVO, MORTO, ABATIDO, ABATIDO_PARA_EXPORTACAO, DESLIGADO, EM_FRIGORIFICO, EM_TRANSITO, APTO_PARA_ABATE_PARA_EXPORTACAO, CALHA_SANGRIA
Os status
CALHA_SANGRIAeAPTO_PARA_ABATE_PARA_EXPORTACAOsão exclusivos do contexto de frigoríficos.
10.4 TipoGTA¶
| Valor | Quando usar |
|---|---|
PADRAO |
GTA utilizada para Movimentações entre propriedades |
SEM_IDENTIFICACAO_ORIGEM |
GTA de entrada de animais originados de propriedade não ERAS |
10.5 TipoTransporte¶
Consultar Enum na sessão Schema do Swagger.
Valores: CAMINHAO, CARAVANA, A_PE, RODOVIARIO, MARITMO_FLUVIAL, AEREO
11. Fluxos Operacionais¶
11.1 Fluxo completo de cadastro de animal via API¶
- Autenticação (
auth/system) — obter Bearer Token - Validação local dos dados do animal
- Verificar validade do
codigoEras - Envio do payload via
POST /animais - Validação pelo sistema SISBOV
- Retorno do identificador do animal (HTTP 201)
11.2 Fluxo completo de Movimentação entre Propriedades¶
Ações da origem:
1. Criar movimentação
2. Informar GTAs
3. Adicionar animais
4. Iniciar movimentação → PUT /movimentacao/{id}/iniciarMovimentacao
Ações do destino:
5. Finalizar movimentação → PUT /movimentacao/{id}/finalizarMovimentacaoEntrePropriedades
Os animais alteram
propriedadeLocalizaçãoe produtor somente após a finalização. Após finalizada, a movimentação não pode ser cancelada.
11.3 Fluxo de Movimentação para Frigorífico¶
Similar à Movimentação entre Propriedades, porém informa o Frigorífico de destino (CNPJ ou SIF) em vez de Produtor e Propriedade.
A responsabilidade da certificadora vai até o
iniciarMovimentacao. A partir deste ponto, a responsabilidade é do Frigorífico de destino.
11.4 Fluxo de Registro de Morte¶
Processado um animal por vez. Para obter
idCausaMorte:GET /util/dominio/listDominio/{dominio}
11.5 Fluxo de Realização de Vistoria¶
POST /vistoria
GET /vistoria/{id}/listarPerguntas
PUT /vistoria/resposta/{idResposta}/responderAtualizar/{opcaoSelecionada}
PUT /vistoria/{id}/aprovar/{parecer}
O endpoint
PUT /vistoria/{id}/realizarnão existe.
11.6 Fluxo de solicitação de numeração¶
Até 20.000 números solicitados → aprovação automática pelo sistema. Acima disso → aprovação deve ser solicitada à SDA.
Campo
idFaixaDeNumeracao: não preencher. CampoidUsuarioSolicitante: extraído automaticamente do token JWT.
12. Qualidade de Dados e Boas Práticas¶
12.1 Por que validar os dados antes de enviá-los?¶
Resposta: Para evitar rejeição da requisição, garantir consistência da base de dados e evitar erros que comprometam a rastreabilidade ou auditorias de exportação.
12.2 Boas práticas de integração¶
✅ Validar payload localmente antes do envio
✅ Tratar corretamente os códigos de erro HTTP
✅ Implementar retry controlado (com idempotência)
✅ Registrar logs completos de cada requisição
✅ Proteger credenciais de acesso (nunca expor tokens em logs)
✅ Verificar validade do ERAS antes de enviar requisição
✅ Consultar tabelas de domínio via /util/dominio/listDominio/{dominio}
12.3 O que deve ser registrado nos logs de integração?¶
Resposta:
- Endpoint chamado
- Data e hora (timestamp)
- Identificador da requisição
- Payload enviado
- Resposta da API
- Código de status HTTP
13. Ambientes e Versionamento¶
13.1 URLs dos ambientes¶
| Ambiente | URL |
|---|---|
| Homologação | https://api-cert-hmg-sisbov.agricultura.gov.br |
| Produção | Sufixo sisbov.agricultura.gov.br |
13.2 Processo de Homologação¶
- Acesso ao ambiente de homologação
- Execução de cenários de teste obrigatórios
- Validação técnica dos resultados
- Auditoria da integração (logs)
- Liberação para produção
Testes mínimos obrigatórios:
| Teste | Resultado esperado |
|---|---|
| Cadastro válido | 201 |
| Campo ausente | 400 |
| ERAS inválido | 417 |
| SISBOV duplicado | 417 |
| Token inválido | 401 |
13.3 Política de versionamento¶
A API adota Versionamento Semântico (MAJOR.MINOR.PATCH).
- MAJOR → mudanças que quebram compatibilidade (requer migração)
- MINOR → novas funcionalidades retrocompatíveis
- PATCH → correções internas
Evoluções ocorrem primeiramente em homologação. Em produção haverá somente uma versão ativa. O changelog está disponível na documentação auxiliar da API.