Pular para o conteúdo principal

Peticionamento

Arquitetura

Abaixo encontra-se uma visão geral demonstrando como os serviços utilizados estão estruturados.

arquitetura

O projeto utiliza os seguintes microserviços da PDPJ:

  • Mensageria: responsável por receber as mensagens/eventos lançados pelo sistema e encaminhar ao RabbitMQ.

  • Notificações: responsável por efetivamente processar as mensagens encaminhadas ao serviço de mensageria, e entregar, nos endpoints de webhook cadastrados pelos Tribunais, as notificações contendo as mensagens. O tribunal deve se inscrever no evento respectivo lançado pelos sistemas, passando aí a receber as notificações no seu webhook.

  • Repositório: responsável por encapsular o acesso ao repositório de binários S3 da PDPJ.

  • Cabeçalho processual: busca os dados de processos judiciais.

  • Tabelas processuais unificadas: busca do Sistema de Gestão das TPUs (SGT) as tabelas unificadas de classes, assuntos, movimentos e tipos de documentos, utilizados nos processos judiciais.

  • Proxy do CNJ Corporativo: o CNJ Corporativo é o sistema de cadastro de usuários, lotações, varas e permissões do CNJ, e é utilizado tanto para usuários internos quanto para certas espécies de usuários externos (membros do Ministério Público, da Defensoria Pública, das Polícias, etc).

Tecnologias utilizadas

  • Spring Boot como framework de aplicação

  • String Data JPA para acesso ao banco de dados

  • Spring Security para autenticação e autorização

  • Mapstruct para mapeamento entre POJOs e entidades

  • Swagger para auto-documentação da API

  • S3 para armazenamento dos binários (serviço de repositório da PDPJ)

Como realizar um Peticionamento intercorrente

Documentação/Swagger: https://portalexterno-tribunais.stg.pdpj.jus.br/swagger-ui.html



Para realizar um peticionamento, deve-se seguir o seguinte passo a passo:

Primeiro, cria-se a petição.


POST https://portalexterno-tribunais.stg.pdpj.jus.br/api/v1/peticoes

{

"tipo": "A",
"numeroProcesso": "1234567-00.2024.8.20.0000",
"siglaTribunal": "TJRN",
"siglaGrau": "1G",
"codOrgaoJulgadorCorporativo": 5875, //VARA UNICA DA COMARCA DE PARELHAS
"idAvisoExpediente": null, //Se tipo for R, o id do aviso da comunicação processual
"nivelSigilo": 0

}

O retorno conterá o objeto PeticaoDTO, com o id gerado para a nova petição.

Agora, é necessário incluir os documentos vinculados à petição.

⚠️ O tipo de documento (atributo codDocumentoSgt) a ser utilizado são aqueles pertecentes ao grupo de "documentos externos", no SGT.


POST https://portalexterno-tribunais.stg.pdpj.jus.br/api/v1/peticoes/documentos

{
"idPeticao": 123,
"idDocumentoPai": null,
"codDocumentoSgt": 209,
"nome": "Petição XYZ",
"mimeType": "application/pdf",
"principal": true,
"nivelSigilo": 0,
"tamanho": 10000,
"hash": "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed" //SHA-1
}

Response:


{
"url": "URL PRÉ ASSINADA PARA PUT",
"documentoSalvo": {
...
}
}

