Skip to main content

Consultas Externas (queries)

Rota base v5/queries.

Registro único das consultas a provedores externos usadas na análise de uma operação. Cada execução vira uma consulta persistida com o que foi pedido (params), a resposta original do provedor (data), os principais resultados já normalizados em chave/valor (values) e os registros a que a consulta foi vinculada (associations), como uma proposta ou um empréstimo.

Tipos disponíveis:

typeProvedorPara que serve
semear_srccBanco SemearAutorregulação do crédito do trabalhador (CLT): verificação SRCC, pela matrícula.
semear_nmpBanco SemearAutorregulação CLT: verificação NMP, pelo telefone do trabalhador.
semear_mcbBanco SemearAutorregulação CLT: verificação MCB, pelo CPF do agente de crédito.
nova_vida_next_cltNova VidaPerfil do trabalhador CLT: dados cadastrais, renda estimada, scores, telefones e dados do empregador.
alertaki_receita_federal_pfAlertakiSituação cadastral do CPF na Receita Federal, com nome, data de nascimento e comprovante de emissão.
Execução síncrona

Ao contrário das consultas da Dataprev, o POST aguarda o provedor e responde com o resultado final. A consulta é gravada antes da chamada ao provedor, então até uma falha fica no histórico com status = failed.

Autenticação​

Todos os endpoints exigem API Key (X-Api-Key) (ver Autenticação). Permissões do recurso "Consulta Externa":

PermissãoEndpoints
AcessarGET /{id}, POST /search
Executar consulta externaPOST /, POST /{id}/repetitions

GET /v5/query-supports e GET /v5/queries/filter-fields exigem apenas autenticação. Ver Autenticação.

Rotas implementadas​

RotaVerboResumo
/v5/queriesPOSTExecuta uma consulta (ou reaproveita uma ainda válida) e devolve o resultado.
/v5/queries/{id}GETBusca uma consulta com valores e vínculos.
/v5/queries/{id}/repetitionsPOSTExecuta de novo uma consulta, com os mesmos parâmetros, sempre no provedor.
/v5/queries/searchPOSTBusca paginada com filtros, inclusive por valor do resultado.
/v5/queries/filter-fieldsGETCampos disponíveis para filtro.
/v5/query-supportsGETListas de domínio do módulo (tipos, status, provedores, estruturas vinculáveis).

Convenções reutilizadas nesta página: Tratamento de erros, Objeto de domínio, Campo de status, Referências organizacionais. Valores fixos em Domínios › Consultas Externas.

Reaproveitamento (validade)​

Cada empresa pode configurar uma validade por tipo de consulta (horas para as consultas do Banco Semear, dias para a Nova Vida e para a Alertaki). Com validade configurada:

  • Uma consulta concluída com sucesso recebe expiresAt.
  • Um novo POST com o mesmo tipo, o mesmo CPF e os mesmos parâmetros, antes de expiresAt, não chama o provedor: devolve a consulta já existente. Se o POST pedir vínculo a um registro, o vínculo é acrescentado com reused = true.
  • Sem validade configurada, toda chamada vai ao provedor e expiresAt fica null.

POST /{id}/repetitions ignora a validade e sempre consulta o provedor.

Campos da entidade​

CampoTipoDescrição
idstring (uuid)Identificador da consulta.
nidintegerNúmero sequencial da consulta.
typeobject (code/key/name)Tipo. Ver QueryType.
providerobject (code/key/name)Provedor: semear, nova_vida ou alertaki. Ver QueryProvider.
personTypeobject (code/key/name)Sempre natural_person nos tipos atuais. Ver PersonType.
documentTypeobject (code/key/name)Sempre cpf nos tipos atuais.
documentNumberstringCPF consultado, 11 dígitos.
namestring | nullNome informado em params.name ou devolvido pelo provedor.
paramsobjectParâmetros efetivamente enviados ao provedor, no formato dele.
dataobject | nullResposta original do provedor. O formato é definido pelo provedor e pode mudar: para regras de negócio, use values.
httpStatusinteger | nullStatus HTTP devolvido pelo provedor.
errorMessagestring | nullMotivo da falha, quando status = failed.
statusobject (Status)pending, completed ou failed. Ver QueryStatus.
requestedAt / completedAtstring (date-time)Início e fim da execução.
expiresAtstring (date-time) | nullAté quando a consulta é reaproveitada. Ver Reaproveitamento.
durationMsinteger | nullTempo de resposta do provedor, em milissegundos.
values[]arrayResultado normalizado. Ver Valores do resultado.
associations[]arrayRegistros a que a consulta está vinculada. Ver Vínculos.

