> ## Documentation Index
> Fetch the complete documentation index at: https://docs.unifokal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Registros públicos

> Quinze consultas a registros públicos sobre a pessoa ou a empresa verificada, com o bloco source_input para conselhos, chave Pix e empregador.

## Registros públicos

Quinze módulos que consultam registros públicos sobre a pessoa ou a empresa verificada. Todos rodam no servidor, depois das capturas, e seguem a mesma gramática: `flagged` diz se houve achado e `result` traz o dado da fonte, sem o envelope da consulta. Um achado **nunca reprova sozinho**: leva a verificação para revisão humana com a evidência. Fonte fora do ar deixa o check `pending` e **não é cobrado**, nunca um falso nada consta.

Os de pessoa consultam o CPF lido pelo `cpf_ocr` e exigem `cpf_ocr`, `face` e `liveness` no flow. Os de empresa consultam o CNPJ lido pelo `cnpj_ocr`. O documento consultado nunca é digitado.

**Pessoa: óbito, Banco Central, CADIN de São Paulo, certidão federal, situação eleitoral, licitante inidôneo**

```
// cpf_death_record: óbito confirmado na fonte (a probabilidade sozinha não vira achado)
{ "module": "cpf_death_record", "passed": false, "outcome": "failed", "score": 40,
  "data": { "flagged": true,
    "result": { "report": { "obitos": 1, "possiveis_obitos": 0 },
                "results": [ { "obito": true, "ano_falecimento": "2019" } ] } } }

// central_bank_disqualification: inabilitado pelo Banco Central, com o prazo
{ "module": "central_bank_disqualification", "passed": false, "outcome": "failed", "score": 40,
  "data": { "flagged": true,
    "result": { "constamPenalidades": true,
                "penalidades": [ { "descricao": "INABILITACAO TEMPORARIA",
                                   "dataInicio": "2024-01-10", "dataFim": "2029-01-10" } ] } } }

// cadin_sp: CADIN ESTADUAL de São Paulo (não é o CADIN federal do credit_cadin)
{ "module": "cadin_sp", "passed": true, "outcome": "approved", "score": 100,
  "data": { "flagged": false, "result": { "possuiPendencias": false, "pendencias": [] } } }

// federal_tax_debt_certificate: certidão conjunta Receita e PGFN do CPF.
// Positiva com efeitos de negativa conta como regular.
{ "module": "federal_tax_debt_certificate", "passed": true, "outcome": "approved", "score": 100,
  "data": { "flagged": false,
    "result": { "possuiDividas": false, "possuiPendencias": false, "listaDividas": [] } } }

// electoral_status
{ "module": "electoral_status", "passed": true, "outcome": "approved", "score": 100,
  "data": { "flagged": false, "result": { "isRegular": true, "biometriaColetada": true } } }

// debarred_bidder: licitante inidôneo
{ "module": "debarred_bidder", "passed": true, "outcome": "approved", "score": 100,
  "data": { "flagged": false, "result": { "possuiSancao": false } } }

// corporate_links: informativo, nunca reprova. Os outros sócios e os parentes não entram.
{ "module": "corporate_links", "passed": true, "outcome": "approved", "score": 100,
  "data": { "flagged": false,
    "result": { "sociedades": [ { "cnpj": "12.345.678/0001-90", "razaoSocial": "EXEMPLO PARTICIPACOES LTDA",
                                  "baixada": false } ] } } }
```

**Empresa: certidão federal, FGTS, Simples Nacional**

```
// company_federal_tax_debt_certificate: certidão conjunta do CNPJ lido no documento da empresa
{ "module": "company_federal_tax_debt_certificate", "passed": true, "outcome": "approved", "score": 100,
  "data": { "flagged": false, "result": { "possuiDividas": false, "possuiPendencias": false } } }

// employer_fgts_status: regularidade do empregador no FGTS
{ "module": "employer_fgts_status", "passed": true, "outcome": "approved", "score": 100,
  "data": { "flagged": false, "result": { "regular": true } } }

// simplified_tax_regime: informativo
{ "module": "simplified_tax_regime", "passed": true, "outcome": "approved", "score": 100,
  "data": { "flagged": false, "result": { "optanteSimplesNacional": true, "optanteSimei": false } } }
```

