Processo judicial

Números de processo na numeração única (NUP) da Resolução CNJ nº 65/2008.

  • Matriz de paridade

Validar

Valida um número de processo judicial (Resolução CNJ nº 65/2008). Verifica o formato NNNNNNN-DD.AAAA.J.TR.OOOO, os dígitos verificadores DD (ISO 7064 MOD 97-10) e o par J/TR.

  • J e TR precisam indicar um segmento e um tribunal que existem (art. 1º, §§ 4º e 5º). J é 1 (STF), 2 (CNJ), 3 (STJ), 4 (Justiça Federal), 5 (Justiça do Trabalho), 6 (Justiça Eleitoral), 7 (Justiça Militar da União), 8 (Justiça Estadual) ou 9 (Justiça Militar Estadual). TR é 00 para J 1, 2 e 3; para J 4, 01 a 06 (TRF) ou 90 (CJF); para J 5, 00 (TST), 01 a 24 (TRT) ou 90 (CSJT); para J 6, 00 (TSE) ou 01 a 27 (TRE); para J 7, 00 (STM) ou 01 a 12 (CJM); para J 8, 01 a 27 (TJ); para J 9, 13, 21 ou 26 (TJM de MG, RS e SP).
  • A unidade de origem OOOO só é verificada como quatro dígitos, porque o art. 1º, § 6º deixa a codificação dela a cargo de cada tribunal.
  • Aceita os 20 dígitos sem máscara ou com a máscara do CNJ, e só string (um número é inválido). Espaço em branco, ., - e / (os caracteres de máscara que cpf.isValid lê), em qualquer sequência, são aceitos entre os campos NNNNNNN, DD, AAAA, J, TR e OOOO, ou omitidos, então 0002080-25.2012.515.0049 (J e TR juntos) é válido. Espaços nas pontas são ignorados. Um separador dentro de um campo (000208-0252012.5.15.0049), no começo ou no fim do valor, qualquer outro caractere (_) e uma letra tornam o valor inválido. Até a 2.4.0 uma barra entre os campos o tornava inválido, então 0002080/25.2012.5.15.0049 era false.
  • Os dígitos verificadores seguem o art. 1º § 2º e o Anexo VIII ("Cálculo do dígito verificador") da Resolução CNJ 65/2008. O TRF da 6ª Região (4.06) é válido conforme a Resolução CNJ 477/2022.
  • O exemplo do TRF6 impresso no Anexo II, 0000100-15.2008.406.0000, é fictício, como o próprio Anexo diz. Escrito na forma NNNNNNN-DD.AAAA.J.TR.OOOO, os dígitos verificadores dele são 68, não 15, então a função aceita 0000100-68.2008.4.06.0000 e rejeita o impresso.

Decisão pendente

Go, Python, Ruby e Rust rejeitam números que a referência (JS) gera para o ano atual. As regras de segmento/tribunal precisam ser conciliadas. Veja a decisão em aberto em docs/findings.md (em inglês).

ParâmetroTipoObrigatório
valuestringsim
retornaboolean

Valida um número de processo jurídico, conforme a Resolução CNJ nº 65/2008. Três coisas são verificadas: o layout NNNNNNN-DD.AAAA.J.TR.OOOO, os dígitos verificadores DD (ISO 7064 MOD 97-10) e o par J/TR.

  • J e TR precisam nomear um órgão e um tribunal que existem.
  • A unidade de origem (OOOO) é verificada apenas como quatro dígitos.
import { isValidProcessoJuridico } from '@brazilian-utils/brazilian-utils';

isValidProcessoJuridico('00020802520125150049'); // true
isValidProcessoJuridico('0002080-25.2012.5.15.0049'); // true (máscara do CNJ)
isValidProcessoJuridico('0000100-68.2008.4.06.0000'); // true (TRF da 6ª Região)
isValidProcessoJuridico('0000100-23.2008.8.28.0000'); // false (não existe 28º Tribunal de Justiça)
isValidProcessoJuridico('ab00020802520125150049'); // false (letras são rejeitadas)

Fonte: Resolução CNJ nº 65/2008, art. 1º (layout, J e TR) e Anexo VIII ("CÁLCULO DO DÍGITO VERIFICADOR"); o TRF da 6ª Região (4.06) conforme a Resolução CNJ nº 477/2022.

Código: brazilian-utils/javascript
Teste com JavaScript isValidProcessoJuridico
As entradas começam com o primeiro caso compartilhado. Mude uma para ver o novo resultado.

