Skip to main content

Cliente y CLI de la API interna del buscador PETETE de la DGT (consultas vinculantes de Tributos)

Project description

dgt-petete

CI License: MIT

Client and CLI for PETETE, the binding-rulings search engine of the Spanish tax authority (DGT). Docs are in Spanish, as is the subject matter.

Cliente + CLI para el buscador PETETE de la Dirección General de Tributos (petete.tributos.hacienda.gob.es), que publica las consultas vinculantes del sistema tributario español. Busca y descarga el texto oficial de las consultas (p. ej. las del Art. 36 / 39.7 LIS que fundamentan la deducibilidad de gastos en incentivos fiscales culturales).

PETETE no expone una API pública; este paquete replica los tres endpoints internos de su buscador por HTTP, así que no hace falta navegador ni servidor.

Instalación

Nada que instalar si usas uv: ejecútalo al vuelo desde este repo.

uvx --from git+https://github.com/hulahoop-media/dgt-petete dgt-petete search \
  --normativa "Ley 27/2014" --freetext "producciones cinematográficas"

O instálalo como paquete:

pip install git+https://github.com/hulahoop-media/dgt-petete
# después:
dgt-petete download V2144-18 V0189-20 --out ./corpus

Uso: CLI

# Buscar (combina campos; devuelve una línea "Nº<TAB>docid" por consulta)
dgt-petete search --normativa "Ley 27/2014" --freetext "artes escénicas y musicales"

# Descargar el texto verbatim de una o más consultas a .txt
dgt-petete download V2144-18 V0189-20 --out ./corpus

Flags de search: --freetext, --normativa, --cuestion, --hechos, --num, --tab (1=generales, 2=vinculantes, por defecto 2).

Uso: librería

from dgt_petete import search, download

hits = search(normativa="Ley 27/2014", freetext="producciones cinematográficas")
# -> [("V0006-17", "54874"), ("V0018-17", "54885"), ...]

texto = download("V2144-18")   # texto oficial completo de la consulta

Plugin de Claude Code

El repo es también un marketplace de plugins de Claude Code. Instala el plugin y tu Claude podrá buscar y descargar consultas DGT a demanda (sin MCP):

/plugin marketplace add hulahoop-media/dgt-petete
/plugin install dgt-petete@dgt-petete

El plugin (plugins/dgt-petete/) empaqueta un skill que envuelve esta CLI y la ejecuta vía uvx desde este mismo repo, sin que haga falta clonar nada.

Cómo funciona (API interna, ingeniería inversa)

El buscador de PETETE (Knosys) llama a tres endpoints:

Endpoint Qué hace
GET /consultas/do/form Establece la sesión (cookie)
POST /consultas/do/search Busca. Devuelve HTML con viewDocument(<docid>, <tab>) y updateNumResults("2","<total>")
POST /consultas/do/document Texto completo de una consulta (requiere el docid)

Detalles no obvios (sin ellos no funciona):

  • /do/document responde 401 sin cabeceras de AJAX (X-Requested-With: XMLHttpRequest + Referer).
  • El operador entre campos es OPCMP_n=.Y (con punto inicial), no Y.
  • Los valores van doble-codificados: el JS hace encodeURI sobre un string ya serializado, así que hay que quote_plus(v) y luego escapar los %. Sin esto, combinar dos campos devuelve HTTP 400.
  • tab: 1 = consultas generales, 2 = consultas vinculantes.
  • El servidor no envía el certificado intermedio de su cadena TLS (FNMT-RCM), así que curl y requests no lo validan de serie. El paquete incluye la cadena pública de la FNMT (dgt_petete/fnmt-chain.pem) y verifica contra ella por defecto; se puede sobrescribir con new_session(verify=...).

Desarrollo

git clone https://github.com/hulahoop-media/dgt-petete
cd dgt-petete
uv sync            # instala el paquete + dependencias de desarrollo
uv run pytest      # tests
uv run ruff check .

Ver CONTRIBUTING.md para la convención de commits y cómo proponer cambios.

Aviso

Herramienta no oficial que consulta datos públicos de la sede electrónica de la Agencia Tributaria. Úsala con moderación (las descargas ya espacian las peticiones). No afiliada a la AEAT ni a la DGT.

Licencia

MIT. Ver LICENSE.


Hecho por Hulahoop Media 🎪

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dgt_petete-0.2.0.tar.gz (15.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dgt_petete-0.2.0-py3-none-any.whl (12.6 kB view details)

Uploaded Python 3

File details

Details for the file dgt_petete-0.2.0.tar.gz.

File metadata

  • Download URL: dgt_petete-0.2.0.tar.gz
  • Upload date:
  • Size: 15.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for dgt_petete-0.2.0.tar.gz
Algorithm Hash digest
SHA256 0b786279bb6347710a5f7f3d04f4c6b6eafc74159e32ce8f61b8b18a6cb13c81
MD5 56f08f8cb50b6fcc8bb5a491069ae48c
BLAKE2b-256 60e1d10a1b2a8b276e461ad254846358380be25bcfe5b530baa22c89c66bc1ef

See more details on using hashes here.

File details

Details for the file dgt_petete-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: dgt_petete-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 12.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for dgt_petete-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 60bdad3548ced583fe59e741bb566b3748808c88d34d7a92ac9cafab70bc3b32
MD5 8051361f3217a3594ff374e4e039159d
BLAKE2b-256 fe450a921889f18ba6117e2c52ba38472ee190df476d479e5569fa7ffeb3691b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page