API e cliente Python não oficial para validar assinaturas de PDFs pelo ITI VALIDAR.
Project description
validar-iti
API e cliente Python não oficial para validar assinaturas de PDFs pelo ITI VALIDAR.
O projeto não implementa um verificador criptográfico próprio. Ele envia PDFs ou URLs para os endpoints públicos usados pelo site do VALIDAR e normaliza a resposta em JSON simples para uso em sistemas.
Aviso
Este projeto não é oficial, não é mantido pelo ITI e não tem relação com o Gov.br. O serviço VALIDAR não publica esses endpoints como API pública estável, então o contrato pode mudar.
Instalação
pip install validar-iti
Para desenvolvimento local:
python -m pip install -e ".[dev]"
Subir a API
validar-iti serve --host 127.0.0.1 --port 8000
Em desenvolvimento:
validar-iti serve --reload
Endpoints
Validar um PDF
curl -F "file=@documento_assinado.pdf;type=application/pdf" \
http://127.0.0.1:8000/validate/file
Validar múltiplos PDFs
curl \
-F "files=@um.pdf;type=application/pdf" \
-F "files=@dois.pdf;type=application/pdf" \
http://127.0.0.1:8000/validate/files
Validar URL
curl -X POST http://127.0.0.1:8000/validate/url \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/documento.pdf"}'
Healthcheck
curl http://127.0.0.1:8000/health
Uso como cliente Python
import asyncio
from validar_iti import ValidarClient
async def main():
async with ValidarClient() as client:
resultado = await client.validate_pdf("documento_assinado.pdf")
print(resultado.valid)
print(resultado.status_label)
print(resultado.simple_report_text)
asyncio.run(main())
Resposta
A API retorna campos estruturados e também simple_report_text, montado a partir
do relatório simples retornado pelo próprio VALIDAR.
Exemplo resumido:
{
"valid": true,
"status": "approved",
"status_label": "Aprovado",
"report_source": "validar_simples",
"file_name": "documento_assinado.pdf",
"sha256": "...",
"signatures": [
{
"signer_name": "NOME DO ASSINANTE",
"authority": "Gov-Br",
"cpf": "***.000.000-**",
"status": "approved",
"status_label": "Aprovado"
}
]
}
Configuração
Variáveis de ambiente:
VALIDAR_BASE_URL, padrãohttps://validar.iti.gov.brVALIDAR_TIMEOUT_SECONDS, padrão190VALIDAR_MAX_CONCURRENCY, padrão2MAX_UPLOAD_MB, padrão10MAX_BATCH_MB, padrão30MAX_FILES_PER_REQUEST, padrão10VALIDAR_PROXY_URL, proxy HTTP(S) opcional para chamadas ao VALIDARVALIDAR_USE_SIMPLE_REPORT, padrãotrueUSER_AGENT, user-agent enviado ao VALIDAR
Quando VALIDAR_USE_SIMPLE_REPORT=true, o fluxo usa /arquivo ou /url e em
seguida /simples, que é a fonte dos dados da visão "Simples" do
relatorio.html.
Quando VALIDAR_USE_SIMPLE_REPORT=false, a biblioteca pula /simples e mapeia
localmente a resposta bruta para reduzir tráfego.
Testes
python -m pytest
Teste real opcional contra o VALIDAR:
RUN_LIVE_VALIDAR_TESTS=1 python -m pytest tests/test_live_validar.py
Licença
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file validar_iti-1.0.0.tar.gz.
File metadata
- Download URL: validar_iti-1.0.0.tar.gz
- Upload date:
- Size: 13.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a26a84ce12f4845f69993efb30f6086fb1d87377eaf74905e31554f20711500
|
|
| MD5 |
afb30db2e26f3f9ccf58c7ffee03aeb9
|
|
| BLAKE2b-256 |
81c5bf40960e7e31d315da4c8fbf4d97f5bc8c8b00688aacc22c828ce98d2c6d
|
File details
Details for the file validar_iti-1.0.0-py3-none-any.whl.
File metadata
- Download URL: validar_iti-1.0.0-py3-none-any.whl
- Upload date:
- Size: 13.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6afbb37e4cf4d436b2caa299191e6f7b020847938ba5883e2c555092df04ba62
|
|
| MD5 |
6e5cb3a05d10da70c783514f074ffd6f
|
|
| BLAKE2b-256 |
e850568225c0d6872470f9519f9ba8c4c3cea02829eb75b35e5580222c001467
|