Valores do resultado​

Cada item de values[]:

CampoTipoDescrição
keystringChave estável do valor (snake_case). Use-a nas regras de negócio.
labelstringRótulo em português para exibição.
valuestring | nullValor como texto. Booleanos chegam como "true"/"false"; datas como YYYY-MM-DD.
valueNumberdecimal | nullPreenchido quando o valor é numérico.
valueDatestring (date-time) | nullPreenchido quando o valor é data.
groupKeystring | nullGrupo de uma lista repetida (ex.: phones). null para valores simples.
itemIndexinteger | nullPosição do item dentro do grupo, começando em 0.

Em falha, values vem vazio.

Banco Semear (semear_srcc, semear_nmp, semear_mcb)​

keyRótuloTipo
eligibleElegívelbooleano
messageMensagemtexto
agent_monthly_scorePontuação do Agente no Mêsnúmero (quando devolvido)
agent_accumulated_scorePontuação Acumulada do Agentenúmero (quando devolvido)

Nova Vida (nova_vida_next_clt)​

Quando o CPF não tem perfil CLT no provedor, a consulta termina com sucesso e traz apenas profiled = "false" e message. Com perfil, profiled = "true" e os valores abaixo, omitidos quando o provedor não os devolve:

Grupokey
Trabalhadorprofiled, name, gender, birth_date, generation, estimated_income_amount, economic_class, probable_occupation, city, state, best_time_to_call, email
Indicadorescredit_score, credit_persona, digital_score, payment_propensity_score, clt_score, turnover, average_employment_time, occupational_risk
Empregadoremployer_document_number, employer_name, employer_trade_name, employer_is_head_office, employer_branch_count, employer_opening_date, employer_legal_nature, employer_cnae_description, employer_size, employer_estimated_revenue_amount, employer_employee_count, employer_share_capital_amount, employer_partner_count, employer_has_federal_debt, employer_debt_count, employer_has_fgts_debt, employer_registration_status, employer_special_status, employer_sector_risk, employer_turnover
Telefones (groupKey = phones)phone_number, has_whatsapp, priority, repetidos por itemIndex
Marcadores (groupKey = flags)Um item por marcador devolvido pelo provedor, com a key do marcador

Alertaki (alertaki_receita_federal_pf)​

Quando a data de nascimento informada não confere com a da Receita Federal, a consulta termina com sucesso e traz apenas found = "false", birth_date_matches = "false" e message com o texto da Receita. Outras recusas do provedor terminam em failed. Com o CPF encontrado, found = "true" e os valores abaixo, omitidos quando o provedor não os devolve:

keyRótuloTipo
foundEncontrado na Receita Federalbooleano
nameNometexto
birth_dateData de Nascimentodata
birth_date_matchesData de Nascimento Conferebooleano (só quando a data foi informada)
situationSituação Cadastraltexto, como devolvido pela Receita (ex.: REGULAR)
regularSituação Regularbooleano
registration_dateData de Inscriçãodata
check_digitDígito Verificadortexto
issued_atEmissão do Comprovantedata e hora
receipt_codeCódigo do Comprovantetexto
other_informationOutras Informaçõestexto
messageMensagemtexto

Vínculos​

Uma consulta pode ser vinculada a uma proposta (loan_proposal) ou a um empréstimo (loan), informando feature e entityId no POST. A mesma consulta pode ter vários vínculos. Cada item de associations[]:

