Construindo algoritmo para consumir a API pública do CNJ (conselho nacional de justiça) - 1a parte
Leonardo Vilela
Posted on November 22, 2023
Este artigo faz parte de uma série onde irei apresentar especificidades sobre a implementação de sistemas para gestão de processos judiciais utilizando a API pública do CNJ (Conselho Nacional de Justiça). (https://datajud-wiki.cnj.jus.br/api-publica)
Ao final do texto há o link para meu github onde postei o código em PHP
Introdução
Em 2023 o CNJ lançou a API DataJud de consulta aos metadados dos processos judiciais. A documentação oficial se encontra no site https://datajud-wiki.cnj.jus.br/api-publica.
A API permite que, mediante o número do processo, seja obtido os dados de qualquer processo de tribunais no Brasil. Um detalhe importante é que alguns tribunais ainda não tem tal funcionalidade. A lista dos tribunais e seus endpoints estão disponíveis na documentação presente no endereço citado.
Para cada tribunal há um endpoint específico para se fazer a requisição utilizando método POST.
Para a consulta manual, não há segredo. Basta escolher o endpoint do tribunal de origem do processo e elaborar o header com a numeração do processo. Aqui irei explicar algumas técnicas para automatização algorítmica para consumir a API.
1ª parte – Padronização da numeração dos processos judiciais instituída pelo Conselho Nacional de Justiça (Numeração única de processos) e sua importância para a automatização de consumo da API pública do CNJ
O Brasil possui 26 estados, além do Distrito Federal. Cada um deles tem pelo menos 3 tipos diferentes de atuação do judiciário (justiça comum, eleitoral, federal, militar, etc).
Em 2008, diante de uma realidade em que cada tribunal tinha seus próprios critérios de movimentação, distribuição, publicidade e numeração dos processos, o Conselho Nacional de Justiça (CNJ) – através da resolução 65/2008 (https://atos.cnj.jus.br/atos/detalhar/atos-normativos?documento=119) deu o primeiro passo para a uniformização dos dados de tribunais, com o lançamento projeto chamado “numeração única de processos”.
A ideia era padronizar o número dos processos em todos os tribunais do país, proporcionando um padrão que fosse possível identificar a cidade, tribunal, tipo de justiça (jurisdição), ano da distribuição e número.
Na portaria citada foi definido que os processos judiciais em todo brasil teriam 20 dígitos, no seguinte formato: NNNNNNN-DD.AAAA.J.TR.OOOO
A numeração começa com 7 dígitos que identifica o número sequencial do processo por unidade de origem, seguido por 2 dígitos verificadores, 4 dígitos relativos ao ano de criação/distribuição do processo, 1 digito relativo ao tipo de justiça (jurisdição), 2 relativos ao tribunal naquela jurisdição e por fim, 4 dígitos que identificam a unidade de origem do processo.
NNNNNNN: Número do processo, sequencial e que é reiniciado a cada ano.
DD: digito verificador
AAAA: Ano do processo (da distribuição ou criação)
J: código do tipo de justiça
TR: identificação do Tribunal
OOOO: código da comarca (cidade) em que o processo foi criado
Somente com o número do processo é possível já elaborar um algoritmo para descobrir qual tribunal pertence o processo informado. Isso será muito útil para a automatização de definição do endpoint para consumo da API.
Inicialmente é importante que o número do processo seja tratado como string. Isso porque, ele pode iniciar com um ou mais 0 (zeros), e sua composição completa, com 20 números (ou caracteres, no caso de string), esteja completa para obter os dados necessários à descoberta do tribunal e posteriormente, o endpoint deste tribunal.
Conforme exposto anteriormente, o item ‘J’ e ‘TR’ dizem respeito à jurisdição e o tribunal daquela jurisdição. Assim, o conjunto destes dígitos serão utilizados para a descoberta do tribunal relativo a determinado processo.
O item ‘J’, que diz respeito à jurisdição inicia na sequência de número 13 de caracteres da string e possui um digito. Já o item ‘TR’, que se relaciona ao tribunal daquela jurisdição, inicia na sequência de número 14 de caracteres da string e possui dois dígitos. A sequencia informada contempla o começo da contagem em 0.
A depender da linguagem utilizada, deve-se aplicar uma função para obter tais informações de maneira separada, gravando cada um em uma variável. Assim teríamos:
Variável ‘J’ = 1 digito que refere a jurisdição
Variável ‘TR’ = 2 dígitos que refere a tribunal
A numeração das jurisdições está na própria resolução 65/2008 do CNJ (link já informado acima), que em seu artigo 1º, §4º traz as seguintes determinações de jurisdições:
1 Supremo Tribunal Federal
2 Conselho Nacional de Justiça
3 Superior Tribunal de Justiça
4 Justiça Federal
5 Justiça do Trabalho
6 Justiça Eleitoral
7 Justiça Militar da União
8 Justiça Estadual e do Distrito Federal
9 Justiça Militar Estadual
Ou seja, se em um processo, o digito referente o item ‘J’ for 8, trata-se de um tribunal de justiça estadual. Se for 4, de um tribunal da justiça federal, e assim por diante.
A lista de tribunais de cada jurisdição pode ser consultada no anexo da mesma resolução 65 do Conselho Nacional de Justiça (https://atos.cnj.jus.br/files/compilado23285720221017634de539229ab.pdf).
Abaixo apresento um array multidimensional com os dados completos (atualizado até 22/11/2023). Neste array, o primeiro índice diz respeito à jurisdição (campo J) e o segundo índice, diz respeito ao tribunal daquela jurisdição (campo TR).
array (
1 => [0 => ['link' => '', 'nome' => 'Supremo Tribunal Federal']],
2 => [0 => ['link' => '', 'nome' => 'Conselho Nacional de Justiça']],
3 => [0 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_stj/_search', 'nome' => 'Superior Tribunal de Justiça']],
4 => [
1 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trf1/_search', 'nome' => 'Tribunal Regional Federal da 1a Região'],
2 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trf2/_search', 'nome' => 'Tribunal Regional Federal da 2a Região'],
3 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trf3/_search', 'nome' => 'Tribunal Regional Federal da 3a Região'],
4 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trf4/_search', 'nome' => 'Tribunal Regional Federal da 4a Região'],
5 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trf5/_search', 'nome' => 'Tribunal Regional Federal da 5a Região'],
6 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trf6/_search', 'nome' => 'Tribunal Regional Federal da 6a Região']
],
5 => [
0 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tst/_search', 'nome' => 'Tribunal Superior do Trabalho'],
1 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trt1/_search', 'nome' => 'Tribunal Regional do Trabalho da 1 região'],
2 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trt2/_search', 'nome' => 'Tribunal Regional do Trabalho da 2 região'],
3 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trt3/_search', 'nome' => 'Tribunal Regional do Trabalho da 3 região'],
4 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trt4/_search', 'nome' => 'Tribunal Regional do Trabalho da 4 região'],
5 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trt5/_search', 'nome' => 'Tribunal Regional do Trabalho da 5 região'],
6 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trt6/_search', 'nome' => 'Tribunal Regional do Trabalho da 6 região'],
7 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trt7/_search', 'nome' => 'Tribunal Regional do Trabalho da 7 região'],
8 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trt8/_search', 'nome' => 'Tribunal Regional do Trabalho da 8 região'],
9 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trt9/_search', 'nome' => 'Tribunal Regional do Trabalho da 9 região'],
10 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trt10/_search', 'nome' => 'Tribunal Regional do Trabalho da 10 região'],
11 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trt11/_search', 'nome' => 'Tribunal Regional do Trabalho da 11 região'],
12 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trt12/_search', 'nome' => 'Tribunal Regional do Trabalho da 12 região'],
13 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trt13/_search', 'nome' => 'Tribunal Regional do Trabalho da 13 região'],
14 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trt14/_search', 'nome' => 'Tribunal Regional do Trabalho da 14 região'],
15 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trt15/_search', 'nome' => 'Tribunal Regional do Trabalho da 15 região'],
16 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trt16/_search', 'nome' => 'Tribunal Regional do Trabalho da 16 região'],
17 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trt17/_search', 'nome' => 'Tribunal Regional do Trabalho da 17 região'],
18 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trt18/_search', 'nome' => 'Tribunal Regional do Trabalho da 18 região'],
19 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trt19/_search', 'nome' => 'Tribunal Regional do Trabalho da 19 região'],
20 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trt20/_search', 'nome' => 'Tribunal Regional do Trabalho da 20 região'],
21 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trt21/_search', 'nome' => 'Tribunal Regional do Trabalho da 21 região'],
22 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trt22/_search', 'nome' => 'Tribunal Regional do Trabalho da 22 região'],
23 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trt23/_search', 'nome' => 'Tribunal Regional do Trabalho da 23 região'],
24 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_trt24/_search', 'nome' => 'Tribunal Regional do Trabalho da 24 região']
],
6 => [
0 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tse/_search', 'nome' => 'Tribunal Superior Eleitoral'],
1 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tre-ac/_search', 'nome' => 'Tribunal Regional Eleitoral do Acre'],
2 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tre-al/_search', 'nome' => 'Tribunal Regional Eleitoral de Alagoas'],
3 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tre-ap/_search', 'nome' => 'Tribunal Regional Eleitoral do Amapá'],
4 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tre-am/_search', 'nome' => 'Tribunal Regional Eleitoral de Amazonas'],
5 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tre-ba/_search', 'nome' => 'Tribunal Regional Eleitoral da Bahia'],
6 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tre-ce/_search', 'nome' => 'Tribunal Regional Eleitoral do Ceara'],
7 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tre-dft/_search', 'nome' => 'Tribunal Regional Eleitoral do Distrito Federal'],
8 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tre-es/_search', 'nome' => 'Tribunal Regional Eleitoral do Espirito Santo'],
9 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tre-go/_search', 'nome' => 'Tribunal Regional Eleitoral de Goias'],
10 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tre-ma/_search', 'nome' => 'Tribunal Regional Eleitoral do Maranhão'],
11 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tre-mt/_search', 'nome' => 'Tribunal Regional Eleitoral do Mato Grosso'],
12 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tre-ms/_search', 'nome' => 'Tribunal Regional Eleitoral do Mato Grosso do Sul'],
13 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tre-mg/_search', 'nome' => 'Tribunal Regional Eleitoral de Minas Gerais'],
14 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tre-pa/_search', 'nome' => 'Tribunal Regional Eleitoral do Pará'],
15 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tre-pb/_search', 'nome' => 'Tribunal Regional Eleitoral da Paraíba'],
16 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tre-pr/_search', 'nome' => 'Tribunal Regional Eleitoral do Paraná'],
17 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tre-pe/_search', 'nome' => 'Tribunal Regional Eleitoral de Pernambuco'],
18 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tre-pi/_search', 'nome' => 'Tribunal Regional Eleitoral do Piaui'],
19 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tre-rj/_search', 'nome' => 'Tribunal Regional Eleitoral do Rio de Janeiro'],
20 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tre-rn/_search', 'nome' => 'Tribunal Regional Eleitoral do Rio Grande do Norte'],
21 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tre-rs/_search', 'nome' => 'Tribunal Regional Eleitoral do Rio Grande do Sul'],
22 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tre-ro/_search', 'nome' => 'Tribunal Regional Eleitoral de Rondonia'],
23 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tre-rr/_search', 'nome' => 'Tribunal Regional Eleitoral de Roraima'],
24 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tre-sc/_search', 'nome' => 'Tribunal Regional Eleitoral de Santa Catarina'],
25 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tre-se/_search', 'nome' => 'Tribunal Regional Eleitoral de Sergipe'],
26 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tre-sp/_search', 'nome' => 'Tribunal Regional Eleitoral de São Paulo'],
27 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tre-to/_search', 'nome' => 'Tribunal Regional Eleitoral de Tocantins']
],
7 => [
0 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_stm/_search', 'nome' => 'Tribunal Superior Militar'],
1 => ['link' => '', 'nome' => '1a Circunscrição Judiciária Militar'],
2 => ['link' => '', 'nome' => '2a Circunscrição Judiciária Militar'],
3 => ['link' => '', 'nome' => '3a Circunscrição Judiciária Militar'],
4 => ['link' => '', 'nome' => '4a Circunscrição Judiciária Militar'],
5 => ['link' => '', 'nome' => '5a Circunscrição Judiciária Militar'],
6 => ['link' => '', 'nome' => '6a Circunscrição Judiciária Militar'],
7 => ['link' => '', 'nome' => '7a Circunscrição Judiciária Militar'],
8 => ['link' => '', 'nome' => '8a Circunscrição Judiciária Militar'],
9 => ['link' => '', 'nome' => '9a Circunscrição Judiciária Militar'],
10 => ['link' => '', 'nome' => '10a Circunscrição Judiciária Militar'],
11 => ['link' => '', 'nome' => '11a Circunscrição Judiciária Militar'],
12 => ['link' => '', 'nome' => '12a Circunscrição Judiciária Militar'],
],
8 => [
1 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjac/_search', 'nome' => 'Tribunal de Justiça do Estado do Acre'],
2 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjal/_search', 'nome' => 'Tribunal de Justiça do Estado de Alagoas'],
3 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjap/_search', 'nome' => 'Tribunal de Justiça do Estado do Amapá'],
4 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjam/_search', 'nome' => 'Tribunal de Justiça do Estado de Amazonas'],
5 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjba/_search', 'nome' => 'Tribunal de Justiça do Estado da Bahia'],
6 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjce/_search', 'nome' => 'Tribunal de Justiça do Estado do Ceara'],
7 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjdft/_search', 'nome' => 'Tribunal de Justiça do Estado do Distrito Federal'],
8 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjes/_search', 'nome' => 'Tribunal de Justiça do Estado do Espirito Santo'],
9 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjgo/_search', 'nome' => 'Tribunal de Justiça do Estado de Goias'],
10 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjma/_search', 'nome' => 'Tribunal de Justiça do Estado do Maranhão'],
11 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjmt/_search', 'nome' => 'Tribunal de Justiça do Estado do Mato Grosso'],
12 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjms/_search', 'nome' => 'Tribunal de Justiça do Estado do Mato Grosso do Sul'],
13 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjmg/_search', 'nome' => 'Tribunal de Justiça do Estado de Minas Gerais'],
14 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjpa/_search', 'nome' => 'Tribunal de Justiça do Estado do Pará'],
15 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjpb/_search', 'nome' => 'Tribunal de Justiça do Estado da Paraíba'],
16 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjpr/_search', 'nome' => 'Tribunal de Justiça do Estado do Paraná'],
17 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjpe/_search', 'nome' => 'Tribunal de Justiça do Estado de Pernambuco'],
18 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjpi/_search', 'nome' => 'Tribunal de Justiça do Estado do Piaui'],
19 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjrj/_search', 'nome' => 'Tribunal de Justiça do Estado do Rio de Janeiro'],
20 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjrn/_search', 'nome' => 'Tribunal de Justiça do Estado do Rio Grande do Norte'],
21 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjrs/_search', 'nome' => 'Tribunal de Justiça do Estado do Rio Grande do Sul'],
22 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjro/_search', 'nome' => 'Tribunal de Justiça do Estado de Rondonia'],
23 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjrr/_search', 'nome' => 'Tribunal de Justiça do Estado de Roraima'],
24 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjsc/_search', 'nome' => 'Tribunal de Justiça do Estado de Santa Catarina'],
25 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjse/_search', 'nome' => 'Tribunal de Justiça do Estado de Sergipe'],
26 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjsp/_search', 'nome' => 'Tribunal de Justiça do Estado de São Paulo'],
27 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjto/_search', 'nome' => 'Tribunal de Justiça do Estado de Tocantins']
],
9 => [
1 => ['link' => '', 'nome' => ''],
2 => ['link' => '', 'nome' => ''],
3 => ['link' => '', 'nome' => ''],
4 => ['link' => '', 'nome' => ''],
5 => ['link' => '', 'nome' => ''],
6 => ['link' => '', 'nome' => ''],
7 => ['link' => '', 'nome' => ''],
8 => ['link' => '', 'nome' => ''],
9 => ['link' => '', 'nome' => ''],
10 => ['link' => '', 'nome' => ''],
11 => ['link' => '', 'nome' => ''],
12 => ['link' => '', 'nome' => ''],
13 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjmmg/_search', 'nome' => 'Tribunal de Justiça Militar de Minas Gerais'],
14 => ['link' => '', 'nome' => ''],
15 => ['link' => '', 'nome' => ''],
16 => ['link' => '', 'nome' => ''],
17 => ['link' => '', 'nome' => ''],
18 => ['link' => '', 'nome' => ''],
19 => ['link' => '', 'nome' => ''],
20 => ['link' => '', 'nome' => ''],
21 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjmrs/_search', 'nome' => 'Tribunal de Justiça Militar do Rio Grande do Sul'],
22 => ['link' => '', 'nome' => ''],
23 => ['link' => '', 'nome' => ''],
24 => ['link' => '', 'nome' => ''],
25 => ['link' => '', 'nome' => ''],
26 => ['link' => 'https://api-publica.datajud.cnj.jus.br/api_publica_tjmsp/_search', 'nome' => 'Tribunal de Justiça Militar de São Paulo'],
27 => ['link' => '', 'nome' => '']
],
);
Assim, em um processo exemplificativo NNNNNNN-DD.AAAA.8.13.OOOO, fica fácil identificar que o campo ‘J’ com valor 8 diz respeito a jurisdição da justiça estadual e o tampo ‘TR’ com valor 13, diz respeito ao tribunal estadual do estado de Minas Gerais.
Espero que este artigo tenha ajudado. O próximo será sobre a verificação de validade do número de processo.
Caso tenha interesse, há um projeto de consulta no meu github: https://github.com/leonardomv1981/consulta-processo-judicial-apicnj
Posted on November 22, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
November 22, 2023