Código fuente para apigatewaycl.api_client.previred.indicadores

#
# API Gateway: Cliente de API en Python.
# Copyright (C) API Gateway <https://www.apigateway.cl>
#
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
# bajo los términos de la GNU Lesser General Public License (LGPL) publicada
# por la Fundación para el Software Libre, ya sea la versión 3 de la Licencia,
# o (a su elección) cualquier versión posterior de la misma.
#
# Este programa se distribuye con la esperanza de que sea útil, pero SIN
# GARANTÍA ALGUNA; ni siquiera la garantía implícita MERCANTIL o de APTITUD
# PARA UN PROPÓSITO DETERMINADO. Consulte los detalles de la GNU Lesser General
# Public License (LGPL) para obtener una información más detallada.
#
# Debería haber recibido una copia de la GNU Lesser General Public License
# (LGPL) junto a este programa. En caso contrario, consulte
# <http://www.gnu.org/licenses/lgpl.html>.
#

"""
Módulo para los Indicadores Previsionales de Previred.

Para más información sobre la API, consulte la `documentación completa
de Previred <https://www.apigateway.cl/docs>`_.
"""

from __future__ import annotations

from typing import Any

from .. import ApiBase, ApiResponse


[documentos] class Indicadores(ApiBase): """Cliente para los indicadores previsionales de Previred."""
[documentos] def periodos(self) -> ApiResponse[list[dict[str, Any]]]: """ Listado de URLs del PDF de los indicadores previsionales. Respuesta (ejemplo):: { "data": [ { "url": "https://www.previred.com/wp-content/u...", "periodo": "202501" } ], "metadata": {"timestamp": "..."} } :return: Respuesta de la API, con `data` y `metadata`. En `data`, listado de indicadores con su URL de PDF y período. :rtype: ApiResponse[list[dict[str, Any]]] """ response = self.client.get('/previred/indicadores/periodos') return self._json(response)
[documentos] def pdf(self, periodo: str) -> bytes: """ PDF de un indicador previsional. :param str periodo: Período del indicador (AAAAMM). :return: Contenido del PDF del indicador. :rtype: bytes """ url = '/previred/indicadores/pdf/%(periodo)s' % {'periodo': periodo} response = self.client.get(url) return response.content
[documentos] def data(self, periodo: str) -> ApiResponse[dict[str, Any]]: """ Datos de un indicador previsional. Las tasas se entregan como fracción (`0.0144` equivale a `1,44%`) y los montos en pesos. Respuesta (ejemplo):: { "data": { "indicadores": { "moneda": { "CLF": 40873.77, "UTM": 71649, "UTA": 859788, "periodo_anterior": {"CLF": 40844.79} }, "afc": { "plazo_indefinido_empleador": 0.024, "plazo_indefinido_trabajador": 0.006, "plazo_fijo_empleador": 0.03, "plazo_fijo_trabajador": 0, "superior_11_anios_empleador": 0.008, "...": "..." }, "afp": { "empleador": 0.001, "trabajador": 0.1, "comision": { "03": 0.0144, "05": 0.0127, "08": 0.0145, "29": 0.0116, "33": 0.0144, "...": "..." }, "sis": 0.0178 }, "apv": {"tope_mensual": 2043689, "tope_anual": 24524262}, "asignacion_familiar": { "tramo_a_hasta": 649039, "tramo_a_monto": 22601, "tramo_b_hasta": 947990, "tramo_b_monto": 13870, "tramo_c_hasta": 1478539, "...": "..." }, "deposito_convenido": {"tope_anual": 36786393}, "renta_imponible_minima": { "general": 553553, "menores_18_mayores_65": 412938, "casa_particular": 553553, "fines_no_remuneracionales": 356815 }, "renta_imponible_tope": { "afp": 3678639, "inp": 2450687, "afc": 5526134 }, "...": "..." }, "periodo": "202608", "periodo_anterior": "202607", "periodo_siguiente": "202609" }, "metadata": {"timestamp": "..."} } :param str periodo: Período del indicador (AAAAMM). :return: Respuesta de la API, con `data` y `metadata`. En `data`, períodos, moneda (UF/UTM/UTA), renta imponible, AFP, seguro de cesantía, seguro social, otras cotizaciones, ahorro previsional y asignación familiar. :rtype: ApiResponse[dict[str, Any]] """ url = '/previred/indicadores/data/%(periodo)s' % {'periodo': periodo} response = self.client.get(url) return self._json(response)