O CNPJ alfanumérico ainda não está nos exemplos da fonte: nesse caso o check fica `pending` com o motivo `alphanumeric_cnpj_unsupported`, sem cobrança.

**Com dado de entrada: conselhos, chave Pix e empregador**

Cinco módulos consultam um dado que documento nenhum traz. Ele chega no bloco `source_input` da criação da sessão, pelo seu servidor (chave secreta), e cada chave só é aceita com o módulo dela no flow (422 `source_input_not_supported`). O que você não mandar, o widget pede ao titular antes das capturas, e o seu valor **sempre vence**: o titular nunca sobrescreve o que o servidor mandou.

```
POST /v1/verification-sessions
{ "flow_id": "flow_...", "reference_id": "cliente-123",
  "source_input": {
    "crm":  { "uf": "MG", "number": "785493" },                     // crm_registry
    "cro":  { "uf": "MG", "number": "56976", "category": "cd" },    // cro_registry
    "crbm": { "region": "01", "number": "393" },                     // crbm_registry
    "pix_key": { "type": "cpf", "key": "15379633331" },             // pix_key_fraud
    "employer_cnpj": "42956441000101"                                // employment_link
  } }

// tipo de chave Pix aceito hoje: cpf (o único que a fonte documenta; os outros tipos são recusados com 400)
```

O valor fica **cifrado** na sessão e é apagado quando a sessão fecha. O `GET /v1/verification-sessions/self/state` do widget publica só os nomes que faltam, em `source_input_missing`, nunca um valor. Sem o dado, o check fica `pending` com o motivo `subject_input_missing`, sem consulta e sem cobrança.

A resposta é **amarrada ao titular**. Nos conselhos, o nome que o conselho publica é comparado ao nome lido no documento (`holder_name_match`): nome diferente é achado para revisão, porque o registro pode ser de outra pessoa. Na chave Pix, o documento consultado é sempre o CPF lido. No vínculo de emprego, `holder_listed` diz se o CPF lido aparece no quadro, e a lista de funcionários nunca sai da consulta.

```
// crm_registry: registro ativo e o nome bate com o documento
{ "module": "crm_registry", "passed": true, "outcome": "approved", "score": 100,
  "data": { "flagged": false, "holder_name_match": true,
    "result": { "situacao": "ATIVO", "categoria": "MEDICO", "uf": "MG",
                "nome_razao_social": "JOAO EXEMPLO", "especialidades": "DERMATOLOGIA" } } }

// cro_registry: o registro existe, mas é de outra pessoa
{ "module": "cro_registry", "passed": false, "outcome": "failed", "score": 40,
  "data": { "flagged": true, "holder_name_match": false,
    "result": { "situacao": "ATIVO", "categoria": "CIRURGIAO DENTISTA", "nome_razao_social": "MARIA EXEMPLO" } } }

// crbm_registry: sem nome lido no documento, vale a situação do registro
{ "module": "crbm_registry", "passed": true, "outcome": "approved", "score": 100,
  "data": { "flagged": false, "holder_name_match": null,
    "result": { "situacao": "ATIVO", "regiao": "01", "categoria": "BIOMEDICO" } } }

// pix_key_fraud: informativo, os indicadores são para a sua regra
{ "module": "pix_key_fraud", "passed": true, "outcome": "approved", "score": 100,
  "data": { "flagged": false,
    "result": { "tipo": "CPF", "status": "Chave Ativa", "riscoFraude": "Baixo", "riscoLaranja": "Baixo",
                "probabilidadeTitularidade": "Alta" } } }

// employment_link: informativo; holder_listed null quando a fonte não publica os CPFs do quadro
{ "module": "employment_link", "passed": true, "outcome": "approved", "score": 100,
  "data": { "flagged": false,
    "result": { "razaoSocial": "EMPRESA EXEMPLO LTDA", "quantidadeFuncionarios": 42, "holder_listed": true } } }

// sem o dado de entrada: pendente, sem consulta e sem cobrança
{ "module": "employment_link", "passed": null, "outcome": "pending", "score": 0,
  "data": { "flagged": false, "result": null } }
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.