---
title: "Registro de cambios del API de Python"
canonical: "https://onesaitplatform-es.refined.site/space/DOC/5063573515/Registro%20de%20cambios%20del%20API%20de%20Python"
format: markdown
---
# Changelog

## [Versión 1.4.15](https://pypi.org/project/onesaitplatform-client-services/1.4.15/)  
[Versión 1.4.14](https://pypi.org/project/onesaitplatform-client-services/1.4.14/)

En estas versiones se han llevado a cabo cambios relacionadas con el manejo de excepciones y registros de la librería.

Aunque no se incluyen nuevos métodos o correcciones, se recomienda actualizar a la última versión disponible.

---

## [Versión 1.4.13](https://pypi.org/project/onesaitplatform-client-services/1.4.13/)

Se ha revisado la clase `ApiManager` y se ha observado que los *endpoints* a los que apuntaba no eran los correctos. Por ello, se han cambiado a otros que ofrecen la misma funcionalidad, pero pertenecientes al Control Panel:

- ***find***: busca una API REST, indicando la identificación (nombre) y la versión. Si la encuentra, devuelve la información de la API; si no la encuentra, devuelve un error. El endpoint se actualizó a `/api/apis/{id}`.
- ***create***: crea una nueva API REST, pasando un objeto JSON como parámetro. Realiza un POST al *endpoint* `/api/apis`.
- ***delete***: elimina una API, proporcionando la identificación y la versión de la API a borrar. La solicitud se realiza a `/api/apis/{identification}`.
- ***list***: lista todas las APIs, tanto las del usuario como las públicas, a menos que se especifique un usuario determinado. La solicitud se realiza mediante un GET a `/api/apis`.
- ***request***: esta función funciona correctamente, por lo que se mantiene tal como estaba.

---

## [Versión 1.4.12](https://pypi.org/project/onesaitplatform-client-services/1.4.12/)

 En la clase `DigitalClient` se realizan las siguientes funciones:

- ***raw_query_file***: realiza una llamada al *endpoint* `/REST/Ontology/{ontology}/file` del Digital Broker, solicitando como parámetros la ontología (la Entidad), la sentencia a ejecutar, el tipo de sentencia (SQL o NATIVA) y el destino del archivo a generar (DISK, S3_MINIO o URL). Se realiza para generar un archivo JSON con la información sobre la consulta solicitada sobre una Entidad.
- ***query_file***: realiza la llamada a `raw_query_file`, maneja la respuesta y devuelve un estado de éxito junto con los datos obtenidos, o un mensaje de error en caso de fallo. Requiere los mismos parámetros que `raw_query_file`: la Entidad (ontología), la sentencia a ejecutar, el tipo de sentencia (SQL o NATIVA) y el destino del archivo a generar (DISK, S3_MINIO o URL).
- ***raw_query_file_status***: realiza una llamada al *endpoint* `/rest/ontology/file/{queryId}/status`, solicitando como parámetro el queryId. Si la solicitud se realiza correctamente, puede devolver dos posibles valores: **FINISHED** o **IN_PROGRESS**.
- ***query_file_status***: llama a la función `raw_query_file_status`, maneja la respuesta y devuelve un estado de éxito con los datos obtenidos o un mensaje de error en caso de fallo. Requiere el mismo parámetro que `raw_query_file_status`: el queryId. Además, se pueden proporcionar de manera opcional los parámetros «*timeout»* y «*timesleep»*. La función irá llamando a `raw_query_file_statu` repetidamente; si la respuesta es **IN_PROGRESS**, esperará el tiempo indicado en «*timesleep*» antes de realizar nuevamente la solicitud. Este proceso se repetirá hasta que la respuesta sea **FINISHED** o se alcance el límite de tiempo establecido en «*timeout*». Por defecto, el *timeout* es de 60 segundos y el *timesleep* de 5 segundos.

En la clase `FileManager` se realizan las siguientes funciones: 

- ***download_file_minio***: realiza una llamada al panel de control, al *endpoint* `/api/objectstorage`, para descargar un archivo desde MinIo, pasando el «*filepath*». Maneja la respuesta y, en caso de éxito, guarda el contenido en un parámetro llamado «*json_data*», para su posterior uso. En caso de fallo, devuelve un mensaje de error.
- ***to_pandasdataframe***: toma el valor de «*json_data*» (o cualquier otra lista o diccionario) que se recoge con la función anterior y «aplana» su estructura. Esto permite una mejor visualización al crear el `DataFrame` con Pandas. Se puede especificar el tipo de separador a usar, aunque por defecto será el punto («.»).