### Install Escavador Python SDK Source: https://github.com/escavador/escavador-python/blob/master/README.md Install the SDK using pip. Ensure you are using Python 3.7 or later. ```bash python -m pip install escavador ``` -------------------------------- ### Example: List and Filter Courts Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v2.md Demonstrates how to list all courts and how to filter them by specific state siglas. ```python from escavador.v2 import Tribunal # Listar todos todos = Tribunal.listar() # Filtrar por estados tribunais_sp_rj = Tribunal.listar(["SP", "RJ"]) for tribunal in tribunais_sp_rj: print(f"{tribunal.sigla}: {tribunal.nome}") ``` -------------------------------- ### Método GET Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/metodo-http.md Envia uma requisição GET para um endpoint. Use 'params' para query string e 'data' ou kwargs para o corpo JSON. Retorna um Dict ou bytes. ```python from escavador.method import Method method = Method(api_version=1) result = method.get( "processos/123", params={"limit": 10, "page": 1} ) ``` -------------------------------- ### Exemplo de Requisição GET Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/configuracao-api.md Exemplo de como fazer uma requisição GET para buscar processos, com parâmetros de limite. O status HTTP da resposta é impresso. ```python api = Api(version=1) response = api.request( "GET", "processos/123", params={"limit": 10} ) print(response["http_status"]) ``` -------------------------------- ### Fetching Data with GET Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/metodo-http.md Use the `get` method to retrieve data from a specified endpoint. It accepts URL parameters for filtering and pagination. ```python processes = method.get( "processos/123/movimentacoes", params={"limit": 50, "page": 1} ) if processes["sucesso"]: print(f"Status: {processes['http_status']}") print(f"Dados: {processes['resposta']}") else: print(f"Erro: {processes['resposta']}") ``` -------------------------------- ### Get Available Credits Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v1.md Retrieves the current number of available credits for the user. ```python @classmethod def quantidade(cls) -> Dict: ``` -------------------------------- ### Get All Court Monitorings Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v1.md Retrieves a list of all court monitoring configurations set up by the user. This provides an overview of active monitoring tasks for court systems. ```python from typing import Dict class MonitoramentoTribunal: @classmethod def monitoramentos(cls) -> Dict: pass ``` -------------------------------- ### Get Institution Details by ID Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v1.md Fetches detailed information about a specific institution using its unique ID. ```python @classmethod def por_id(cls, id_instituicao: int) -> Dict: ``` -------------------------------- ### Get Institution's Processes Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v1.md Retrieves a list of processes associated with a specific institution, with optional limit and pagination. ```python @classmethod def get_processos_instituicao( cls, id_instituicao: int, *, limit: Optional[int] = None, page: Optional[int] = None ) -> Dict: ``` -------------------------------- ### Get Person's Processes Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v1.md Retrieves a list of processes associated with a specific person, with optional limit and pagination. ```python @classmethod def processos( cls, id_pessoa: int, *, limit: Optional[int] = None, page: Optional[int] = None ) -> Dict: ``` -------------------------------- ### Métodos HTTP Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/INDICE.md Referência da classe `Method` para realizar requisições HTTP, com métodos para GET, POST, PUT e DELETE, e tratamento de argumentos. ```APIDOC ## Classe Method ### Description Interface uniforme para realizar requisições HTTP. ### Methods - `get(endpoint: str, **kwargs)`: Realiza uma requisição GET. - `post(endpoint: str, **kwargs)`: Realiza uma requisição POST. - `put(endpoint: str, **kwargs)`: Realiza uma requisição PUT. - `delete(endpoint: str, **kwargs)`: Realiza uma requisição DELETE. ### Argument Handling - Tratamento de argumentos para filtrar `None` e mesclar `kwargs`. ``` -------------------------------- ### Handling Authentication Errors Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/errors.md Example of catching a FailedRequest exception and specifically checking for an authentication error (status code 401). This snippet shows how to provide user-friendly feedback for invalid API keys. ```python from escavador.v2 import Processo from escavador.exceptions import FailedRequest try: processo = Processo.por_numero("0000000-00.0000.0.00.0000") except FailedRequest as e: if e.status == 401: print("Erro: Chave de API inválida ou não configurada") print(f"Mensagem: {e.message}") else: print(f"Erro {e.code}: {e.message}") ``` -------------------------------- ### Estratégia 1: Configuração via arquivo .env Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/configuracao.md Configuração recomendada usando um arquivo `.env` na raiz do projeto para definir `ESCAVADOR_API_KEY` e `ESCAVADOR_MAX_REQ_PER_MIN`. O carregamento é automático. ```bash # .env ESCAVADOR_API_KEY=seu_token ESCAVADOR_MAX_REQ_PER_MIN=500 ``` ```python # main.py import escavador from escavador.v2 import Processo # Nada a fazer - carrega automaticamente ``` -------------------------------- ### Get Court Monitoring by ID Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v1.md Retrieves details of a specific court monitoring configuration using its ID. This allows for detailed inspection of a particular monitoring setup. ```python from typing import Dict class MonitoramentoTribunal: @classmethod def por_id(cls, id_monitoramento: int) -> Dict: pass ``` -------------------------------- ### Exemplo de Arquivo .env Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/configuracao-api.md Configura a chave de API e o limite de requisições por minuto usando variáveis de ambiente em um arquivo .env. ```bash ESCAVADOR_API_KEY=seu_token_aqui ESCAVADOR_MAX_REQ_PER_MIN=300 ``` -------------------------------- ### Estratégia 2: Configuração via Variável de Ambiente do Sistema Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/configuracao.md Configuração alternativa usando variáveis de ambiente exportadas no shell. O SDK carrega essas variáveis automaticamente sem a necessidade de um arquivo `.env`. ```bash # Shell export ESCAVADOR_API_KEY=seu_token export ESCAVADOR_MAX_REQ_PER_MIN=500 python main.py ``` ```python # main.py import escavador # Carrega automaticamente ``` -------------------------------- ### Exemplo de Uso Principal da Aplicação Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/configuracao.md Script principal que demonstra a configuração automática via .env e a busca de processos por CNPJ utilizando o SDK do Escavador. Inclui tratamento básico de erros. ```python #!/usr/bin/env python # -*- coding: utf-8 -*- import escavador from escavador.v2 import Processo from escavador.exceptions import FailedRequest def main(): # Configuração automática via .env try: envolvido, processos = Processo.por_cnpj("07.838.351/0021.60", limit=10) print(f"Empresa: {envolvido.nome}") print(f"Processos encontrados: {envolvido.quantidade_processos}") for processo in processos: print(f" - {processo.numero_cnj}") except FailedRequest as e: print(f"Erro: {e.code} ({e.status}): {e.message}") return 1 return 0 if __name__ == "__main__": exit(main()) ``` -------------------------------- ### GET Request Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/metodo-http.md Sends a GET request to the specified endpoint. It supports query parameters and optional data in the JSON body. The response can be a JSON dictionary or raw bytes for file downloads. ```APIDOC ## GET /url ### Description Sends a GET request to the specified endpoint. Supports query parameters and optional data in the JSON body. The response can be a JSON dictionary or raw bytes for file downloads. ### Method GET ### Endpoint /{url} ### Parameters #### Query Parameters - **params** (Dict) - Optional - Parameters for the query string. #### Request Body - **data** (Dict) - Optional - Additional data in the JSON body. - **kwargs** (Dict) - Optional - Additional arguments for the JSON body. ### Request Example ```python from escavador.method import Method method = Method(api_version=1) result = method.get( "processos/123", params={"limit": 10, "page": 1} ) ``` ### Response #### Success Response (200) - **Dict** - Response as a JSON dictionary. - **bytes** - Response as raw bytes (e.g., for file downloads). ``` -------------------------------- ### Arquivo requirements.txt Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/configuracao.md Lista as dependências Python necessárias para o projeto, incluindo o SDK do Escavador e a biblioteca python-dotenv. ```text escavador>=0.11.0 python-dotenv>=0.19.2 ``` -------------------------------- ### Estratégia 3: Configuração via função config() em Tempo de Execução Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/configuracao.md Configuração flexível usando a função `config()` para definir a chave de API diretamente no código Python. Útil para gerenciar múltiplas chaves ou em cenários dinâmicos. ```python import escavador ``` -------------------------------- ### Exemplo de Estrutura de Projeto Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/configuracao.md Demonstra a estrutura de diretórios recomendada para um projeto utilizando o SDK do Escavador, incluindo arquivos de configuração e código principal. ```text meu_projeto/ ├── .env # ← Configuração ├── .gitignore ├── main.py ├── requirements.txt └── escavador_utils.py ``` -------------------------------- ### Get Tribunal Details Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v1.md Fetches detailed information about a specific tribunal using its acronym. ```python @classmethod def detalhes(cls, sigla_tribunal: str) -> Dict: ``` -------------------------------- ### Get Movement by ID Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v1.md Retrieves information about a specific legal movement using its unique ID. ```python @classmethod def por_id(cls, id_movimentacao: int) -> Dict: ``` -------------------------------- ### Get Monitoring Appearances Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v1.md Retrieves all appearances of a specific term within a given gazette monitoring. ```python @classmethod def aparicoes(cls, id_monitoramento: int) -> Dict: ``` -------------------------------- ### Exemplo de Configuração Global Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/configuracao-api.md Demonstra como configurar a chave de API globalmente usando a função `config` e, em seguida, usar uma classe do módulo `v1`. ```python import escavador escavador.config("seu_token_api_aqui") # Agora todos os módulos usarão esta chave from escavador.v1 import Processo resultado = Processo.por_id_em_diarios(123) ``` -------------------------------- ### Get Involved Party Summary Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v2.md Retrieves a summary for an involved party using their CPF/CNPJ or name. ```python resumo( cpf_cnpj: Optional[str] = None, nome: Optional[str] = None, **kwargs ) -> EnvolvidoEncontrado ``` -------------------------------- ### Configuração e Variáveis de Ambiente Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/INDICE.md Documentação completa sobre a configuração do SDK, incluindo variáveis de ambiente, arquivos .env, funções de configuração e boas práticas de segurança. ```APIDOC ## Configuração e Variáveis de Ambiente ### Description Instruções detalhadas para configurar o SDK Escavador Python. ### Environment Variables - `ESCAVADOR_API_KEY`: Chave de API para autenticação. - `ESCAVADOR_MAX_REQ_PER_MIN`: Limite máximo de requisições por minuto. ### .env File - Estrutura e localização recomendada para arquivos `.env`. ### Configuration Functions - `config()`: Função para definir configurações globais. - Propriedades da classe `Api` para configuração específica da instância. ### Strategies - Como configurar o SDK em diferentes cenários de aplicação. ### Security - Boas práticas para o manuseio de credenciais e configuração. ### Troubleshooting - Solução de problemas comuns relacionados à configuração. ``` -------------------------------- ### Configuração da chave de API via função config() Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/configuracao.md Exemplo de como configurar a chave de API globalmente em tempo de execução usando a função `config()` do SDK Escavador. Esta configuração tem prioridade sobre as variáveis de ambiente. ```python import escavador # Configurar antes de usar qualquer recurso escavador.config("seu_token_aqui") # Agora pode usar qualquer classe from escavador.v2 import Processo processo = Processo.por_numero("0000000-00.0000.0.00.0000") ``` -------------------------------- ### Configurar Nível de Log com Variável de Ambiente Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/configuracao.md Defina o nível de log desejado usando a variável de ambiente LOG_LEVEL. Exemplo: INFO. ```bash LOG_LEVEL=INFO ``` -------------------------------- ### Get Person Details by ID Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v1.md Fetches detailed information about a specific person using their unique ID. ```python @classmethod def por_id(cls, id_pessoa: int) -> Dict: ``` -------------------------------- ### Get Specific Gazette Page Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v1.md Retrieves a specific page from an official gazette by its ID. Pagination is supported. ```python @classmethod def pagina(cls, id_diario: int, *, page: Optional[int] = None) -> Dict: ``` -------------------------------- ### Verificar Configuração do SDK Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/configuracao.md Função para validar se a chave de API está configurada, exibir o rate limit e as versões suportadas da API. É recomendado chamar no início da aplicação. ```python import os from escavador.exceptions import ApiKeyNotFoundException from escavador.api import Api def validar_configuracao(): """Valida se o SDK está configurado corretamente.""" # Verificar chave de API try: api = Api(version=1) _ = api.api_key print("✓ API Key configurada") except ApiKeyNotFoundException: print("✗ API Key não configurada") print(" Defina ESCAVADOR_API_KEY em .env ou use config()") return False # Verificar rate limit max_req = int(os.environ.get("ESCAVADOR_MAX_REQ_PER_MIN", 500)) print(f"✓ Rate limit: {max_req} req/min") # Verificar versões suportadas print(f"✓ Versões suportadas: {Api.__dict__.get('SUPPORTED_VERSIONS', [1, 2])}") return True # No início da aplicação if not validar_configuracao(): exit(1) ``` -------------------------------- ### Get Process Update Status Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v2.md Queries the update status of a legal process using its CNJ number. ```python status_atualizacao(cls, numero_cnj: str) -> StatusAtualizacao ``` -------------------------------- ### Habilitar Debug com Variável de Ambiente Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/configuracao.md Ative logs de depuração definindo a variável de ambiente DEBUG como True. Não é nativa do SDK, mas recomendada para logs detalhados. ```bash DEBUG=True ``` -------------------------------- ### Função config() Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/configuracao-api.md A função `config()` permite configurar a chave de API globalmente para todas as classes que dependem de autenticação, simplificando o processo de autenticação em todo o SDK. ```APIDOC ## Função config() ```python def config(api_key: str) -> None ``` Configura a chave de API globalmente para todas as classes que dependem de autenticação. **Parâmetros:** - **api_key** (str): Obrigatório. Token da API do Escavador. **Exemplo:** ```python import escavador escavador.config("seu_token_api_aqui") # Agora todos os módulos usarão esta chave from escavador.v1 import Processo resultado = Processo.por_id_em_diarios(123) ``` ``` -------------------------------- ### Get People by Institution Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v1.md Retrieves people associated with a specific institution. Supports pagination with limit and page parameters. ```python def get_pessoas_instituicao( cls, id_instituicao: int, *, limit: Optional[int] = None, page: Optional[int] = None ) -> Dict: ``` -------------------------------- ### Exemplo de Uso de Headers Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/configuracao-api.md Demonstra como instanciar a classe Api, definir a chave de API e obter os headers HTTP. A chave de API é retornada no header Authorization. ```python from escavador.api import Api api = Api(version=1) api.api_key = "sua_chave_api" headers = api.headers() print(headers["Authorization"]) ``` -------------------------------- ### Get Lawyer Summary by OAB Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v2.md Retrieves a summary for a lawyer using their OAB number and state. Optional type can be specified. ```python resumo_oab( numero: Union[str, int], estado: str, tipo: Optional[str] = None, **kwargs ) -> EnvolvidoEncontrado ``` -------------------------------- ### Exemplo de Uso Integrado Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/metodo-http.md Demonstra a inicialização da classe Method e a preparação para realizar chamadas HTTP. ```python from escavador.method import Method method = Method(api_version=1) ``` -------------------------------- ### Get Specific Gazette Monitoring by ID Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v1.md Fetches details for a specific daily official gazette monitoring using its unique ID. ```python @classmethod def por_id(cls, id_monitoramento: int) -> Dict: ``` -------------------------------- ### Arquivo .gitignore Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/configuracao.md Exemplo de arquivo .gitignore para excluir arquivos e diretórios de configuração e cache do controle de versão. ```gitignore .env .env.local __pycache__/ *.pyc .venv/ ``` -------------------------------- ### Get Official Gazettes for a Monitoring Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v1.md Retrieves the list of official gazettes associated with a specific monitoring configuration. This helps in identifying which publications are being tracked. ```python from typing import Dict class MonitoramentoDiario: @classmethod def origens(cls, id_monitoramento: int) -> Dict: pass ``` -------------------------------- ### Tipos de Busca em Tribunais (V1) Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/tipos.md Especifica os métodos de busca disponíveis em tribunais. Escolha o tipo de busca apropriado para sua consulta. ```python class TiposBusca(Enum): BUSCA_POR_OAB = "busca_por_oab" BUSCA_POR_DOCUMENTO = "busca_por_documento" BUSCA_POR_NOME = "busca_por_nome" ``` -------------------------------- ### Configurar Chave de Usuário Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/configuracao.md Configure a chave de usuário para autenticação. Pode ser chamada múltiplas vezes para trocar de usuário. ```python escavador.config("chave_do_usuario_1") # ... fazer operações ... # Trocar para outro usuário escavador.config("chave_do_usuario_2") ``` -------------------------------- ### Critério de Ordenação de Processos (V2) Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/tipos.md Especifica os critérios pelos quais os processos podem ser ordenados. Use para organizar listas de processos. ```python class CriterioOrdenacao(str, Enum): ULTIMA_MOVIMENTACAO = "data_ultima_movimentacao" INICIO = "data_inicio" ``` -------------------------------- ### Get Asynchronous Search by ID Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v1.md Retrieves the data for an asynchronous search operation using its unique ID. This is part of managing background search tasks. ```python from typing import Dict class BuscaAssincrona: @classmethod def por_id(cls, id: int) -> Dict: pass ``` -------------------------------- ### Obtendo Headers HTTP Padrão Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/configuracao-api.md Gera um dicionário contendo os headers HTTP necessários para as requisições à API, incluindo User-Agent e Authorization. ```python def headers(self) -> Dict ``` -------------------------------- ### Get All Asynchronous Search Results Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v1.md Retrieves all search results from asynchronous operations initiated by the user. This method provides a consolidated view of completed background searches. ```python from typing import Dict class BuscaAssincrona: @classmethod def resultados(cls) -> Dict: pass ``` -------------------------------- ### Get Lawyer Summary by OAB (Method Signature) Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v2.md Method signature for retrieving a lawyer's summary using their OAB number, state, and an optional type. ```python resumo_oab( numero: int, estado: str, tipo: Optional[str] = None, **kwargs ) -> EnvolvidoEncontrado ``` -------------------------------- ### Carregamento automático de .env com python-dotenv Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/configuracao.md Demonstração do carregamento automático de variáveis de ambiente de um arquivo .env usando a biblioteca python-dotenv na importação do módulo escavador.api. ```python from dotenv import load_dotenv load_dotenv() ``` -------------------------------- ### SDK File Structure Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/README.md Overview of the directory structure for the Escavador Python SDK documentation. ```text /workspace/home/output/ ├── INDICE.md # Índice principal ├── README.md # Este arquivo ├── tipos.md # Tipos e enumerações ├── configuracao.md # Setup e variáveis de ambiente ├── errors.md # Catálogo de erros └── api-reference/ ├── configuracao-api.md # Api class ├── metodo-http.md # Method class ├── endpoint-v1.md # API V1 resources └── endpoint-v2.md # API V2 resources ``` -------------------------------- ### Get Involved Parties for a Process Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v1.md Retrieves a list of involved parties (e.g., plaintiffs, defendants, lawyers) for a given legal process ID. This is useful for understanding the stakeholders in a case. ```python from typing import Optional, Dict class EscavadorAPI: @classmethod def get_envolvidos_processo( cls, id_processo: int, *, limit: Optional[int] = None, page: Optional[int] = None ) -> Dict: pass ``` -------------------------------- ### Configuração Global da Chave de API Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/configuracao-api.md Configura a chave de API globalmente para todas as classes que dependem de autenticação. Use esta função para evitar definir a chave em cada instância. ```python def config(api_key: str) -> None ``` -------------------------------- ### Get Official Gazette Movements for a Process Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v1.md Retrieves the movement history of a legal process from the official gazettes. This method allows tracking the progression and updates of a case as published in official records. ```python from typing import Optional, Dict class EscavadorAPI: @classmethod def movimentacoes_diario_oficial( cls, id_processo: int, *, limit: Optional[int] = None, page: Optional[int] = None ) -> Dict: pass ``` -------------------------------- ### Handling ApiKeyNotFoundException Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/errors.md Example of catching ApiKeyNotFoundException, which is raised when no API key is provided for authenticated operations. The handler suggests solutions like setting the ESCAVADOR_API_KEY environment variable or calling escavador.config(). ```python from escavador.api import Api from escavador.exceptions import ApiKeyNotFoundException try: api = Api(version=1) headers = api.headers() except ApiKeyNotFoundException: print("Erro: Nenhuma chave de API configurada") print("Opções:") print(" 1. Criar arquivo .env com ESCAVADOR_API_KEY=sua_chave") print(" 2. Chamar escavador.config('sua_chave') no início do código") exit(1) ``` -------------------------------- ### Tratamento de Erro ApiKeyNotFoundException Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/configuracao.md Exibe a mensagem de erro e as possíveis causas e soluções para a exceção ApiKeyNotFoundException. ```text ApiKeyNotFoundException: Nenhuma chave da API foi informada Causas e Soluções: | Causa | Solução | |-------|---------| | .env não existe | Criar arquivo na raiz do projeto | | ESCAVADOR_API_KEY não definida | Adicionar em .env: `ESCAVADOR_API_KEY=seu_token` | | config() nunca foi chamado | Chamar `escavador.config("seu_token")` antes de usar | | Chave vazia | Verificar se `ESCAVADOR_API_KEY=""` (vazio) | ``` -------------------------------- ### Processo.movimentacoes Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v2.md Recupera a lista de movimentações associadas a um processo jurídico específico, identificadas pelo número CNJ. Retorna resultados paginados. ```APIDOC ## Processo.movimentacoes ### Description Busca as movimentações de um processo. ### Method `@staticmethod` ### Endpoint (Não aplicável - Método de classe) ### Parameters #### Path Parameters (Nenhum) #### Query Parameters - **numero_cnj** (str) - Sim - Número CNJ do processo - **kwargs** (—) - Não - Parâmetros adicionais ### Request Example ```python movimentacoes = Processo.movimentacoes("0000000-00.0000.0.00.0000") for movimentacao in movimentacoes: print(f"{movimentacao.data}: {movimentacao.tipo}") if movimentacoes: proxima_pagina = movimentacoes.continuar_busca() ``` ### Response #### Success Response (200) - **ListaResultados[Movimentacao]** (ListaResultados[Movimentacao]) - Lista paginada de movimentações. #### Response Example (Não especificado no formato de exemplo de corpo de resposta, mas o retorno é uma lista paginada de objetos Movimentacao) ``` -------------------------------- ### Get Callbacks with Filters Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v1.md Retrieves callback notifications, allowing filtering by date range, event type, item type, item ID, and status. This is useful for managing and processing asynchronous results. ```python from typing import Optional, List, Dict from datetime import datetime class StatusCallback: pass class Callback: @classmethod def callbacks( cls, *, data_maxima: Optional[datetime] = None, data_minima: Optional[datetime] = None, evento: Optional[str] = None, item_tipo: Optional[str] = None, item_id: Optional[int] = None, status: Optional[StatusCallback] = None ) -> Dict: pass ``` -------------------------------- ### Tipos de Monitoramento de Tribunal (V1) Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/tipos.md Define os tipos de monitoramento que podem ser configurados para tribunais. Use para especificar o que rastrear. ```python class TiposMonitoramentosTribunal(Enum): UNICO = "UNICO" NUMERO_DOCUMENTO = "NUMDOC" NOME = "NOME" ``` -------------------------------- ### Processo.por_numero Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v2.md Busca um processo jurídico específico utilizando seu número CNJ. Retorna uma instância da classe Processo com todos os detalhes disponíveis. ```APIDOC ## Processo.por_numero ### Description Busca um processo pelo seu número único do CNJ. ### Method `@staticmethod` ### Endpoint (Não aplicável - Método de classe) ### Parameters #### Path Parameters (Nenhum) #### Query Parameters - **numero_cnj** (str) - Sim - Número CNJ (ex: "0000000-00.0000.0.00.0000") - **kwargs** (—) - Não - Parâmetros adicionais da requisição ### Request Example ```python from escavador.v2 import Processo processo = Processo.por_numero("0000000-00.0000.0.00.0000") print(f"{processo.numero_cnj}: {processo.titulo_polo_ativo}") ``` ### Response #### Success Response (200) - **Processo** (Processo) - Instância de `Processo` com os dados do processo. #### Response Example (Não especificado no formato de exemplo de corpo de resposta, mas o retorno é uma instância de Processo) ERROR HANDLING: - Lança `FailedRequest` se o processo não for encontrado ``` -------------------------------- ### Query Latest Lawyer Processes by OAB (API V2) Source: https://github.com/escavador/escavador-python/blob/master/README.md Retrieve the most recent legal processes for a lawyer using their OAB number and state. Allows sorting by process start date in descending order. ```python from escavador import CriterioOrdenacao, Ordem from escavador.v2 import Processo advogado, processos = Processo.por_oab(numero=12345, estado="SP", ordena_por=CriterioOrdenacao.INICIO, ordem=Ordem.DESC) processo = processos.pop() print(f"{processo.numero_cnj}: {processo.titulo_polo_ativo} X {processo.titulo_polo_passivo}") ``` -------------------------------- ### Creating a New Resource with POST Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/metodo-http.md Utilize the `post` method to create a new resource. The request body should be provided as a dictionary in the `data` argument. ```python new_monitoring = method.post( "monitoramentos", data={ "tipo": "processo", "processo_id": 123, "origens_ids": [1, 2, 3] } ) ``` -------------------------------- ### Tipos de Monitoramento de Diário Oficial (V1) Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/tipos.md Especifica os tipos de monitoramento para diários oficiais. Permite rastrear processos ou termos específicos. ```python class TiposMonitoramentosDiario(Enum): PROCESSO = "processo" TERMO = "termo" ``` -------------------------------- ### Get Process Information from Tribunal Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v1.md Initiates an asynchronous search for a process across all tribunals using its unique number. It supports options for callbacks, waiting for results, retrieving case files, and using digital certificates. ```python from escavador.v1 import Processo resultado = Processo.informacoes_no_tribunal( numero_unico="0000000-00.0000.0.00.0000", wait=True, documentos_publicos=True ) if resultado['resposta']['status'] == 'SUCESSO': instancias = resultado['resposta']['resposta']['instancias'] ``` -------------------------------- ### Query Person's Latest Process Movements by Name (API V2) Source: https://github.com/escavador/escavador-python/blob/master/README.md Find the latest legal processes for a person by their name and retrieve the content of the most recent movement for each process. Processes are sorted by start date in descending order. ```python from escavador import CriterioOrdenacao, Ordem from escavador.v2 import Processo envolvido, processos = Processo.por_nome(nome="Fulano de Tal da Silva", ordena_por=CriterioOrdenacao.INICIO, ordem=Ordem.DESC) for processo in processos: print(f"{processo.numero_cnj}:") print(f"Fonte: {processo.fontes[0].nome}") print(f"Data de início: {processo.data_inicio}") movimentacoes = Processo.movimentacoes(numero_cnj=processo.numero_cnj) if movimentacoes: print(f"Última movimentação: {movimentacoes[0].conteudo}") ``` -------------------------------- ### Método POST Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/metodo-http.md Envia uma requisição POST para um endpoint. Use 'data' ou kwargs para o corpo JSON e 'params' para query string. Retorna um Dict ou bytes. ```python method = Method(api_version=1) result = method.post( "monitoramento-tribunal", data={ "tipo": "UNICO", "valor": "0000000-00.0000.0.00.0000", "tribunal": "TJSP" } ) ``` -------------------------------- ### Método request() da Classe Api Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/configuracao-api.md O método `request()` executa requisições HTTP para a API com rate limiting automático. Ele suporta diferentes métodos HTTP, URLs, dados no corpo e parâmetros de query string, retornando o conteúdo da resposta ou bytes para PDFs. ```APIDOC ## Classe Api ### Métodos #### request() ```python @limits(calls=500, period=60) def request( self, method: str, url: str, data: Optional[Dict] = None, params: Optional[Dict] = None, **kwargs ) -> Union[Dict, bytes] ``` Executa uma requisição HTTP para a API com rate limiting automático. **Parâmetros:** - **method** (str): Obrigatório. Método HTTP (GET, POST, PUT, DELETE). - **url** (str): Obrigatório. Slug do endpoint a ser chamado (relativo à URL base). - **data** (Dict): Opcional. Dados para enviar no corpo da requisição (JSON). - **params** (Dict): Opcional. Parâmetros para a query string. - **kwargs**: Opcional. Argumentos adicionais mesclados com `data`. **Rate Limit:** 500 requisições por minuto (configurável via `ESCAVADOR_MAX_REQ_PER_MIN`). **Retorno:** `Union[Dict, bytes]` - Se Content-Type for "application/pdf": retorna bytes. - Caso contrário: retorna Dict com estrutura `{"resposta": content, "http_status": code, "sucesso": bool}`. **Lança:** `RateLimitException` quando o limite de requisições é excedido. **Exemplo:** ```python api = Api(version=1) response = api.request( "GET", "processos/123", params={"limit": 10} ) print(response["http_status"]) # 200 ``` ``` -------------------------------- ### Create Tribunal and Daily Monitorings (API V1) Source: https://github.com/escavador/escavador-python/blob/master/README.md Creates monitoring jobs for court systems and official gazettes. For tribunal monitoring, specify the case number, court, and frequency. For daily monitoring, specify the type, process ID, and origin IDs. ```python 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) # Monitoramento em Diários Oficiais monitoramento_diario = MonitoramentoDiario.criar(TiposMonitoramentosDiario.PROCESSO, processo_id=2, origens_ids=[2,4,6]) ``` -------------------------------- ### Método headers() da Classe Api Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/configuracao-api.md O método `headers()` retorna um dicionário contendo os cabeçalhos HTTP padrão necessários para as requisições à API Escavador, incluindo `User-Agent`, `Authorization`, e `Accept-Encoding`. ```APIDOC ## Classe Api ### Métodos #### headers() ```python def headers(self) -> Dict ``` Retorna um dicionário com os headers HTTP padrões para todas as requisições da API. **Retorno:** `Dict` contendo os headers HTTP padrão. **Exemplo:** ```python from escavador.api import Api api = Api(version=1) api.api_key = "sua_chave_api" headers = api.headers() print(headers["Authorization"]) # Bearer sua_chave_api ``` ``` -------------------------------- ### Initiate Asynchronous Process Search (API V1) Source: https://github.com/escavador/escavador-python/blob/master/README.md Initiates an asynchronous search for process information directly from the court's website. The result indicates success, pending status, or an error. ```python 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'] ``` -------------------------------- ### Variável Global de Chave de API Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/configuracao-api.md A variável global `__APIKEY__` armazena a chave de API. Ela pode ser definida via variável de ambiente, função `config()`, ou propriedade `api_key`. ```python __APIKEY__: Optional[str] = None ``` -------------------------------- ### Create Daily Gazette Monitoring Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v1.md Creates a new daily official gazette monitoring. Use this to set up alerts for specific terms or origins. ```python from typing import Optional, List, Dict from escavador.v1.tipos_monitoramentos import TiposMonitoramentosDiario class MonitoramentoDiario Oficial: @classmethod def criar( cls, tipo_monitoramento: TiposMonitoramentosDiario, *, termo: Optional[str] = None, origens_ids: Optional[List[int]] = None, processo_id: Optional[int] = None, variacoes: Optional[List[str]] = None, termos_auxiliares: Optional[List[str]] = None ) -> Dict: ``` -------------------------------- ### Configure Escavador SDK Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/INDICE.md Configure the Escavador SDK using either environment variables or by passing the API key directly during runtime. ```python import escavador # Option A: Environment variable (.env) # No additional code needed # Option B: At runtime escavador.config("your_api_key") ``` -------------------------------- ### Inicialização da Classe Method Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/metodo-http.md Instancia a classe Method para interagir com a API. Especifique a versão da API (1 ou 2) durante a inicialização. ```python from escavador.method import Method # Para API V1 method_v1 = Method(api_version=1) # Para API V2 method_v2 = Method(api_version=2) ``` -------------------------------- ### Método PUT Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/metodo-http.md Envia uma requisição PUT para um endpoint. Use 'data' ou kwargs para o corpo JSON e 'params' para query string. Retorna um Dict ou bytes. ```python method = Method(api_version=1) result = method.put( "monitoramentos-tribunal/123", data={"frequencia": "DIARIA"} ) ``` -------------------------------- ### Processo.por_envolvido() Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/endpoint-v2.md Searches for legal processes using multiple optional criteria, requiring at least a CPF/CNPJ or a name. ```APIDOC ## Processo.por_envolvido() ### Description Searches for legal processes with multiple optional criteria. At least `cpf_cnpj` or `nome` must be provided. ### Method `por_envolvido(cpf_cnpj: Optional[str] = None, nome: Optional[str] = None, ordena_por: Optional[CriterioOrdenacao] = None, ordem: Optional[Ordem] = None, tribunais: Optional[List[SiglaTribunal]] = None, incluir_homonimos: Optional[bool] = None, status: Optional[str] = None, data_minima: Optional[str] = None, data_maxima: Optional[str] = None, limit: Optional[int] = None, **kwargs) ### Parameters #### Path Parameters None #### Query Parameters * **cpf_cnpj** (str) - Optional - CPF or CNPJ of the individual or institution. * **nome** (str) - Optional - Name of the individual or institution. * **ordena_por** (CriterioOrdenacao) - Optional - Sorting criterion. * **ordem** (Ordem) - Optional - ASC or DESC. * **tribunais** (List[SiglaTribunal]) - Optional - Court filter. * **incluir_homonimos** (bool) - Optional - Include homonyms. * **status** (str) - Optional - "ATIVO" or "INATIVO". * **data_minima** (str) - Optional - Date in YYYY-MM-DD format. * **data_maxima** (str) - Optional - Date in YYYY-MM-DD format. * **limit** (int) - Optional - Quantity per page. ### Response #### Success Response (200) * **EnvolvidoEncontrado** - Information about the found individual. * **ListaResultados[Processo]** - A list of legal processes found. ``` -------------------------------- ### Inicialização da Classe Api Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/configuracao-api.md Instancia a classe Api com a versão desejada. A versão da API deve ser uma das suportadas. ```python class Api(object): def __init__(self, version: int) -> None ``` -------------------------------- ### Configuração de limite de requisições por minuto por instância Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/configuracao.md Exemplo de como a constante `MAX_REQUESTS_PER_MIN` é configurada por instância da API, lendo o valor da variável de ambiente `ESCAVADOR_MAX_REQ_PER_MIN` ou usando um padrão. ```python import os from escavador.api import Api, DEFAULT_RATE_LIMIT class Api(object): MAX_REQUESTS_PER_MIN = int( os.environ.get("ESCAVADOR_MAX_REQ_PER_MIN", DEFAULT_RATE_LIMIT) ) ``` -------------------------------- ### Tipos de Termo para Busca (V1) Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/tipos.md Define os tipos de entidades que podem ser buscadas. Use para filtrar resultados de busca. ```python class TiposTermo(Enum): TODOS = "t" PESSOAS = "p" INSTITUICOES = "i" PATENTES = "pa" DIARIOS_OFICIAIS = "d" ENVOLVIDOS = "en" ``` -------------------------------- ### Método DELETE Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/metodo-http.md Envia uma requisição DELETE para um endpoint. Use 'data' ou kwargs para o corpo JSON e 'params' para query string. Retorna um Dict ou bytes. ```python method = Method(api_version=1) result = method.delete( "monitoramentos-tribunal/123" ) ``` -------------------------------- ### Estrutura de Resposta Padrão da API Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/configuracao-api.md Todas as respostas da API, exceto arquivos binários, seguem este formato de dicionário. O campo 'sucesso' indica se a requisição foi bem-sucedida com base no código de status HTTP. ```python { "resposta": , "http_status": , "sucesso": } ``` -------------------------------- ### Propriedades da Classe Api: api_key Source: https://github.com/escavador/escavador-python/blob/master/_autodocs/api-reference/configuracao-api.md A propriedade `api_key` permite obter ou definir a chave de API para autenticação. Se a chave não estiver configurada ao tentar acessá-la, uma `ApiKeyNotFoundException` será lançada. ```APIDOC ## Classe Api ### Propriedades #### api_key ```python @property def api_key(self) -> str ``` Retorna a chave de API configurada. Lança `ApiKeyNotFoundException` se nenhuma chave estiver configurada. ```python @api_key.setter def api_key(self, value: str) -> None ``` Define a chave de API globalmente para todas as requisições subsequentes. ```