CampoTipoDescrição
idstring (uuid)Identificador do vínculo.
featureobject (code/key/name)Estrutura vinculada. Ver QueryAssociationFeature.
entityId / entityCodestring (uuid) / integerid e code do registro vinculado.
reusedbooleantrue quando o vínculo foi feito reaproveitando uma consulta válida, ou copiado de outro registro (ex.: da proposta para o empréstimo emitido).
associatedAtstring (date-time)Momento do vínculo.
userobject (Referência)Usuário que fez o vínculo.

O GET /{id} e o POST não trazem os campos organizacionais. A busca traz também createdAt, createdBy, company, unit, partner, branch, agent e user.


POST /v5/queries​

Executa uma consulta no provedor do tipo informado e devolve o resultado.

Autenticação: API Key (X-Api-Key). Exige a permissão "Executar consulta externa".

Comportamento​

  1. Valida o type (1171004) e, se informado, o vínculo: feature e entityId juntos (1171006), feature aceita (1171007) e registro existente na empresa (1171008).
  2. Valida os parâmetros exigidos pelo tipo (ver tabela abaixo).
  3. Se houver consulta válida com os mesmos dados, devolve essa consulta (ver Reaproveitamento).
  4. Senão, grava a consulta como pending, chama o provedor e atualiza o registro para completed ou failed.
  5. Em completed, responde 201 com a consulta. Em failed, responde 400 com o erro do provedor; a consulta com status = failed continua disponível na busca e pode ser repetida.

Payload de entrada​

Visualizar parâmetros
CampoTipoObrigatórioDescrição
typestringSimkey do tipo. Ausente ou inválido → 1171004.
documentNumberstringSimCPF do trabalhador. Pontuação é removida.
paramsobject (string → string)Depende do tipoParâmetros adicionais, ver tabela abaixo. Os nomes não diferenciam maiúsculas de minúsculas.
featurestringNãoEstrutura a vincular: loan_proposal ou loan. Exige entityId.
entityIdstring (uuid)Nãoid da proposta ou do empréstimo. Exige feature.

Parâmetros por tipo​

typeparams obrigatóriosparams opcionaisErros de validação
semear_srccregistrationNumber (matrícula do trabalhador)nameCPF inválido → 9507013; sem matrícula → 9507007
semear_nmpphoneNumber (DDD + número, 10 ou 11 dígitos)nameCPF inválido → 9507013; telefone ausente ou inválido → 9507008
semear_mcbagentDocumentNumber (CPF do agente de crédito)nameCPF inválido → 9507013; CPF do agente ausente ou inválido → 9507009
nova_vida_next_clt—employerDocumentNumber (raiz de 8 dígitos ou CNPJ de 14 dígitos do empregador)CPF ausente → 9508004; CPF inválido → 9508005; CNPJ do empregador inválido → 9508006
alertaki_receita_federal_pf—birthDate (data de nascimento no formato aaaa-mm-dd, conferida pela Receita)CPF ausente → 9509004; CPF inválido → 9509005; data de nascimento inválida → 9509006

Exemplo de Requisição e Resposta​

Visualizar Body
{
"type": "semear_srcc",
"documentNumber": "00000000000",
"params": {
"registrationNumber": "000123",
"name": "NOME DO TRABALHADOR"
},
"feature": "loan_proposal",
"entityId": "00000000-0000-7000-8000-000000000451"
}

GET /v5/queries/{id}​

Busca uma consulta, com values e associations.

Autenticação: API Key (X-Api-Key). Exige a permissão "Acessar" de Consulta Externa.

ParâmetroTipoDescrição
idstring (uuid)id da consulta. Não encontrada → 1171003.
curl --request GET \
--url 'https://{base-url}/v5/queries/00000000-0000-7000-8000-000000000a01' \
--header 'X-Api-Key: {api_key}'

Resposta 200 no mesmo formato do POST.


POST /v5/queries/{id}/repetitions​

