Ir para o conteúdo

Grafo (Experimental)

O comando graph é experimental e permite explorar as relações entre quadro societários e pessoas, tanto jurídicas quanto físicas.

Funcionalidade experimental

Esta é uma funcionalidade experimental e pode sofrer alterações, inclusive ser retirada do ar sem aviso prévio.

  • A API do grafo está disponível em https://grafo.minhareceita.org/
  • Um app experimental construído com essa API, também utilizando código aberto, é o Meu Garfo

Como usar

Conceito de id

Essa API usa uma id para identificar tanto pessoas físicas quanto pessoas jurídicas:

  • Para pessoas jurídicas, o identificador é o próprio CNPJ
  • Para pessoas físicas, o identificador é um campo de texto (pseudo) aleatório (um hash MD5 do CPF e nome como constam nos dados públicos do CNPJ)

Consultar

Para consultar as relações de uma empresa ou de uma pessoa física, use GET /relacoes/<id>.

Exemplo de resposta para GET /relacoes/33683111000280
[
  {
    "cnpj": "33683111000280",
    "razao_social": "SERVICO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO)",
    "id": "3573de271293797f2abddc036be8f35e",
    "nome": "ALEXANDRE BRANDAO HENRIQUES MAIMONI",
    "cpf": "***641988**"
  },
  {
    "cnpj": "33683111000280",
    "razao_social": "SERVICO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO)",
    "id": "70ec112375aec9de541ae0b7c54d7cac",
    "nome": "ANDRE PICOLI AGATTE",
    "cpf": "***035378**"
  },
  {
    "cnpj": "33683111000280",
    "razao_social": "SERVICO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO)",
    "id": "5581a696ef726dcb05b563690e9d3ced",
    "nome": "ARIADNE DE SANTA TERESA LOPES FONSECA",
    "cpf": "***077170**"
  },
  {
    "cnpj": "33683111000280",
    "razao_social": "SERVICO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO)",
    "id": "76677f4091254d210276fc0febfb97a0",
    "nome": "ERMES FERREIRA COSTA NETO",
    "cpf": "***269764**"
  },
  {
    "cnpj": "33683111000280",
    "razao_social": "SERVICO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO)",
    "id": "40089c4776191cc8e870d14f2f431477",
    "nome": "OSMAR QUIRINO DA SILVA",
    "cpf": "***109571**"
  },
  {
    "cnpj": "33683111000280",
    "razao_social": "SERVICO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO)",
    "id": "3d988b184dcd37bc88e9766af21cf25f",
    "nome": "WALLYSON LEMOS DOS REIS OLIVEIRA",
    "cpf": "***286423**"
  },
  {
    "cnpj": "33683111000280",
    "razao_social": "SERVICO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO)",
    "id": "79292eb5f29feca8f3434e6f44b2f4a4",
    "nome": "WILTON ITAIGUARA GONCALVES MOTA",
    "cpf": "***623503**"
  }
]

A partir de então navegue no grafo com mais requisições para /relacoes/<id> para saber em quais outros quadro societários essa pessoa (física ou jurídica) está.

Para descobrir a menor conexão entre duas pessoas físicas ou jurídicas, use GET /conexao/<id1>/<id2> (limitado a uma distância máxima de 16).

Exemplo de resposta para GET /conexao/34712359000103/27516314000106
[
  {
    "cnpj": "34712359000103",
    "razao_social": "INSTITUTO DE ACAO CONSERVADORA",
    "id": "c23aa26674515674f7738d6b68c37d6d",
    "nome": "HELOISA WOLF BOLSONARO",
    "cpf": "***791930**"
  },
  {
    "cnpj": "46053446000185",
    "razao_social": "H&E PRODUCOES LTDA",
    "id": "c23aa26674515674f7738d6b68c37d6d",
    "nome": "HELOISA WOLF BOLSONARO",
    "cpf": "***791930**"
  },
  {
    "cnpj": "46053446000185",
    "razao_social": "H&E PRODUCOES LTDA",
    "id": "1defe1dc76aa2a3d5533a0cf1d444fa1",
    "nome": "EDUARDO NANTES BOLSONARO",
    "cpf": "***553657**"
  },
  {
    "cnpj": "27516314000106",
    "razao_social": "BOLSONARO DIGITAL LTDA",
    "id": "1defe1dc76aa2a3d5533a0cf1d444fa1",
    "nome": "EDUARDO NANTES BOLSONARO",
    "cpf": "***553657**"
  }
]

Rodando localmente

Para iniciar o servidor de grafo, execute:

$ minha-receita graph

Este comando irá: 1. Criar a tabela ou coleção graph no banco de dados baseada nos dados já carregados em DATABASE_URL (para pular esta etapa utilize --skip-create). 2. Iniciar um servidor web (por padrão na porta 8000, ou na porta definida pela variável de ambiente PORT).