Roda @brazilian-utils/brazilian-utils 2.5.0 no seu navegador.

Casos de teste compartilhados (51) e o resultado em cada biblioteca legalProcess.isValid

Formatar

Formata um número de processo judicial com a máscara do CNJ NNNNNNN-DD.AAAA.J.TR.OOOO.

  • Todo caractere que não é dígito é descartado antes, e só os 20 primeiros dígitos ficam. A máscara é aplicada até onde os dígitos vão, então um valor sendo digitado é mascarado progressivamente (00020802 dá 0002080-2).
  • options.pad primeiro completa o valor com zeros à esquerda até 20 dígitos.
  • Um número só é lido se for um inteiro seguro não negativo. Número negativo, fracionário, não finito ou inseguro retorna uma string vazia (a 2.4.0 lia os dígitos de qualquer número, descartando sinal e ponto decimal).
  • Um valor vazio, ou sem dígitos, retorna uma string vazia mesmo com pad. Até a 2.4.0 o pad retornava a máscara toda de zeros.

Decisão pendente

A referência (JS) formata só os caracteres que um valor incompleto tem. Ela retorna uma string vazia para entrada vazia ou inválida. As outras bibliotecas retornam null. Veja a decisão em aberto em docs/findings.md (em inglês).

ParâmetroTipoObrigatório
valuestring | numbersim
optionsFormatProcessoJuridicoOptionsnão
options.padbooleannão
retornastring

Formata um número de processo jurídico na máscara do CNJ NNNNNNN-DD.AAAA.J.TR.OOOO.

  • Opções (FormatProcessoJuridicoOptions): pad completa o valor com zeros à esquerda até 20 dígitos antes de aplicar a máscara (padrão false). Um valor vazio, ou sem dígitos, devolve '' mesmo com pad.
import { formatProcessoJuridico } from '@brazilian-utils/brazilian-utils';

formatProcessoJuridico('00020802520125150049'); // '0002080-25.2012.5.15.0049'
formatProcessoJuridico('20802520125150049', { pad: true }); // '0002080-25.2012.5.15.0049'

Fonte: Resolução CNJ nº 65/2008.

Código: brazilian-utils/javascript
Teste com JavaScript formatProcessoJuridico
As entradas começam com o primeiro caso compartilhado. Mude uma para ver o novo resultado.

Roda @brazilian-utils/brazilian-utils 2.5.0 no seu navegador.

Casos de teste compartilhados (36) e o resultado em cada biblioteca legalProcess.format

Interpretar

Remove a formatação do processo judicial e mantém somente os dígitos, limitados a 20 dígitos.

  • Um número só é lido se for um inteiro seguro não negativo. Número negativo, fracionário, não finito ou inseguro retorna uma string vazia (a 2.4.0 lia os dígitos de qualquer número, descartando sinal e ponto decimal).
ParâmetroTipoObrigatório
valuestring | numbersim
retornastring

Remove a formatação do processo jurídico, mantém apenas os dígitos e limita o resultado a 20 dígitos.

import { parseProcessoJuridico } from '@brazilian-utils/brazilian-utils';

parseProcessoJuridico('0002080-25.2012.5.15.0049'); // '00020802520125150049'
Código: brazilian-utils/javascript
Teste com JavaScript parseProcessoJuridico
As entradas começam com o primeiro caso compartilhado. Mude uma para ver o novo resultado.

Roda @brazilian-utils/brazilian-utils 2.5.0 no seu navegador.

Casos de teste compartilhados (19) e o resultado em cada biblioteca legalProcess.parse

Gerar

Gera um número de processo judicial aleatório e válido (20 dígitos, sem formatação) no formato NNNNNNNDDAAAAJTROOOO da Resolução CNJ nº 65/2008.

  • options.year define o campo AAAA: um inteiro do ano atual até 9999 (padrão: o ano atual). options.court define o segmento J: um inteiro de 1 a 9 (padrão: aleatório).
  • A função escolhe TR entre os tribunais do segmento escolhido, então o par sempre indica um tribunal que existe. O número sequencial e a unidade de origem são aleatórios e os dígitos verificadores são calculados.
  • Retorna null quando o ano ou o segmento está fora do intervalo ou não é inteiro, ou quando as opções não são um objeto.
ParâmetroTipoObrigatório
paramsGenerateProcessoJuridicoParamsnão
params.yearnumbernão
params.courtnumbernão
retornastring | null