Executa a consulta de novo no provedor, com o mesmo tipo, CPF e parâmetros da consulta original, e grava uma nova consulta. Os vínculos da original são copiados para a nova. A original não muda.

Use para atualizar um resultado vencido ou repetir uma consulta que falhou por indisponibilidade do provedor.

Autenticação: API Key (X-Api-Key). Exige a permissão "Executar consulta externa".

ParâmetroTipoDescrição
idstring (uuid)id da consulta a repetir. Não encontrada → 1171003.

Sem corpo.

curl --request POST \
--url 'https://{base-url}/v5/queries/00000000-0000-7000-8000-000000000a01/repetitions' \
--header 'X-Api-Key: {api_key}'

Resposta 201 com a nova consulta, no formato do POST. Falha do provedor → 400, como no POST.


POST /v5/queries/search​

Busca paginada de consultas.

Autenticação: API Key (X-Api-Key). Exige a permissão "Acessar" de Consulta Externa.

Payload de entrada​

CampoTipoDescrição
offset / limitintegerPaginação.
sortarray de stringOrdenação.
searchTextstringTexto livre (número, CPF, nome, tipo e termos do resultado, como nome e CNPJ do empregador).
idobject{ "eq": "<uuid>" }.
nidobject{ "eq": 1024 }.
type / providerobject{ "code": { "in": [1, 2, 3] } } ou { "key": { "eq": "nova_vida_next_clt" } }.
statusobject{ "code": { "in": [3] } } para as falhas.
personType / documentTypeobjectComo type.
documentNumberobject{ "eq": "00000000000" }.
nameobject{ "regex": "maria" }.
requestedAt / expiresAtobject{ "gte": "2026-10-01T00:00Z", "lt": "2026-11-01T00:00Z" }.
associationFeatureobject{ "key": { "eq": "loan" } }.
associationEntityIdobject{ "eq": "<uuid do empréstimo ou proposta>" }: todas as consultas vinculadas a um registro.
dataKey / dataValueobjectFiltra por um valor do resultado, ex.: dataKey = { "eq": "eligible" } e dataValue = { "regex": "false" }.
unit, partner, branch, agent, userobjectFiltro organizacional.
filtersarrayFiltros dinâmicos no formato devolvido por GET /filter-fields.

Resposta (200)​

{ count, offset, limit, items[] }. Cada item traz id, nid, type, provider, personType, documentType, documentNumber, name, errorMessage, status, requestedAt, completedAt, expiresAt, durationMs, associationCount, values[], createdAt, createdBy e os campos organizacionais. params, data e associations vêm só no GET /{id}.

curl --request POST \
--url 'https://{base-url}/v5/queries/search' \
--header 'X-Api-Key: {api_key}' \
--header 'Content-Type: application/json' \
--data '{ "limit": 20, "associationEntityId": { "eq": "00000000-0000-7000-8000-000000000501" } }'

GET /v5/queries/filter-fields​

Lista os campos aceitos em filters da busca. Cada item traz key, name, label, type (guid, int, string, datetime, select_list), operator (eq, in, regex, btw), sourceType, source e active.

Autenticação: API Key (X-Api-Key).


GET /v5/query-supports​

Devolve as listas de domínio do módulo, para montar formulários e filtros.

Autenticação: API Key (X-Api-Key).

