Desenvolvimento da API para listar Pessoas Expostas Politicamente
O que são Pessoas Expostas Politicamente
Retirado um resumo no Conselho de Controle de Atividades Financeiras - Coaf
São pessoas expostas politicamente (PEP) os ocupantes de cargos e funções públicas listadas nas normas de PLD/FTP editadas pelos órgãos reguladores e fiscalizadores.
Para as pessoas obrigadas que exercem atividades sujeitas à supervisão do Coaf, os procedimentos a serem adotados em relação a PEP encontram-se dispostos na Resolução Coaf Nº 40, de 22 de novembro de 2021
O que será a API
Se trata de endpoints http para buscar informações atualizadas sobre PEP no Brasil. Originalmente a Controladoria-geral da União disponibiliza estes dados através do seu site em um arquivo .zip contendo uma tabela CSV que possue mais de 130 mil registros.
Utilizando a API, empresas que precisarem consultar a lista poderão fazer de forma automatizada.
Importante destacar que o cadastro de PEP mantido pela CGU não contempla a totalidade de situações.
Como descrito no próprio site para download, os campos do cabeçalho são
- CPF
- Nome
- Sigla Função
- Descrição Função
- Nível Função
- Nome Órgão
- Data Inicio Exercício
- Data Fim Exercício
- Data Fim Carência
O resultado final esperado deve ser algo como:
Get com body(json) e/ou query param:
https://{baseURL}/api/v1/pep/%{nome}
Response supondo que pesquisou pelo nome John Doe:
{
"peps": [
{
"nome": "John Doe Silva",
"CPF": "***.497.895-**",
"sigla": "VEREAD",
"descricao": "VEREADOR",
"nivel": null,
"regiao": "CAIRU-BA",
"data_inicio": "01/01/21",
"data_fim": "31/12/24",
"data_carencia": "31/12/29"
},
{
"nome": "John Doe das Neves",
"demais dados...": "..."
}
],
"data_atualizacao": "02/02/2022"
}
O CPF é originalmente censurado na fonte de dados, o que faz com que buscar por nome retorne uma lista de resultado.
Ainda estou estudando a opção de busca por cpf_parcial+nome, para que seja retornado apenas um resultado.
Porque estou desenvolvendo
Uma das minhas metas para 2022 é contribuir com uma API open-source já existente ou criar alguma que tenha alguma utilidade e que fosse colocada para rodar em produção. Então, quando eu estava navegando no BRASIL API, vi uma issue solicitando a criação de tal API e decidi desenvolve-la.
Inicialmente, o processo é relativamente simples, não envolve nenhum algoritmo complexo nem quantidade gigantescas de dados, então é o tipo de necessidade que eu, como um iniciante em programação, devo ser capaz de atender e aprender bastante no processo, ou seja, relação win-win.
O Projeto
Sinceramente, não fiz nenhuma especificação para começar esse projeto, apenas decidi que seria em Elixir e defini algumas etapas que vieram a mente, no melhor estilo “Design Emergente” como dito pelo Fabio Akita.
Documentarei o progresso até a conclusão do projeto aqui no Blog, btw.
Porque Elixir/Phoenix
Na verdade, não me passou pela cabeça desenvolver esse projeto em nenhuma outra linguagem, pois estou gostando muito de programar em Elixir e do paradigma funcional. Fora isso, não precisei pesquisar muito para saber que a BEAM instance (VM da Erlang, runtime do Elixir) proverá tudo que meu código precisará para rodar em produção com excelência, como muito bem descrito em uma talk do Saša Jurić.
No próximo post falarei sobre a importação dos dados retirados do csv da CGU e sobre a utilização de funções do Erlang no código Elixir