A API do Escavador possui rotas para realizar buscas de processos, nomes e documentos (CPF e CNPJ) em tribunais de todo o Brasil. Essas rotas enviam robôs que executam a busca escolhida no sistema do tribunal. No entanto, devido à possibilidade de instabilidade nos sistemas dos tribunais, pode ocorrer atraso no retorno dos resultados das buscas. Para contornar esse problema, as rotas funcionam de maneira assíncrona.
Ao realizar uma busca, criamos um recurso do nosso lado e você precisa consultar periodicamente essa busca para obter o resultado. Outra alternativa é enviar o parâmetro "callback" com a solicitação de busca. Dessa forma, com o retorno da resposta, enviamos o callback para o seu sistema, e cabe a você tratar a resposta que enviamos.
A API também possui rotas de monitoramento que dão a possibilidade de monitorar processos e termos em diários oficiais, e monitorar processos, nomes, e documentos em tribunais, ambos os monitoramentos utilizam os callbacks para enviar atualizações do processo para o seu sistema.
Para utilizar essa abordagem de callback, é necessário configurar uma URL de callback no seu sistema e cadastrar um token único no painel da API para garantir a segurança das comunicações.
Essa abordagem oferece maior flexibilidade e permite que você gerencie melhor o recebimento dos resultados das buscas, facilitando a integração com a API do Escavador em seu sistema.
Configurando o envio de callback pelo painel do escavador
- Acesse o painel da API do Escavador;
- Acesse a seção de callbacks;
- No campo de URL de callback, informe a url de callback configurada no seu sistema e clique em salvar;
- No campo de token do Escavador, clique em gerar token;
- Com o token gerado, copie e guarde ele na sua aplicação e sempre que receber uma requisição na sua url de callback verifique se ele o header Authorization com o token do Escavador;
Buscando processos em tribunais
Para buscar informações do processo, basta enviar o número CNJ vamos buscar o resultado, opcionalmente, para a busca de processos, é possível forçar a busca de processo em outro tribunal enviando o parâmetro origem.
from escavador import Processo
resultado_busca = Processo.informacoes_no_tribunal("0000000-00.0000.0.00.0000") # Gera uma busca assíncrona
if resultado_busca['resposta']['status'] == 'SUCESSO':
for instancia in resultado_busca['resposta']['resposta']['instancias']:
print(instancia['assunto'])
elif resultado_busca['resposta']['status'] == 'PENDENTE':
# O ID de uma busca assíncrona pode ser usado para consultar seu status
# ou identificar a requisição originária ao receber o callback no seu servidor.
id_async = resultado_busca['resposta']['id']
Para utilizar a funcionalidade de envio de callbacks nessa rota, basta enviar o parâmetro "callback", como mostra o exemplo abaixo:
from escavador import Processo
# Gera uma busca assíncrona
resultado_busca = Processo.informacoes_no_tribunal(numero_unico="0000000-00.0000.0.00.0000", callback=True)
# Vamos guardar o id da busca para gerenciamento da busca no futuro
id_async = resultado_busca['resposta']['id']
Consultado o resultado de uma busca
O script abaixo utiliza o SDK em python da API do Escavador para consultar periodicamente o resultado de uma busca assíncrona:
from escavador import BuscaAssincrona
from time import sleep
while True:
resultado_busca = BuscaAssincrona.por_id(id_async)
if resultado_busca['resposta']['status'] != 'PENDENTE':
break
sleep(15)
if resultado_busca['resposta']['status'] == 'SUCESSO':
# Os dados consultados estarão disponíveis no campo ['resposta']['resposta']
pass
elif resultado_busca['resposta']['status'] == 'ERRO':
print("Algo deu errado, tente novamente mais tarde.")
Resolvendo possíveis erros com callbacks
Se utilizarmos o envio de callbacks, pode surgir o problema de falha no recebimento desses callbacks. Por exemplo, caso o seu sistema tenha ficado fora do ar por algumas horas e o Escavador tenha tentado enviar o callback várias vezes, podemos esgotar a quantidade máxima de tentativas de envio. Para resolver essa situação, você pode consultar todos os callbacks que foram enviados utilizando a rota específica para callbacks e filtrar de acordo com as suas necessidades.
Vamos considerar o seguinte cenário: uma busca que você realizou não recebeu o callback com a resposta há alguns dias, devido ao período em que o seu sistema ficou fora do ar. Nesse caso, podemos buscar todos os callbacks que apresentaram erro e utilizar a rota de reenvio de callbacks para receber esses callbacks novamente, agora que o seu sistema já está funcionando normalmente.
Essa abordagem de reenvio de callbacks permite garantir que você obtenha todas as respostas pendentes e evita que informações importantes sejam perdidas devido a problemas temporários no sistema. Lembre-se de realizar a filtragem adequada para obter somente os callbacks que necessitam de reenvio e manter o seu sistema atualizado com as respostas mais recentes das buscas realizadas.
from escavador import Callback
callbacks_com_erro = Callback.callbacks(status="erro")
# vamos reenviar os callbacks que retornaram com erro
for callback in callbacks_com_erro:
Callback.reenviar(callback.id)
Criando monitoramentos em tribunais
Para criar monitoramentos basta enviar o tipo de monitoramento, o valor, que pode ser um número de documento, um nome ou um número CNJ, e especificar o tribunal e a frequência para o monitoramento.
from escavador import MonitoramentoTribunal, MonitoramentoDiario, TiposMonitoramentosTribunal, TiposMonitoramentosDiario,FrequenciaMonitoramentoTribunal
# Monitoramento nos sisteams dos Tribunais
monitoramento_tribunal = MonitoramentoTribunal.criar(tipo_monitoramento=TiposMonitoramentosTribunal.UNICO,
valor="0000000-00.0000.0.00.0000",
tribunal="TJSP",
frequencia=FrequenciaMonitoramentoTribunal.SEMANAL)
Criando monitoramentos em diário oficial
Para criar monitoramentos em diário oficial, o processo é um pouco diferente da criação de monitoramentos em tribunais, nesse caso, utilizaremos IDs de recursos no banco do Escavador, por isso, é necessário encontrar esses ids e especificá-los na criação do monitoramento.
from escavador import MonitoramentoDiario,TiposMonitoramentosDiario, Processo, DiarioOficial
# vamos buscar o processo de acordo com seu número cnj no Escavador
processo = Processo.processo_por_numero_em_diarios(numero_unico=0000000-00.0000.0.00.0000)
origens = DiarioOficial.origens()
# Monitoramento em Diários Oficiais
monitoramento_diario = MonitoramentoDiario.criar(TiposMonitoramentosDiario.PROCESSO, processo_id=processo.id, origens_ids=[origens[0].id,origens[1].id,origens[1].id)
Chegamos ao final desse artigo, se você ficou com alguma dúvida ou deseja mais informações, envie uma mensagem para https://api.escavador.com/tickets nossa equipe técnica está disponível para atender.
Comentários
0 comentário
Artigo fechado para comentários.