Gera um número de processo jurídico válido aleatório no layout da Resolução CNJ nº 65/2008.

  • Opções (GenerateProcessoJuridicoParams): year define o campo AAAA, um inteiro entre o ano atual e 9999 (padrão: o ano atual); court define o órgão J, de 1 a 9 (padrão: aleatório).
  • TR é sorteado entre os tribunais do órgão escolhido, então o par sempre nomeia um tribunal que existe.
  • Retorna null quando year ou court está fora do intervalo.
import { generateProcessoJuridico } from '@brazilian-utils/brazilian-utils';

generateProcessoJuridico(); // '89478645020266070326'
generateProcessoJuridico({ year: 2026, court: 5 }); // '98412562120265087260' (Justiça do Trabalho, TRT da 8ª Região)
generateProcessoJuridico({ year: 10000 }); // null (ano fora do intervalo)
generateProcessoJuridico({ court: 10 }); // null (órgão inexistente)

Fonte: Resolução CNJ nº 65/2008.

Código: brazilian-utils/javascript
Teste com JavaScript generateProcessoJuridico
As entradas começam com o primeiro caso compartilhado. Mude uma para ver o novo resultado.

Roda @brazilian-utils/brazilian-utils 2.5.0 no seu navegador.

Casos de teste compartilhados (9) e o resultado em cada biblioteca legalProcess.generate

Decodificar

Lê os campos de um número de processo jurídico: o número sequencial, os dígitos verificadores, o ano, o segmento do Judiciário (órgão J), o tribunal e a unidade de origem.

  • Retorna null exatamente quando legalProcess.isValid retorna false; as regras de entrada são as mesmas (os 20 dígitos, com ou sem máscara, como string).
  • O resultado tem sequentialNumber (NNNNNNN), checkDigits (DD), year (AAAA, um número), segment, segmentCode (J, de '1' a '9'), tribunalCode (TR, dois dígitos) e originUnit (OOOO). Os códigos são strings e mantêm os zeros à esquerda.
  • segment dá nome ao órgão J: supreme-federal-court (1), national-council-of-justice (2), superior-court-of-justice (3), federal (4), labor (5), electoral (6), military (7), state (8) ou state-military (9).
  • tribunalCode é 00 para os processos do STF, do CNJ, do STJ, do TST, do TSE e do STM, 90 para o Conselho da Justiça Federal e o Conselho Superior da Justiça do Trabalho, e o número da região ou do estado nos outros casos. O resultado não traz o nome do tribunal.
  • A unidade de origem não é conferida: cada tribunal codifica a sua.
  • Cada chamada retorna um objeto novo.
ParâmetroTipoObrigatório
valuestringsim
retornaProcessoJuridicoInfo | null

Lê os campos de um número de processo jurídico, como um ProcessoJuridicoInfo, ou null quando o isValidProcessoJuridico retornaria false.

  • Campos: sequentialNumber (NNNNNNN), checkDigits (DD), year (AAAA, um número), segment (um nome para o órgão J: 'supreme-federal-court', 'national-council-of-justice', 'superior-court-of-justice', 'federal', 'labor', 'electoral', 'military', 'state' ou 'state-military'), segmentCode (J, '1' a '9'), tribunalCode (TR, dois dígitos) e originUnit (OOOO). Os códigos são strings que mantêm os zeros à esquerda.
  • tribunalCode é '00' para os processos de um tribunal superior ou do STF, do CNJ, do STJ, do TST, do TSE e do STM, '90' para o Conselho da Justiça Federal e o Conselho Superior da Justiça do Trabalho, e o número da região ou do estado nos demais casos. A unidade de origem não é verificada: cada tribunal a codifica por conta própria.
import { getProcessoJuridicoInfo } from '@brazilian-utils/brazilian-utils';

getProcessoJuridicoInfo('0002080-25.2012.5.15.0049');
// {
//   sequentialNumber: '0002080',
//   checkDigits: '25',
//   year: 2012,
//   segment: 'labor',
//   segmentCode: '5',
//   tribunalCode: '15',
//   originUnit: '0049',
// }

getProcessoJuridicoInfo('0000100-23.2008.8.28.0000'); // null (não existe o 28º Tribunal de Justiça)

Fonte: Resolução CNJ nº 65/2008.

Código: brazilian-utils/javascript
Teste com JavaScript getProcessoJuridicoInfo
As entradas começam com o primeiro caso compartilhado. Mude uma para ver o novo resultado.

Roda @brazilian-utils/brazilian-utils 2.5.0 no seu navegador.

Casos de teste compartilhados (34) e o resultado em cada biblioteca legalProcess.getInfo

Fontes oficiais

Atualizado em

Nesta página