De posse da url temporária, o cliente deverá realizar a operação de PUT respectiva (vide https://aws.amazon.com/pt/blogs/compute/uploading-to-amazon-s3-directly-from-a-web-or-mobile-application/).

Exemplo de código TypeScript para fazer a requisição PUT:


let blobData = new Blob([new Uint8Array(array)], {type: 'application/pdf'})
const result = await fetch(signedURL, {
method: 'PUT',
body: blobData

})

A mesma operação deve ser repetida para os anexos, com a diferença que o campo idDocumentoPai deve ser setado para ser igual ao id do documento principal da petição, bem como o campo principal deve ser false.

Criada a petição e feito o upload dos seus documentos vinculados, agora pode-se protocolar:


POST https://portalexterno-tribunais.stg.pdpj.jus.br/api/v1/peticoes/{id}/protocolo

Se bem sucedido o protocolo, o sistema irá encaminhar para o serviço de mensageria da PDPJ uma mensagem com o seguinte payload (sistema PortalDeServicosExternoHomolog, evento PeticaoProtocolada):


{

"protocolo": "20244000000001234",
"url": "https://portalexterno-tribunais.stg.pdpj.jus.br/api/v1/peticoes/por-protocolo/20244000000001234",
"callback": "https://portalexterno-tribunais.stg.pdpj.jus.br/api/v1/protocolos/20244000000001234/callback"
}

Onde:

protocolo é número do recibo gerado pelo Portal; url é a url para obter os metadados da petição e seus documentos; callback é a url que o Tribunal deverá chamar informando o resultado do processamento da juntada da petição.

⚠️ O Tribunal irá receber a mensagem acima no formato de notificação, no endpoint de webhook configurado por ele no serviços de notificações da PDPJ. Recomenda-se checar a documentação do serviço em https://docs.pdpj.jus.br/notificacoes.


O Tribunal, ao processar a notificação, obtêm os metadados da petição e dos documentos por meio de uma requisição GET na url informada no payload mencionado acima.

Ao realizar as requisições aos endpoints indicados na notificação, o sistema do tribunal deve adicionar no cabeçalho HTTP Authorization um bearer token que deve ser obtido por meio do SSO da PDPJ. O access tokendeve ser de serviço, ou seja, utilizando o client_id do sistema do tribunal e grant_type do tipo client_credentials. Para entender melhor, vide https://docs.pdpj.jus.br/servicos-estruturantes/autenticacao-sso.

Exemplo da resposta ao chamar o endpoint contido no campo url da mensagem recebida do serviço de notificações:


GET https://portalexterno-tribunais.stg.pdpj.jus.br/api/v1/peticoes/por-protocolo/20244000000001234



Response:

{

"protocolo": "20244000000001234",
"dataEnvio": "01/06/2024 17:50:01",
"numeroProcesso": "1234567-00.2024.8.20.0000",
"idAvisoExpediente": null,
"cpfPeticionante": "12345678900",
"nomePeticionante": "Fulano de Tal",
"documentos": [{
"urlConteudo": "https://repositorio.stg.pdpj.jus.br/api/v1/portal?hash=2aae6c35c94fcfb415dbe95f408b9ce91ee846ed",
"tipoDocumento": { "codigo": "123", "descricao": "Peticao" },
"dataHora": "01/06/2024 17:01:00",
"descricao": "Petição XYZ",
"mimeType": "application/pdf",
"principal": true,
"nivelSigilo": 0,
"tamanho": 10000,
"hash": "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed",
"cadeiaCertificado": "xxxx...", //base64
"assinatura": "xxx...." //base64
}]

}

Ao requisitar a URL em urlConteudo, o sistema do tribunal receberá uma resposta 302 (REDIRECT), contendo a URL pré-assinada temporária para download do arquivo.

A maioria dos clientes HTTP utilizados pelas linguagens de mercado tratam esse cenário de forma transparente, não sendo necessário, via de regra, qualquer implementação específica por parte do sistema do tribunal.

Processada a juntada, o sistema do tribunal então chama a URL constante em callback, na mensagem recebida do serviço de notificações:


POST https://portalexterno-tribunais.stg.pdpj.jus.br/api/v1/protocolos/20244000000001234/callback

{

"protocoloPortal": "20244000000001234",
"protocolo": "ABCD", //valor gerado pelo sistema do tribunal
"dataHora": "01/06/2024 17:01:00",
"sucesso": true,
"erros": [] //se retornar sucesso false, informar lista de strings aqui, com mensagens de erro
}

O sistema do tribunal deve receber um código "HTTP 200 OK" ao chamar o endpoint acima, indicando sucesso na operação de atualização do status do protocolo no Portal de Serviços.

Feito isso, o sistema exibirá ao usuário peticionante o status do protocolo (se a juntada da petição ocorreu com sucesso ou não, no sistema do tribunal).

Autenticação/autorização

A API utiliza o Single Sign On (Keycloak) do CNJ para autenticar os endpoints. A autorização dependerá do perfil do usuário (se advogado privado ou público, membro do Ministério Público, etc.), conforme, se for o caso, o que costar no sistema CNJ Corporativo.

Veja mais em https://docs.pdpj.jus.br/servicos-estruturantes/autenticacao-sso

Precisa de ajuda?

Acesse o canal #Portal de Serviços no RocketChat, por meio do link https://go.rocket.chat/invite?host=rocketchat.cloud.pje.jus.br&path=invite%2Fqj4jPC ou por meio do QR Code abaixo.

Canal

NomeSwagger
Portal de Serviçoshttps://portalexterno-tribunais.stg.pdpj.jus.br/swagger-ui.html
Mensageriahttps://gateway.stg.cloud.pje.jus.br/mensageria/swagger-ui.html
Notificaçõeshttps://gateway.stg.cloud.pje.jus.br/notificacao/swagger-ui.html
Repositóriohttps://gateway.stg.cloud.pje.jus.br/repositorio/swagger-ui.html
Cabeçalho processualhttps://gateway.stg.cloud.pje.jus.br/cabecalho-processual/swagger-ui.html
Tabelas Processuais Unificadashttps://gateway.stg.cloud.pje.jus.br/tpu/swagger-ui.html
Proxy para o CNJ Corporativohttps://gateway.stg.cloud.pje.jus.br/corporativo-proxy/swagger-ui.html

Anexo I - Listagem das Siglas dos Tribunais

SIGLACÓDIGODESCRIÇÃO
STF100Supremo Tribunal Federal
STJ300Superior Tribunal de Justiça
TST500Tribunal Superior do Trabalho
TSE600Tribunal Superior Eleitoral
STM700Superior Tribunal Militar
TRF1401Tribunal Regional Federal da 1a Região
TRF2402Tribunal Regional Federal da 2a Região
TRF3403Tribunal Regional Federal da 3a Região
TRF4404Tribunal Regional Federal da 4a Região
TRF5405Tribunal Regional Federal da 5a Região
TRF6406Tribunal Regional Federal da 6a Região
TRT1501Tribunal Regional do Trabalho da 1a Região
TRT2502Tribunal Regional do Trabalho da 2a Região
TRT3503Tribunal Regional do Trabalho da 3a Região
TRT4504Tribunal Regional do Trabalho da 4a Região
TRT5505Tribunal Regional do Trabalho da 5a Região
TRT6506Tribunal Regional do Trabalho da 6a Região
TRT7507Tribunal Regional do Trabalho da 7a Região
TRT8508Tribunal Regional do Trabalho da 8a Região
TRT9509Tribunal Regional do Trabalho da 9a Região
TRT10510Tribunal Regional do Trabalho da 10a Região
TRT11511Tribunal Regional do Trabalho da 11a Região
TRT12512Tribunal Regional do Trabalho da 12a Região
TRT13513Tribunal Regional do Trabalho da 13a Região
TRT14514Tribunal Regional do Trabalho da 14a Região
TRT15515Tribunal Regional do Trabalho da 15a Região
TRT16516Tribunal Regional do Trabalho da 16a Região
TRT17517Tribunal Regional do Trabalho da 17a Região
TRT18518Tribunal Regional do Trabalho da 18a Região
TRT19519Tribunal Regional do Trabalho da 19a Região
TRT20520Tribunal Regional do Trabalho da 20a Região
TRT21521Tribunal Regional do Trabalho da 21a Região
TRT22522Tribunal Regional do Trabalho da 22a Região
TRT23523Tribunal Regional do Trabalho da 23a Região
TRT24524Tribunal Regional do Trabalho da 24a Região
TREAC601Tribunal Regional Eleitoral do Acre
TREAL602Tribunal Regional Eleitoral de Alagoas
TREAP603Tribunal Regional Eleitoral do Amapá
TREAM604Tribunal Regional Eleitoral do Amazonas
TREBA605Tribunal Regional Eleitoral da Bahia
TRECE606Tribunal Regional Eleitoral do Ceará
TREDF607Tribunal Regional Eleitoral do Distrito Federal
TREES608Tribunal Regional Eleitoral do Espírito Santo
TREGO609Tribunal Regional Eleitoral de Goiás
TREMA610Tribunal Regional Eleitoral do Maranhão
TREMT611Tribunal Regional Eleitoral de Mato Grosso
TREMS612Tribunal Regional Eleitoral de Mato Grosso do Sul
TREMG613Tribunal Regional Eleitoral de Minas Gerais
TREPA614Tribunal Regional Eleitoral do Pará
TREPB615Tribunal Regional Eleitoral da Paraíba
TREPR616Tribunal Regional Eleitoral do Paraná
TREPE617Tribunal Regional Eleitoral de Pernambuco
TREPI618Tribunal Regional Eleitoral do Piauí
TRERJ619Tribunal Regional Eleitoral do Rio de Janeiro
TRERN620Tribunal Regional Eleitoral do Rio Grande do Norte
TRERS621Tribunal Regional Eleitoral do Rio Grande do Sul
TRERO622Tribunal Regional Eleitoral de Rondônia
TRERR623Tribunal Regional Eleitoral de Roraima
TRESC624Tribunal Regional Eleitoral de Santa Catarina
TRESE625Tribunal Regional Eleitoral de Sergipe
TRESP626Tribunal Regional Eleitoral de São Paulo
TRETO627Tribunal Regional Eleitoral de Tocantins
CJM17011a Circunscrição de Justiça Militar
CJM27022a Circunscrição de Justiça Militar
CJM37033a Circunscrição de Justiça Militar
CJM47044a Circunscrição de Justiça Militar
CJM57055a Circunscrição de Justiça Militar
CJM67066a Circunscrição de Justiça Militar
CJM77077a Circunscrição de Justiça Militar
CJM87088a Circunscrição de Justiça Militar
CJM97099a Circunscrição de Justiça Militar
CJM1071010a Circunscrição de Justiça Militar
CJM1171111a Circunscrição de Justiça Militar
CJM1271212a Circunscrição de Justiça Militar
TJAC801Tribunal de Justiça do Acre
TJAL802Tribunal de Justiça de Alagoas
TJAP803Tribunal de Justiça do Amapá
TJAM804Tribunal de Justiça do Amazonas
TJBA805Tribunal de Justiça da Bahia
TJCE806Tribunal de Justiça do Ceará
TJDFT807Tribunal de Justiça do Distrito Federal e dos Territórios
TJES808Tribunal de Justiça do Espírito Santo
TJGO809Tribunal de Justiça de Goiás
TJMA810Tribunal de Justiça do Maranhão
TJMT811Tribunal de Justiça de Mato Grosso
TJMS812Tribunal de Justiça de Mato Grosso do Sul
TJMG813Tribunal de Justiça de Minas Gerais
TJPA814Tribunal de Justiça do Pará
TJPB815Tribunal de Justiça da Paraíba
TJPR816Tribunal de Justiça do Paraná
TJPE817Tribunal de Justiça de Pernambuco
TJPI818Tribunal de Justiça do Piauí
TJRJ819Tribunal de Justiça do Rio de Janeiro
TJRN820Tribunal de Justiça do Rio Grande do Norte
TJRS821Tribunal de Justiça do Rio Grande do Sul
TJRO822Tribunal de Justiça de Rondônia
TJRR823Tribunal de Justiça de Roraima
TJSC824Tribunal de Justiça de Santa Catarina
TJSE825Tribunal de Justiça de Sergipe
TJSP826Tribunal de Justiça de São Paulo
TJTO827Tribunal de Justiça de Tocantins
TJMMG913Tribunal de Justiça Militar de Minas Gerais
TJMRS921Tribunal de Justiça Militar do Rio Grande do Sul
TJMSP926Tribunal de Justiça Militar de São Paulo