CampoConteúdo
statusQueryStatus, com color.
typesTodos os QueryType.
manualTypesTipos que podem ser executados por POST /v5/queries. Hoje, todos.
providersQueryProvider.
associationFeaturesQueryAssociationFeature.
Visualizar Response
{
"status": [
{ "code": 1, "key": "pending", "name": "Pendente", "color": "#FFEB3B", "note": null },
{ "code": 2, "key": "completed", "name": "Concluída", "color": "#4CAF50", "note": null },
{ "code": 3, "key": "failed", "name": "Falha", "color": "#F44336", "note": null }
],
"types": [
{ "code": 1, "key": "semear_srcc", "name": "Autorregulação Semear - SRCC" },
{ "code": 2, "key": "semear_nmp", "name": "Autorregulação Semear - NMP" },
{ "code": 3, "key": "semear_mcb", "name": "Autorregulação Semear - MCB" },
{ "code": 4, "key": "nova_vida_next_clt", "name": "Nova Vida - Perfil do Trabalhador CLT" },
{ "code": 5, "key": "alertaki_receita_federal_pf", "name": "Alertaki - Receita Federal PF" }
],
"manualTypes": [
{ "code": 4, "key": "nova_vida_next_clt", "name": "Nova Vida - Perfil do Trabalhador CLT" },
{ "code": 5, "key": "alertaki_receita_federal_pf", "name": "Alertaki - Receita Federal PF" },
{ "code": 1, "key": "semear_srcc", "name": "Autorregulação Semear - SRCC" },
{ "code": 2, "key": "semear_nmp", "name": "Autorregulação Semear - NMP" },
{ "code": 3, "key": "semear_mcb", "name": "Autorregulação Semear - MCB" }
],
"providers": [
{ "code": 9507, "key": "semear", "name": "Banco Semear" },
{ "code": 9508, "key": "nova_vida", "name": "Nova Vida" },
{ "code": 9509, "key": "alertaki", "name": "Alertaki" }
],
"associationFeatures": [
{ "code": 101035, "key": "loan_proposal", "name": "Proposta de Empréstimo" },
{ "code": 1010, "key": "loan", "name": "Empréstimo" }
]
}

Erros do módulo​

codetextOnde
1171001Nenhum provedor registrado para o tipo de consultaPOST /
1171002O provedor não retornou o resultado da consultaPOST /, POST /{id}/repetitions (o text pode trazer o motivo devolvido pelo provedor)
1171003Consulta não encontradaGET /{id}, POST /{id}/repetitions
1171004Tipo de consulta inválidoPOST /, POST /{id}/repetitions
1171005Este tipo de consulta não pode ser executado manualmentePOST /
1171006Para vincular a consulta informe a estrutura e o id do registroPOST /
1171007A consulta só pode ser vinculada a proposta ou empréstimoPOST /
1171008Registro a vincular não encontradoPOST /
9507001Configuração não encontrada para o Banco SemearTipos semear_*
9507007A autorregulação do Banco Semear exige a matrícula do trabalhador para consultar o SRCCsemear_srcc
9507008A autorregulação do Banco Semear exige o telefone do trabalhador com DDD para consultar o NMPsemear_nmp
9507009A autorregulação do Banco Semear exige um agente com CPF no empréstimo para consultar o MCBsemear_mcb
9507013Informe um CPF válido para a autorregulação do Banco SemearTipos semear_*
9508001Configuração não encontrada para Nova Vidanova_vida_next_clt
9508002Configuração da Nova Vida incompleta: informe URL, usuário, senha e clientenova_vida_next_clt
9508003Falha ao obter token de acesso da Nova Vidanova_vida_next_clt
9508004Informe o CPF do trabalhadornova_vida_next_clt
9508005CPF do trabalhador inválidonova_vida_next_clt
9508006Informe a raiz (8 dígitos) ou o CNPJ completo (14 dígitos) do empregadornova_vida_next_clt
9508007Erro ao consultar o perfil do trabalhador na Nova Vidanova_vida_next_clt (o text traz a mensagem do provedor)
9509001Configuração não encontrada para Alertakialertaki_receita_federal_pf
9509002Configuração da Alertaki incompleta: informe URL, e-mail e senhaalertaki_receita_federal_pf
9509003Falha ao obter token de acesso da Alertakialertaki_receita_federal_pf
9509004Informe o CPFalertaki_receita_federal_pf
9509005CPF inválidoalertaki_receita_federal_pf
9509006Data de nascimento inválida: use o formato aaaa-mm-ddalertaki_receita_federal_pf
9509007Erro ao consultar o CPF na Receita Federal pela Alertakialertaki_receita_federal_pf (o text traz a mensagem do provedor)

Este módulo não publica eventos de webhook: o resultado vem na própria resposta.