{ "openapi": "3.0.0", "info": { "description": "Las APIs regulatorias basadas en PSD2 proporcionan acceso a cierta información financiera como saldos de cuentas bancarias y transacciones. Sin embargo, hay otras fuentes de información patrimonial que no son accesibles por estas APIs. La API de Wealth Reader amplía la información ofrecida por las APIs regulatorias proporcionando acceso en tiempo real a las fuentes patrimoniales adicionales en cualquier entidad del mundo. Existen otros dos documentos relacionados que te ayudarán a integrar la API de Wealth Reader. Uno es la guía de integración del widget Javascript: https://docs-es.wealthreader.com/ y el otro una colección Postman basada en esta documentación.\nMuy importante: Esta definición de la API está adaptada para los clientes que integran por Widget, por lo que se han omitido algunos parámetros que no son necesarios para este tipo de integración, como pueden ser los de autenticación con el banco, ya que se utilizará token.\n", "version": "8.1.3", "title": "Wealth Reader", "contact": { "email": "info@wealthreader.com" } }, "tags": [ { "name": "Core", "description": "API principal requerida para integraciones estándar" }, { "name": "Advanced", "description": "Endpoints opcionales no requeridos para integraciones estándar. Usar solo si Wealth Reader lo indica explícitamente." } ], "paths": { "/entities/": { "post": { "tags": [ "Core" ], "summary": "Obtiene los activos financieros y el detalle de su composición", "description": "Obtiene los activos financieros y el detalle de su composición de carteras de inversión compuestas por acciones o fondos, tarjetas de crédito, seguros y préstamos. Incluye información de titularidad de cada uno de los activos así como identificadores únicos que facilitan el tratamiento del dato. Es posible obtener datos Mock. Consulte con el equipo técnico cómo hacerlo.\n", "requestBody": { "content": { "application/x-www-form-urlencoded": { "schema": { "type": "object", "properties": { "api_key": { "type": "string", "description": "Identifica al cliente en el servicio", "example": "12345678" }, "code": { "type": "string", "description": "Nombre de la entidad. El listado completo está disponible con GET", "example": "caixabank" }, "token": { "type": "string", "description": "Identifica la credencial custodiada. El flujo mediante el cual se ha obtenido el token se describe en el documento 'Guía de integración del Widget'. Los siguientes usuarios Mock están disponibles: MOCKDATA, respuesta OK; MOCKOTP, respuesta con desafío OTP; MOCKLOGINKO, respuesta con error de login", "example": "MOCKDATA" }, "product_types": { "type": "string", "enum": [ "accounts", "portfolios", "cards", "receipts", "loans", "factoring", "confirming", "properties", "invoices", "files" ], "description": "Lista de tipos de producto de los que se desea obtener información. Acepta múltiples valores separados por comas.", "example": "accounts,portfolios" }, "only_balances": { "type": "boolean", "default": false, "description": "Indica si se desean obtener solo los saldos de los productos en lugar de toda la información disponible. Valor por defecto: false.", "example": false }, "date_from": { "type": "string", "format": "date", "description": "Fecha a partir de la cual se solicitan las transacciones, en formato AAAA-MM-DD. Debe ser una fecha anterior a hoy.", "example": "2024-01-01" }, "date_to": { "type": "string", "format": "date", "description": "Esto solo aplica para restringir por fechas futuras para productos loan y confirming, en formato AAAA-MM-DD. La fecha debe ser posterior a hoy", "example": "2025-12-31" }, "required_products_schema": { "type": "string", "description": "Esquema de productos requeridos. Indica las cuentas o tarjetas de las que se desea obtener datos, con configuraciones adicionales.", "example": "{\"ACCOUNTS\":{\"0ae4d722b1c82feeafb4b36b2893230444071335\":{\"only_balances\":false,\"add_pdf_from_uuids\":[\"90763109952d4f2ebece8dceca8254078c5384a0\"],\"date_from\":\"2024-04-03\"}},\"CARDS\":{\"957e6f63546f3fecacce80192b6f7436496dc057\":{}}}" }, "add_pdf_from_uuids": { "type": "string", "description": "Acepta uuids de transacciones separados por comas. Parámetro que solo se tiene en cuenta si product_types es ALL o incluye accounts. Añade el documento PDF asociado a cada una de las transacciones bancarias solicitadas.", "example": "20966426721d0885ef9d4b95535e1d3198936f16,8772d6c978d37d7af83094abf380b8b703e94105,e59296b79e7f80cec26679d2c65883025fd59295" } } }, "example": { "api_key": "12345678", "code": "caixabank", "token": "MOCKDATA", "product_types": "accounts,portfolios", "date_from": "2024-01-01" } } } }, "responses": { "200": { "description": "data obtained from the entity", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/entity-data" } } } } }, "400": { "description": "error", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/error" } } } } } } }, "get": { "tags": [ "Advanced" ], "x-internal": true, "summary": "Obtiene el listado de entidades soportadas", "description": "Obtiene el listado de entidades soportadas y la información necesaria para dibujar el formulario de login de la entidad.\n", "operationId": "getEntities", "parameters": [ { "name": "show_only_tested", "in": "query", "description": "Indicates whether to show only tested entities. Default value is 0. In production environments, always use 1.", "required": false, "schema": { "type": "integer", "enum": [ 0, 1 ], "default": 0 } } ], "responses": { "200": { "description": "list of entities", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/entities" } } } } }, "400": { "description": "error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } } } }, "/entities/category-types/": { "get": { "tags": [ "Core" ], "summary": "Listado de tipos de transacción", "parameters": [ { "name": "lang", "in": "query", "description": "Response language", "required": false, "schema": { "type": "string", "default": "es", "enum": [ "es", "en" ] } } ], "responses": { "200": { "description": "Category types with their description", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/category-types" } } } } }, "400": { "description": "error", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/error" } } } } } } } }, "/tokens/": { "post": { "tags": [ "Core" ], "summary": "Consulta los tokens asociados a una api_key", "description": "Usa este método para consultar todos los tokens vinculados a una `api_key` específica. Los resultados se devuelven en bloques de 500 tokens por página.", "operationId": "queryTokensByApiKey", "requestBody": { "required": true, "content": { "application/x-www-form-urlencoded": { "schema": { "type": "object", "properties": { "api_key": { "type": "string", "description": "api_key para identificar al cliente en el servicio", "example": "12345678" }, "page": { "type": "number", "description": "Especifica el **número de página** que deseas recuperar. Cada página contiene hasta 500 tokens. Si no se proporciona, el valor por defecto es `1`.", "example": 2 } } }, "example": { "api_key": "12345678", "page": 1 } } } }, "responses": { "200": { "description": "Lista de tokens asociados con la api_key proporcionada", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "token": { "type": "string", "description": "Token" }, "entity_code": { "type": "string", "description": "Código de la entidad del token" }, "created_at": { "type": "string", "format": "date-time", "description": "Fecha de creación del token" }, "accesed_at": { "type": "string", "format": "date-time", "description": "Fecha del último acceso del token" }, "times_accesed": { "type": "integer", "description": "Número de veces que se ha accedido al token" }, "latest_code": { "type": "integer", "description": "Código de respuesta más reciente" }, "latest_session": { "type": "string", "description": "ID de la última sesión asociada al token en formato hexadecimal" } } } } } } }, "400": { "description": "Solicitud incorrecta, parámetros inválidos", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "401": { "description": "No autorizado, api_key incorrecta", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "500": { "description": "Error interno del servidor", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } } } }, "/tokens/revoke/": { "post": { "tags": [ "Core" ], "summary": "Revocar un token", "description": "Este método permite revocar un token existente para desautorizar futuras solicitudes de acceso a la API.", "operationId": "revokeToken", "requestBody": { "required": true, "content": { "application/x-www-form-urlencoded": { "schema": { "type": "object", "properties": { "api_key": { "type": "string", "description": "Identifica al cliente en el servicio" }, "token": { "type": "string", "description": "Token a revocar." } } } } } }, "responses": { "200": { "description": "Token revocado correctamente", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "message": { "type": "string", "example": "Token successfully revoked." } } } } } }, "400": { "description": "Solicitud incorrecta, parámetros inválidos", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/error" } } } } }, "401": { "description": "No autorizado, token inválido o ya revocado", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/error" } } } } }, "500": { "description": "Error interno del servidor", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } } } }, "/tokens/reasign/": { "post": { "tags": [ "Core" ], "summary": "Reasignar un token a una api_key diferente", "description": "Este método permite reasignar un token de una api_key a otra.", "operationId": "reasignToken", "requestBody": { "required": true, "content": { "application/x-www-form-urlencoded": { "schema": { "type": "object", "properties": { "api_key_source": { "type": "string", "description": "api_key desde la cual reasignar el token.", "example": "12345678" }, "api_key_target": { "type": "string", "description": "api_key a la cual reasignar el token.", "example": "87654321" }, "token": { "type": "string", "description": "Token a reasignar.", "example": "FRJ0mHlaqZwLzu" } } }, "example": { "api_key_source": "12345678", "api_key_target": "87654321", "token": "FRJ0mHlaqZwLzu" } } } }, "responses": { "200": { "description": "Token reasignado correctamente", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "message": { "type": "string", "example": "Token successfully reassigned." } } } } } }, "400": { "description": "Solicitud incorrecta, parámetros inválidos", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/error" } } } } }, "401": { "description": "No autorizado, api_key incorrecta", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/error" } } } } }, "500": { "description": "Error interno del servidor", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } } } }, "/domains/": { "post": { "tags": [ "Core" ], "summary": "Añadir un nuevo dominio", "description": "Añade la asociación entre dominio que hospedará el widget con el webhook de destino. Por seguridad, las operaciones de editar y borrar solamente son posibles solicitándolo a soporte", "operationId": "addDomain", "requestBody": { "required": true, "content": { "application/x-www-form-urlencoded": { "schema": { "type": "object", "properties": { "method": { "type": "string", "description": "Method to execute.", "example": "add" }, "api_key": { "type": "string", "description": "User's API key.", "example": "12345678" }, "domain": { "type": "string", "description": "Domain to add.", "example": "http://desarrollo.cliente.es" }, "url_callback": { "type": "string", "description": "URL for callback.", "example": "https://desarrollo.cliente.es/hooks/wealthreader" }, "tokenize": { "type": "string", "description": "Indicates whether to tokenize or not.", "example": "1" } }, "required": [ "method", "api_key", "domain", "url_callback", "tokenize" ] }, "example": { "method": "add", "api_key": "12345678", "domain": "https://www.cliente.com", "url_callback": "https://www.cliente.com/webhooks/wealthreader", "tokenize": "1" } } } }, "responses": { "200": { "description": "Domain successfully added", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "message": { "type": "string" } } } } } }, "400": { "description": "Bad request, invalid parameters" }, "401": { "description": "Unauthorized, incorrect API key" }, "500": { "description": "Internal server error" } } } }, "/error-codes/": { "get": { "tags": [ "Core" ], "summary": "Listado de códigos de error", "description": "Listado de códigos de error. Presta especial atención a que no todos los códigos de error deben recibir el mismo tratamiento por parte de tu aplicación. Ante un error de password incorrecto no debes reintentar la llamada con los mismos parámetros, pero ante un error que te indique que la entidad está en mantenimiento sí puedes reintentarlo. Pide una sesión técnica con nuestro equipo para resolver cualquier duda sobre la gestión de errores.\n", "parameters": [ { "name": "lang", "in": "query", "description": "Response language", "required": false, "schema": { "type": "string", "default": "es", "enum": [ "es", "en" ] } } ], "responses": { "200": { "description": "Error codes with their description, possible cause, and how to proceed", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/warning-error-codes" } } } } }, "400": { "description": "error", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/error" } } } } } } } }, "/warning-codes/": { "get": { "tags": [ "Core" ], "summary": "Listado de códigos de warning", "description": "Listado de códigos de warning.\n", "parameters": [ { "name": "lang", "in": "query", "description": "Response language", "required": false, "schema": { "type": "string", "default": "es", "enum": [ "es", "en" ] } } ], "responses": { "200": { "description": "Error codes with their description, possible cause, and how to proceed", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/warning-error-codes" } } } } }, "400": { "description": "error", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/error" } } } } } } } }, "/verify/iban-ownership/": { "post": { "tags": [ "Advanced" ], "x-internal": true, "summary": "Verifica la titularidad de una cuenta bancaria mediante IBAN", "description": "Permite verificar si una persona física o jurídica es titular de una cuenta bancaria específica mediante el IBAN y los datos identificativos del supuesto titular.\n", "requestBody": { "required": true, "content": { "application/x-www-form-urlencoded": { "schema": { "type": "object", "properties": { "api_key": { "type": "string", "description": "Identifies the client in the service" }, "iban": { "type": "string", "description": "IBAN code of the bank account to verify (without spaces)", "example": "ES4914651234561234567890" }, "document_type": { "type": "string", "description": "Type of identification document", "enum": [ "NIF", "NIE", "Pasaporte", "CIF" ] }, "document_number": { "type": "string", "description": "Identification document number", "example": "12345678Z" }, "holder_name": { "type": "string", "description": "Full name of the natural person or company name", "example": "LUIS GARCIA BAQUERO" } }, "required": [ "api_key", "iban", "document_type", "document_number", "holder_name" ] }, "example": { "api_key": "12345678", "iban": "ES4914651234561234567890", "document_type": "NIF", "document_number": "12345678Z", "holder_name": "LUIS GARCIA BAQUERO" } } } }, "responses": { "200": { "description": "Verification result", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "result": { "type": "object", "properties": { "code": { "type": "integer", "description": "Verification result code", "example": 1 }, "message": { "type": "string", "description": "Descriptive message of the result", "example": "The IBAN belongs to the indicated holder" } } }, "statistics": { "$ref": "#/components/schemas/statistics" } } } } } }, "400": { "description": "Request error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } } } }, "/user/register/": { "post": { "tags": [ "Advanced" ], "x-internal": true, "summary": "Registrar un nuevo usuario", "description": "Este endpoint permite registrar un usuario ya sea en la plataforma de traspaso de carteras, Easytransfer, como en la herramienta de reporting, Acumulas, en a partir de un identificador único.", "operationId": "registerUser", "requestBody": { "required": true, "content": { "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/register-user-request" } } } }, "responses": { "200": { "description": "User registered successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/register-user-response" } } } }, "400": { "description": "Bad request (e.g., missing required fields)", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error-response" } } } }, "401": { "description": "Invalid API key", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error-response" } } } } } } }, "/user/check/": { "post": { "tags": [ "Advanced" ], "x-internal": true, "summary": "Consultar el estado de registro de un usuario", "description": "Consulta si un usuario está registrado en el sistema Easytransfer o Acumulas y responde el enlace de acceso único para el usuario.", "operationId": "checkUser", "requestBody": { "required": true, "content": { "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/check-user-request" } } } }, "responses": { "200": { "description": "User status returned successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/check-user-response" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error-response" } } } }, "401": { "description": "Invalid API key", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error-response" } } } } } } }, "/user/revoke/": { "post": { "tags": [ "Advanced" ], "x-internal": true, "summary": "Método para dar de baja un usuario previamente registrado", "description": "Este endpoint permite dar de baja un usuario del servicio de Easytransfer o plataforma Acumulas.", "operationId": "revokeUser", "requestBody": { "required": true, "content": { "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/revoke-user-request" } } } }, "responses": { "200": { "description": "User unregistered successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/revoke-user-response" } } } }, "400": { "description": "Bad request (e.g., missing required fields)", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error-response" } } } }, "401": { "description": "Invalid API key", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error-response" } } } } } } }, "/batch/load/": { "post": { "tags": [ "Advanced" ], "x-internal": true, "summary": "Carga de conexiones en batch", "description": "Los endpoints agrupados en la etiqueta \"batch\" permiten procesar múltiples conexiones bancarias de forma asíncrona,\na diferencia del método `/entities/` que es síncrono. Ideal para:\n- Procesar grandes volúmenes de conexiones, delegando el proceso en Wealthreader\n- Evitar timeouts en conexiones lentas\n- Obtener notificaciones cuando finaliza el procesamiento\n\n**Importante**: Para utilizar la gestión de procesos batch del lado de Wealthreader es necesario contar con un entorno dedicado. Este endpoint no está disponible en api.wealthreader.com.\n\nEste método inicia el procesamiento asíncrono de una o múltiples conexiones bancarias.\nRetorna inmediatamente un batch_id para seguimiento.\n", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "api_key", "notification_url", "connections" ], "properties": { "api_key": { "type": "string", "description": "Identifies the client in the service", "example": "12345678" }, "notification_url": { "type": "string", "format": "uri", "description": "URL where notification will be sent when batch processing finishes", "example": "https://example.com/webhook/batch-complete" }, "connections": { "type": "array", "minItems": 1, "description": "List of connections to process", "items": { "$ref": "#/components/schemas/batch-connection" } } } }, "example": { "api_key": "12345678", "notification_url": "https://example.com/webhook/batch-complete", "connections": [ { "code": "caixabank", "token": "token123", "product_types": "accounts,portfolios" }, { "code": "BBVA", "token": "token456", "product_types": "accounts", "date_from": "2024-01-01" } ] } } } }, "responses": { "202": { "description": "Batch accepted for processing", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "batch_id": { "type": "string", "description": "Unique batch identifier", "example": "batch_20250120_a1b2c3d4" }, "total_connections": { "type": "integer", "description": "Total number of connections in the batch", "example": 5 }, "estimated_completion_time": { "type": "string", "format": "date-time", "description": "Estimated completion time", "example": "2025-01-20T10:45:00Z" } } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } } } }, "/batch/fetch/statistics/": { "post": { "tags": [ "Advanced" ], "x-internal": true, "summary": "Obtiene estadísticas generales sobre las conexiones de un batch", "description": "Recupera estadísticas generales sobre el resultado del procesamiento de todas las conexiones de un batch.", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "api_key", "batch_id" ], "properties": { "api_key": { "type": "string", "description": "Identifies the client in the service" }, "batch_id": { "type": "string", "description": "Batch ID" } } } } } }, "responses": { "200": { "description": "Batch results", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "batch_id": { "type": "string", "example": "batch_20250120_a1b2c3d4" }, "status": { "type": "string", "example": "completed", "enum": [ "pending", "processing", "completed" ] }, "statistics": { "type": "object", "properties": { "start_time": { "type": "string", "format": "date-time" }, "end_time": { "type": "string", "format": "date-time" }, "total_execution_time": { "type": "number", "description": "Total time in seconds", "example": 125.5 }, "total_connections": { "type": "integer", "example": 8 }, "successful_connections": { "type": "integer", "example": 7 }, "failed_connections": { "type": "integer", "example": 1 } } } } } } } }, "404": { "description": "Batch not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } } } }, "/batch/fetch/connection-result/": { "post": { "tags": [ "Advanced" ], "x-internal": true, "summary": "Obtiene el resultado individual de una conexión específica dentro de un batch", "description": "Recupera el resultado de una conexión específica del batch.", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "api_key", "batch_id", "credential_id" ], "properties": { "api_key": { "type": "string", "description": "Identifies the client in the service" }, "batch_id": { "type": "string", "description": "Batch ID" }, "credential_id": { "type": "string", "description": "Filter by specific credential_id" } } } } } }, "responses": { "200": { "description": "data obtained from the entity", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/entity-data" } } } }, "400": { "description": "error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "Batch or connection not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } } } } }, "components": { "schemas": { "error": { "type": "object", "required": [ "success", "error", "statistics" ], "properties": { "success": { "type": "boolean", "example": false }, "error": { "$ref": "#/components/schemas/error-detail" }, "statistics": { "$ref": "#/components/schemas/statistics" } } }, "error-detail": { "type": "object", "required": [ "code", "message" ], "properties": { "code": { "type": "integer", "format": "unsigned", "example": 1000, "description": "The code indicates the error family. For example, from 2000 to 2999 indicate login problems. Each error code should be treated differently. For example, if the code indicates 'Incorrect login', the call should not be retried; if the code indicates 'entity under maintenance' it can be retried later. You can get the complete list in the error-codes method." }, "message": { "type": "string", "example": "Incorrect login", "description": "Text in the entity's language. It is safe to show to the user and in many cases will help them correct the error" } } }, "additional_info": { "type": "array", "items": { "type": "object", "description": "Contiene campos particulares del banco, con el nombre asignado por el banco", "properties": { "key": { "type": "string", "description": "Key of the additional information" }, "value": { "type": "string", "description": "Value of the additional information" } } } }, "statistics": { "type": "object", "required": [ "SESSION", "execution_time" ], "properties": { "SESSION": { "type": "string", "example": null, "description": "Always save this value, whether the connection is correct or not. It is necessary to obtain support" }, "execution_time": { "type": "number", "example": 0.958119869232178, "description": "Duration of execution" }, "warnings": { "type": "array", "description": "Indicates warnings, not problems, found during information extraction. It is relevant to store them to improve support", "items": { "type": "object", "properties": { "code": { "type": "integer", "format": "unsigned", "example": 1000, "description": "You can get the complete list in the error-codes method." }, "message": { "type": "string", "example": "No contracted funds", "description": "Text describing the warning" }, "product_type": { "type": "string", "example": "portfolios", "enum": [ "user_information", "accounts", "portfolios", "bonds", "cards", "receipts", "loans", "deposits", "leases", "factoring", "confirming", "properties", "invoices", "files", "contracts", "unknown" ], "description": "When retrieving what type of product the warning has been generated for" } } } }, "operation_id": { "type": "string", "example": "1827C79229", "description": "The value will be indicated when the API has been invoked through the Widget provided by Wealth Reader. To learn more about this type of integration, visit: https://docs-en.wealthreader.com/" }, "token": { "type": "string", "example": "FRJ0mHlaqZwLzu", "description": "The value is indicated when credentials are tokenized for the first time" } } }, "entity-data": { "type": "object", "required": [ "success", "payload", "statistics" ], "properties": { "success": { "type": "boolean", "example": true }, "payload": { "type": "object", "properties": { "user_information": { "$ref": "#/components/schemas/user_information" }, "portfolios": { "$ref": "#/components/schemas/portfolios" }, "bonds": { "$ref": "#/components/schemas/bonds" }, "accounts": { "$ref": "#/components/schemas/accounts" }, "cards": { "$ref": "#/components/schemas/cards" }, "receipts": { "$ref": "#/components/schemas/receipts" }, "loans": { "$ref": "#/components/schemas/loans" }, "deposits": { "$ref": "#/components/schemas/deposits" }, "leases": { "$ref": "#/components/schemas/leases" }, "properties": { "$ref": "#/components/schemas/properties" }, "files": { "$ref": "#/components/schemas/files" }, "contracts": { "$ref": "#/components/schemas/contracts" }, "factoring": { "$ref": "#/components/schemas/factoring" }, "confirming": { "$ref": "#/components/schemas/confirming" }, "employment": { "$ref": "#/components/schemas/employment" }, "guarantees": { "$ref": "#/components/schemas/guarantees" } } }, "statistics": { "$ref": "#/components/schemas/statistics" } } }, "user_information": { "type": "object", "description": "Information related to the person logging in", "required": [ "ID", "name" ], "properties": { "ID": { "type": "string", "example": "12345678Z" }, "name": { "type": "string", "example": "LUIS GARCIA BAQUERO" }, "gender": { "type": "string", "enum": [ "male", "female" ], "example": "male" }, "birth_date": { "type": "string", "format": "date", "example": "1980-09-26" }, "birth_place": { "type": "string", "example": "Ibiza" }, "email": { "type": "string", "example": "lgarcia@gmail.com" }, "cell_phone": { "type": "string", "description": "Phone number with international prefix, without spaces", "example": "+34666123456" }, "address": { "type": "string", "example": "CALLE BAILEN 41 1A" }, "city": { "type": "string", "example": "MADRID" }, "country": { "type": "string", "example": "SPAIN" }, "postal_code": { "type": "string", "example": "28005" }, "marital_status": { "type": "string", "enum": [ "single", "married" ], "example": "married" }, "job": { "type": "string", "description": "The value here varies greatly from one entity to another: from indicating only if it is self-employment or employment to indicating the type of profession", "example": "CUENTA PROPIA" } } }, "portfolios": { "type": "array", "items": { "type": "object", "description": "Portfolios of stocks, funds, and pension plans", "required": [ "subtype", "uuid", "code", "name", "currency", "total_value", "weighted_return", "annualized_volatility", "yield", "contributions", "withholdings", "owners", "composition", "transactions" ], "properties": { "subtype": { "type": "string", "enum": [ "funds", "stocks", "pension-plans", "bonds", "alternative-investments" ], "example": "funds" }, "uuid": { "type": "string", "description": "Unique identifier, in relation to the user, assigned by Wealth Reader", "example": "05e4563f5bbf2d06efd0a29ebe7edbbb4e1bff63" }, "code": { "type": "string", "example": "1465010091400123456789" }, "name": { "type": "string", "example": "Fondo Dinámico" }, "currency": { "type": "string", "example": "EUR" }, "total_value": { "type": "number", "example": 3275.6 }, "weighted_return": { "type": "number", "example": 8.49 }, "annualized_volatility": { "type": "number", "description": "The value will be 0 when the entity does not provide it", "example": 0 }, "yield": { "type": "number", "example": 256.27 }, "contributions": { "type": "number", "example": 3019.33 }, "withholdings": { "type": "number", "example": 0 }, "contracting_date": { "type": "string", "format": "date", "example": "2016-04-27" }, "linked_account": { "type": "string", "description": "IBAN code without spaces. The value will be null when the entity does not provide it", "example": "ES4021005321592566566159" }, "owners": { "$ref": "#/components/schemas/owners" }, "composition": { "type": "object", "description": "Portfolio composition", "properties": { "currency": { "type": "string", "description": "Currency in ISO 4217 coding", "example": "EUR" }, "weighting": { "type": "number", "description": "Weight with respect to the rest of the portfolio composition", "example": 100 }, "shares": { "type": "number", "description": "Shares", "example": 225.0077 }, "price": { "type": "number", "description": "Current price", "example": 14.5577 }, "total_amount": { "type": "number", "description": "Total amount", "example": 3275.6 } } }, "transactions": { "type": "array", "items": { "type": "object", "required": [ "uuid", "value_date", "operation_type", "shares", "price", "total_amount", "reference_currency", "currency", "exchange_rate" ], "properties": { "uuid": { "type": "string", "description": "Unique identifier, in relation to the portfolio uuid, assigned by Wealth Reader", "example": "05e4563f5bbf2d06efd0a29ebe7edbbb4e1bff63" }, "operation_pending": { "type": "boolean", "description": "Indicated when subtype=stocks. Indicates whether the operation is pending execution or not.", "example": false }, "operation_date": { "type": "string", "format": "date", "example": "2020-01-30" }, "value_date": { "type": "string", "format": "date", "example": "2020-01-30" }, "operation_type": { "type": "string", "enum": [ "purchase", "sale", "subscription by transfer", "redemption by transfer", "scrip dividend", "capital increase", "equity rights", "equity fee", "equity adjustment" ], "example": "purchase" }, "shares": { "type": "number", "example": 1076.8273 }, "price": { "type": "number", "example": 11.1438 }, "total_amount": { "type": "number", "example": 12000, "minimum": 0, "description": "It is always an absolute value. The sign is defined by operation_type" }, "reference_currency": { "type": "string", "example": "EUR" }, "currency": { "type": "string", "example": "EUR" }, "exchange_rate": { "type": "number", "example": 1 } } } } } } }, "accounts": { "type": "array", "items": { "type": "object", "description": "Bank accounts", "required": [ "uuid", "code", "name", "currency", "owners", "balances", "transactions" ], "properties": { "uuid": { "type": "string", "example": "8076932f04f73e27fe608fee4d12fca8708dec8c" }, "subtype": { "type": "string", "enum": [ "checking", "savings", "line-of-credit" ], "example": "checking" }, "interest_rate": { "type": "number", "nullable": true, "example": 0.5, "description": "Tasa de interés de la cuenta, si aplica." }, "line_of_credit_details": { "type": "object", "description": "Detalles específicos para cuentas de línea de crédito. Solo disponible cuando subtype es line-of-credit", "nullable": true, "properties": { "credit_limit": { "type": "number", "nullable": true, "example": 50000, "description": "Límite de crédito" }, "interest_rate": { "type": "number", "nullable": true, "example": 4.5, "description": "Tipo de interés de la línea de crédito" }, "credit_used": { "type": "number", "example": 15000, "description": "Crédito utilizado" }, "credit_available": { "type": "number", "nullable": true, "example": 35000, "description": "Crédito disponible" }, "constitution_date": { "type": "string", "format": "date", "nullable": true, "example": "2021-05-20", "description": "Fecha de constitución de la línea de crédito" }, "expiration_date": { "type": "string", "format": "date", "nullable": true, "example": "2031-05-20", "description": "Fecha de vencimiento de la línea de crédito" } } }, "code": { "type": "string", "description": "IBAN code without spaces", "example": "ES4914651234561234567890" }, "name": { "type": "string", "example": "Cuenta NÓMINA" }, "currency": { "type": "string", "example": "EUR" }, "owners": { "$ref": "#/components/schemas/owners" }, "balances": { "type": "object", "properties": { "available": { "type": "number", "example": 14302.07 }, "current": { "type": "number", "example": 14302.07 } } }, "additional_info": { "$ref": "#/components/schemas/additional_info" }, "transactions": { "type": "array", "items": { "type": "object", "properties": { "uuid": { "type": "string", "description": "Unique identifier, in relation to the account uuid, assigned by Wealth Reader", "example": "d0c2ea4c072cf4d7b0fd494d7728260d736e6b25" }, "operation_date": { "type": "string", "format": "date", "example": "2022-12-30" }, "value_date": { "type": "string", "format": "date", "example": "2022-12-30" }, "amount": { "type": "number", "example": -1.1 }, "balance": { "type": "number", "example": 14302.07 }, "description": { "type": "string", "example": "Pago en TELPARK MADRID ES" }, "pdf_file": { "type": "string", "description": "Fichero PDF codificado en Base64 si se ha solicitado su obtención mediante el parámetro add_pdf_from_uuids" }, "pdf_file_final": { "type": "boolean", "description": "Indica si el fichero generado por el banco es definitivo (true) o si es provisional (false)" }, "categorization": { "type": "object", "description": "Información opcional relativa a categorización", "x-nullable": true, "properties": { "type": { "type": "integer", "example": 1, "description": "La relación completa de categorías se puede obtener en el método /entities/category-types/" }, "portfolio-uuid": { "type": "string", "x-nullable": true, "example": "1465010091400123456789" }, "ISIN": { "type": "string", "x-nullable": true, "example": "US88160R1014" } } }, "transfer_details": { "type": "object", "x-nullable": true, "description": "Este dato solo aparece cuando el movimiento es una transferencia. En caso de que sea una transferencia y esta información no aparezca, pero sí aparezca en la banca online, puede abrir un ticket para que la incorporemos.", "properties": { "concept": { "type": "string", "description": "Concepto que el ordenante o el emisor escribe", "example": "Pago de factura 12345" }, "sender_receiver": { "type": "string", "description": "Nombre del ordenante o destinatario", "example": "Juan Pérez" }, "account_number": { "type": "string", "description": "Número de cuenta del ordenante o destinatario", "example": "ESXX12341234121234567890" } } }, "additional_info": { "$ref": "#/components/schemas/additional_info" } } } } } } }, "cards": { "type": "array", "items": { "type": "object", "description": "Credit, debit, and prepaid cards", "required": [ "subtype", "uuid", "code", "name", "currency", "balances" ], "properties": { "status": { "type": "string", "enum": [ "active", "inactive", "cancelled", "locked" ], "example": "active" }, "subtype": { "type": "string", "enum": [ "credit", "debit", "prepaid" ], "example": "credit" }, "uuid": { "type": "string", "example": "aefd89eade0a6a09d9b8eab4c22da6a6a37632e6" }, "code": { "type": "string", "description": "Numbering with PCI compliance obfuscation", "example": "516097********1234" }, "name": { "type": "string", "example": "Credit Card" }, "currency": { "type": "string", "example": "EUR" }, "next_payment_date": { "type": "string", "format": "date", "description": "Fecha del próximo pago para tarjetas de crédito", "example": "2023-01-05" }, "anual_interest": { "type": "number", "description": "Tipo de interés anual", "example": 17.48 }, "tae": { "type": "number", "description": "Tasa Anual Equivalente (TAE)", "example": 18.95 }, "balances": { "type": "object", "properties": { "available": { "type": "number", "example": 3980 }, "limit": { "type": "number", "example": 4000 }, "disposed": { "type": "number", "example": 20 } } }, "linked_account": { "type": "string", "example": "ES4021005321592566566159" }, "owner": { "$ref": "#/components/schemas/owner" }, "additional_info": { "$ref": "#/components/schemas/additional_info" }, "transactions": { "type": "array", "items": { "type": "object", "required": [ "uuid", "value_date", "amount", "description" ], "properties": { "uuid": { "type": "string", "example": "78ceedca9cd9d2f2bfbb2439795ab6a1fcefc12b" }, "settled": { "type": "boolean", "description": "Indica si es un movimiento asentado por el banco, lo que significa que no cambiará en sucesivas lecturas", "example": false }, "operation_date": { "type": "string", "format": "date", "description": "Fecha de operación de la transacción", "example": "2022-12-28" }, "value_date": { "type": "string", "format": "date", "example": "2022-12-28" }, "amount": { "type": "number", "example": -20 }, "currency": { "type": "string", "description": "Divisa de la transacción", "example": "EUR" }, "exchange_rate": { "type": "number", "description": "Tipo de cambio aplicado a la transacción", "example": 1 }, "description": { "type": "string", "example": "Pago en AMZN MKTP ES123CM0ZM4" }, "categorization": { "type": "object", "nullable": true, "description": "Información de categorización si está disponible", "properties": { "type": { "type": "integer", "example": 0, "description": "Tipo de categoría según el método /entities/category-types/" } } }, "additional_info": { "$ref": "#/components/schemas/additional_info" } } } } } } }, "receipts": { "type": "array", "items": { "type": "object", "description": "Direct debit receipts", "required": [ "last_receipt_date", "issuer", "description", "account", "status", "amount", "pdf_file" ], "properties": { "last_receipt_date": { "type": "string", "format": "date", "example": "2023-07-23" }, "issuer": { "type": "string", "example": "Canal de Isabel II" }, "description": { "type": "string", "example": "RECIBO CONTRATO 328774628 FACTURA DEL 18 07 23" }, "account": { "type": "string", "example": "ES0123456789012345678901" }, "status": { "type": "string", "enum": [ "paid", "pending", "overdue" ], "example": "paid" }, "amount": { "type": "number", "example": 50.75 }, "pdf_file": { "type": "string", "description": "Fichero PDF codificado en Base64" }, "pdf_file_settled": { "type": "boolean", "description": "Indica si el fichero PDF generado por el banco es definitivo (true) o provisional (false). Hay bancos que generan un fichero PDF con menos información el día de la transacción y más tarde ofrecen el definitivo." } } } }, "loans": { "type": "array", "items": { "type": "object", "description": "Préstamos", "required": [ "contract_number", "loan_type", "constitution_date", "currency", "granted_capital", "pending_amount", "linked_account", "holders", "interest_rate", "expiration_date", "pending_receipts", "amortization_made", "amortization_pending" ], "properties": { "contract_number": { "type": "string", "example": "9620.321-205439-70" }, "loan_type": { "type": "string", "example": "Variable rate mortgage" }, "constitution_date": { "type": "string", "format": "date", "example": "2022-02-23" }, "currency": { "type": "string", "example": "EUR" }, "granted_capital": { "type": "number", "example": 207000 }, "pending_amount": { "type": "number", "example": 166639.77 }, "next_installment": { "type": "number", "description": "Importe de la próxima cuota", "example": 1040.3 }, "linked_account": { "type": "string", "description": "Código IBAN sin espacios", "example": "ES0123456789012345678901" }, "holders": { "type": "array", "description": "Titulares del préstamo", "items": { "type": "object", "properties": { "id": { "type": "string", "example": "32945945D" }, "name": { "type": "string", "example": "Diego Serrano" } } } }, "interest_rate": { "type": "number", "example": 3.768 }, "expiration_date": { "type": "string", "format": "date", "example": "2042-03-01" }, "pending_receipts": { "type": "number", "example": 223 }, "amortization_made": { "type": "array", "description": "Histórico de amortizaciones realizadas", "items": { "type": "object", "required": [ "date", "amortized", "interest", "total", "pending_capital", "operation_type" ], "properties": { "date": { "type": "string", "format": "date", "example": "2022-12-01" }, "amortized": { "type": "number", "description": "Capital amortizado", "example": 515.43 }, "interest": { "type": "number", "description": "Intereses pagados", "example": 524.87 }, "total": { "type": "number", "description": "Pago total", "example": 1040.3 }, "pending_capital": { "type": "number", "description": "Capital pendiente después de este pago", "example": 166639.77 }, "operation_type": { "type": "string", "description": "Tipo de operación de amortización", "enum": [ "receipt_paid", "partial_amortization", "total_amortization" ], "example": "receipt_paid" } } } }, "amortization_pending": { "type": "array", "description": "Amortizaciones futuras programadas", "items": { "type": "object", "required": [ "date", "amortized", "interest", "total", "pending_capital", "operation_type" ], "properties": { "date": { "type": "string", "format": "date", "example": "2030-12-01" }, "amortized": { "type": "number", "description": "Capital amortizado", "example": 515.43 }, "interest": { "type": "number", "description": "Intereses a pagar", "example": 524.87 }, "total": { "type": "number", "description": "Pago total", "example": 1040.3 }, "pending_capital": { "type": "number", "description": "Capital pendiente después de este pago", "example": 66639.77 }, "operation_type": { "type": "string", "description": "Tipo de operación programada", "enum": [ "receipt_scheduled" ], "example": "receipt_scheduled" } } } } } } }, "category-types": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "integer", "description": "Numeric transaction type", "example": 100 }, "literal": { "type": "string", "description": "Literal transaction type", "example": "Dividend collection" } } } }, "properties": { "type": "array", "items": { "type": "object", "description": "Real estate assets", "required": [ "uuid", "code", "currency", "trading_price", "trading_year", "historic_prices" ], "properties": { "uuid": { "type": "string" }, "code": { "description": "Cadastral reference", "type": "string" }, "description": { "type": "string" }, "purpose": { "type": "string" }, "currency": { "type": "string" }, "trading_price": { "type": "number", "description": "Precio de compraventa del inmueble" }, "trading_year": { "type": "number", "description": "Año de la compraventa" }, "historic_prices": { "type": "array", "description": "Precios históricos del inmueble", "items": { "type": "object", "properties": { "date": { "type": "string", "format": "date", "description": "Fecha de la valoración del precio" }, "price": { "type": "number", "description": "Precio de valoración" } } } } } } }, "files": { "type": "array", "items": { "type": "object", "description": "Files", "required": [ "file_date", "retrieval_type", "file_type", "description", "content" ], "properties": { "file_date": { "type": "string", "format": "date", "description": "File date", "example": "2023-07-21" }, "retrieval_type": { "type": "string", "description": "Whether the file was downloaded from a repository (already generated) or generated on-the-fly", "enum": [ "repository", "on-the-fly" ], "example": "repository" }, "file_type": { "type": "string", "description": "File type", "enum": [ "Norma 43", "Norma 19", "Norma 57", "Norma 34", "MT940", "MT103", "SEPA XML", "BAI2", "CAMT", "AFB120", "ACH" ], "example": "Norma 43" }, "description": { "type": "string", "description": "File description", "example": "Monthly account statement" }, "content": { "type": "string", "format": "byte", "description": "File content encoded in Base64" } } } }, "contracts": { "type": "array", "items": { "type": "object", "description": "Contracts associated with the user, such as loans, cards, or insurance.", "required": [ "signing_date", "type", "subtype", "description", "pdf_file" ], "properties": { "signing_date": { "type": "string", "format": "date", "description": "Contract signing date.", "example": "2003-09-26" }, "type": { "type": "string", "enum": [ "loan", "card", "insurance" ], "description": "Contract type", "example": "loan" }, "subtype": { "type": "string", "enum": [ "personal", "mortgage", "card", "health", "life", "auto" ], "description": "Contract subtype", "example": "mortgage" }, "description": { "type": "string", "description": "Description provided by the bank", "example": "Variable rate mortgage" }, "pdf_file": { "type": "string", "format": "byte", "description": "Contract PDF file encoded in base64" } } } }, "deposits": { "type": "array", "items": { "type": "object", "description": "Depósitos a plazo fijo", "required": [ "uuid", "code", "name", "currency", "principal", "start_date", "maturity_date", "rate_type", "nominal_interest_rate", "owners", "status", "interest_movements" ], "properties": { "uuid": { "type": "string", "description": "Identificador único, en relación al usuario, asignado por Wealth Reader", "example": "0ae4d722b1c82feeafb4b36b2893230444071335" }, "code": { "type": "string", "description": "Identificador interno del banco (contrato/depósito)", "example": "DPZ-1234567890" }, "name": { "type": "string", "example": "12-month deposit" }, "currency": { "type": "string", "example": "EUR" }, "principal": { "type": "number", "description": "Importe nominal contratado", "example": 10000 }, "pending_principal": { "type": "number", "description": "Importe nominal pendiente de devolución", "example": 5000 }, "start_date": { "type": "string", "format": "date", "example": "2024-09-01" }, "maturity_date": { "type": "string", "format": "date", "example": "2025-09-01" }, "payment_frequency": { "type": "string", "enum": [ "monthly", "quarterly", "semiannual", "annual", "at_maturity" ], "description": "Frecuencia de abono de intereses, si la entidad la proporciona", "example": "at_maturity" }, "capitalization": { "type": "string", "enum": [ "none", "simple", "compound" ], "description": "Tipo de capitalización de intereses:\n* `none` - Los intereses se liquidan a linked_account, el capital permanece constante\n* `simple` - Intereses calculados solo sobre el capital original, pueden acumularse (accrued_interest) pero no generan nuevos intereses\n* `compound` - Los intereses se suman al capital en cada periodo, el siguiente periodo calcula intereses sobre el nuevo total\n", "example": "none" }, "rate_type": { "type": "string", "enum": [ "fixed", "variable" ], "example": "fixed" }, "nominal_interest_rate": { "type": "number", "description": "Tipo de interés nominal (TIN) para todo el periodo, si aplica", "example": 3 }, "apr_tae": { "type": "number", "description": "TAE; si la entidad aporta TAE, devuélvela aquí", "example": 3.04 }, "day_count_convention": { "type": "string", "enum": [ "ACT/360", "ACT/365", "30E/360", "ACT/ACT" ], "description": "Base de cómputo de días, si disponible", "example": "ACT/365" }, "linked_account": { "type": "string", "description": "IBAN al que se abonan intereses o principal al vencimiento", "example": "ES4021005321592566566159" }, "accrued_interest": { "type": "number", "description": "Interés devengado no pagado a la fecha de extracción", "example": 24.58 }, "expected_interest_total": { "type": "number", "description": "Interés bruto esperado a vencimiento (si la entidad lo calcula)", "example": 300 }, "withholding_tax_rate": { "type": "number", "description": "Tipo de retención fiscal aplicado a intereses, si la entidad lo informa", "example": 19 }, "status": { "type": "string", "enum": [ "active", "matured", "cancelled", "early_redeemed" ], "example": "active" }, "auto_renewal": { "type": "object", "description": "Información de renovación automática", "properties": { "enabled": { "type": "boolean", "example": false }, "renewed_times": { "type": "integer", "example": 0 }, "next_renewal_date": { "type": "string", "format": "date", "nullable": true }, "renewal_term_months": { "type": "integer", "nullable": true } } }, "early_withdrawal": { "type": "object", "description": "Cláusulas por cancelación anticipada (si la entidad lo informa)", "properties": { "allowed": { "type": "boolean", "example": true }, "penalty_type": { "type": "string", "enum": [ "percentage", "fixed", "interest_loss", "other" ], "example": "interest_loss" }, "penalty_value": { "type": "number", "example": 100 }, "notes": { "type": "string", "example": "Loss of accrued interest for the current period" } } }, "owners": { "$ref": "#/components/schemas/owners" }, "interest_movements": { "type": "array", "description": "Pagos de intereses realizados y/o programados", "items": { "type": "object", "required": [ "date", "currency", "gross_interest" ], "properties": { "uuid": { "type": "string", "description": "Unique identifier, in relation to the deposit", "example": "90763109952d4f2ebece8dceca8254078c5384a0" }, "scheduled": { "type": "boolean", "description": "true if scheduled (future), false if already paid", "example": false }, "date": { "type": "string", "format": "date", "example": "2025-09-01" }, "period_start": { "type": "string", "format": "date", "description": "Start of the period to which the coupon/interest corresponds", "example": "2024-09-01" }, "period_end": { "type": "string", "format": "date", "example": "2025-09-01" }, "currency": { "type": "string", "example": "EUR" }, "gross_interest": { "type": "number", "example": 300 }, "withholding_tax": { "type": "number", "example": 57 }, "net_interest": { "type": "number", "example": 243 }, "payment_type": { "type": "string", "enum": [ "coupon", "maturity" ], "example": "maturity" } } } }, "principal_movements": { "type": "array", "description": "Movimientos de principal - apertura, renovación, cancelación, reintegro", "items": { "type": "object", "properties": { "date": { "type": "string", "format": "date" }, "type": { "type": "string", "enum": [ "opening", "renewal", "maturity_payout", "early_redemption" ] }, "amount": { "type": "number", "example": 12000, "minimum": 0, "description": "It is always an absolute value. The sign is defined by type" }, "currency": { "type": "string" }, "target_account": { "type": "string", "description": "Destination account when principal is reimbursed" } } } } } } }, "leases": { "type": "array", "items": { "type": "object", "description": "Contratos de leasing y renting", "required": [ "subtype", "uuid", "contract_number", "provider", "currency", "start_date", "end_date", "payment_frequency", "status", "holders", "asset", "financials", "installments" ], "properties": { "subtype": { "type": "string", "enum": [ "leasing", "renting" ], "example": "leasing" }, "uuid": { "type": "string", "description": "Identificador único asignado por Wealth Reader", "example": "1f0a0b1c2d3e4f5a6b7c8d9e0f1234567890abcd" }, "contract_number": { "type": "string", "example": "L-2024-000123" }, "name": { "type": "string", "description": "Nombre comercial del contrato si lo aporta la entidad", "example": "BMW 3 Series Leasing" }, "provider": { "type": "object", "description": "Arrendador/financiador", "properties": { "name": { "type": "string", "example": "Banco XYZ Renting, S.A." }, "tax_id": { "type": "string", "example": "A12345678" } } }, "currency": { "type": "string", "example": "EUR" }, "start_date": { "type": "string", "format": "date", "example": "2024-10-01" }, "end_date": { "type": "string", "format": "date", "example": "2028-09-30" }, "term_months": { "type": "integer", "description": "Duración total en meses", "example": 48 }, "payment_frequency": { "type": "string", "enum": [ "monthly", "quarterly", "semiannual", "annual" ], "example": "monthly" }, "status": { "type": "string", "enum": [ "active", "finished", "cancelled", "in_arrears" ], "example": "active" }, "linked_account": { "type": "string", "description": "IBAN de cargo si lo facilita el banco", "example": "ES4021005321592566566159" }, "holders": { "$ref": "#/components/schemas/owners" }, "asset": { "type": "object", "description": "Bien arrendado", "required": [ "category" ], "properties": { "category": { "type": "string", "enum": [ "vehicle", "industrial_equipment", "it_equipment", "real_estate", "other" ], "example": "vehicle" }, "description": { "type": "string", "example": "BMW 320d Touring" }, "vin": { "type": "string", "description": "For vehicles, if available", "example": "WBA8G51040K123456" }, "license_plate": { "type": "string", "example": "1234-ABC" }, "brand": { "type": "string", "example": "BMW" }, "model": { "type": "string", "example": "320d" }, "year": { "type": "integer", "example": 2024 }, "serial_number": { "type": "string", "description": "For machinery/equipment" }, "address": { "type": "string", "description": "For real estate" } } }, "financials": { "type": "object", "description": "Términos financieros", "properties": { "capital_financed": { "type": "number", "description": "Financed base (only leasing; optional in renting)", "example": 35000 }, "nominal_interest_rate": { "type": "number", "description": "Nominal interest rate if applicable (more common in leasing)", "example": 4.25 }, "apr_tae": { "type": "number", "description": "APR/TAE if the entity publishes it", "example": 4.38 }, "discount_rate": { "type": "number", "description": "Discount rate (IFRS 16), if available" }, "initial_fee": { "type": "number", "description": "Down payment/initial fee", "example": 3000 }, "security_deposit": { "type": "number", "description": "Security deposit if exists", "example": 1000 }, "residual_value": { "type": "number", "description": "Residual value/purchase option (typical in leasing)", "example": 12000 }, "purchase_option": { "type": "boolean", "description": "Purchase option exists at the end", "example": true }, "services_included": { "type": "object", "description": "More common in renting", "properties": { "maintenance": { "type": "boolean", "example": true }, "insurance": { "type": "boolean", "example": true }, "roadside_assistance": { "type": "boolean", "example": true }, "tires": { "type": "boolean", "example": false } } }, "vat_included": { "type": "boolean", "description": "Fees with VAT included (renting) vs itemized (leasing)", "example": true }, "mileage_limit_year": { "type": "integer", "description": "Annual mileage limit (vehicle renting)", "example": 15000 }, "early_termination": { "type": "object", "description": "Early termination conditions", "properties": { "allowed": { "type": "boolean", "example": true }, "penalty_type": { "type": "string", "enum": [ "percentage_of_remaining", "fixed", "formula", "other" ], "example": "percentage_of_remaining" }, "penalty_value": { "type": "number", "description": "Percentage or amount depending on penalty_type", "example": 40 } } } } }, "totals": { "type": "object", "description": "Acumulados a fecha de extracción", "properties": { "paid_installments": { "type": "integer", "example": 10 }, "remaining_installments": { "type": "integer", "example": 38 }, "total_paid": { "type": "number", "description": "Total paid (fees + services + taxes)" }, "total_pending": { "type": "number" }, "principal_outstanding": { "type": "number", "description": "Outstanding principal (if applicable in leasing)" }, "accrued_interest": { "type": "number", "description": "Accrued unpaid interest" } } }, "installments": { "type": "object", "description": "Calendario de cuotas", "properties": { "paid": { "type": "array", "items": { "$ref": "#/components/schemas/lease_installment" } }, "scheduled": { "type": "array", "items": { "$ref": "#/components/schemas/lease_installment" } } } } } } }, "lease_installment": { "type": "object", "required": [ "date", "currency", "total" ], "properties": { "uuid": { "type": "string", "description": "Identificador único de la cuota", "example": "b07a1a0d3e6f4c2a9e1d0f8b7c6a5e4d3c2b1a0f" }, "date": { "type": "string", "format": "date", "example": "2025-01-01" }, "status": { "type": "string", "enum": [ "paid", "pending", "overdue" ], "example": "pending" }, "currency": { "type": "string", "example": "EUR" }, "total": { "type": "number", "example": 625.5 }, "breakdown": { "type": "object", "description": "Desglose de la cuota", "properties": { "principal": { "type": "number", "example": 450 }, "interest": { "type": "number", "example": 80 }, "services": { "type": "number", "description": "Maintenance/insurance/tires (renting)", "example": 70 }, "taxes": { "type": "number", "description": "VAT/IGIC, etc.", "example": 25.5 }, "fees": { "type": "number", "description": "Management fees/other", "example": 0 } } }, "value_date": { "type": "string", "format": "date", "description": "Value date if provided by the bank" }, "receipt_uuid": { "type": "string", "description": "Link to receipt in receipts if exists" }, "additional_info": { "$ref": "#/components/schemas/additional_info" } } }, "bonds": { "type": "array", "items": { "type": "object", "description": "Bonos", "required": [ "uuid", "name", "isin", "owners", "currency", "total_value", "interest_rate", "maturity_date", "issuer", "principal", "coupon_payment_dates", "credit_rating" ], "properties": { "uuid": { "type": "string", "description": "Identificador único, en relación al usuario, asignado por Wealth Reader", "example": "b8e42d60e6e8d3a5efb0b2a8e4e0b1a4b5c5d6e7" }, "name": { "type": "string", "example": "Bono del Estado Español 2025" }, "isin": { "type": "string", "example": "ES00000123E5" }, "currency": { "type": "string", "example": "EUR" }, "total_value": { "type": "number", "example": 5000 }, "interest_rate": { "type": "number", "example": 1.75 }, "owners": { "$ref": "#/components/schemas/owners" }, "maturity_date": { "type": "string", "format": "date", "description": "La fecha en que el bono debe ser redimido y el principal devuelto al tenedor", "example": "2025-10-15" }, "issuer": { "type": "string", "description": "Emisor del bono", "example": "Gobierno de España" }, "principal": { "type": "number", "description": "Importe del principal", "example": 1000 }, "coupon_payment_dates": { "type": "array", "description": "Las fechas en que se realizan los pagos de intereses (cupones) al tenedor del bono", "items": { "type": "string", "format": "date" }, "example": [ "2023-04-15", "2023-10-15" ] }, "credit_rating": { "type": "string", "description": "Calificación crediticia del bono", "example": "AAA" }, "yield_to_maturity": { "type": "number", "description": "El rendimiento total esperado de un bono si se mantiene hasta su fecha de vencimiento", "example": 2.5 }, "current_yield": { "type": "number", "description": "El rendimiento anual del bono basado en su precio actual en el mercado", "example": 2 }, "callability": { "type": "string", "description": "Indica si el bono puede ser redimido por el emisor antes de su fecha de vencimiento", "example": "Callable a partir del 2024-01-01" }, "type_of_bond": { "type": "string", "enum": [ "government", "corporate", "municipal", "agency", "treasury", "savings", "junk" ], "example": "government" } } } }, "factoring": { "type": "array", "items": { "type": "object", "description": "Contratos de factoring", "properties": { "uuid": { "type": "string", "example": "a62ae601a424403d0fbe968d335378421006c277" }, "contract_number": { "type": "string", "example": "000117001234567" }, "name": { "type": "string", "example": "FACTORING PPAL SIN RECURSO" }, "currency": { "type": "string", "example": "EUR" }, "balances": { "type": "object", "properties": { "available": { "type": "number", "example": 11360.26 }, "disposed": { "type": "number", "example": 0 }, "limit": { "type": "number", "example": 11360.26 } } }, "interest_rate": { "type": "number", "example": 5.25 }, "linked_account": { "type": "string", "example": "ES0700812345678987654321" }, "next_payment_date": { "type": "string", "example": "" }, "number_invoices": { "type": "integer", "example": 8 }, "total_value": { "type": "number", "description": "Valor total de las facturas", "example": 14495.28 }, "total_advanced_value": { "type": "number", "description": "Valor total anticipado", "example": 6919.29 }, "providers": { "type": "array", "description": "Lista de proveedores asociados al contrato de factoring", "items": { "type": "object", "properties": { "uuid": { "type": "string", "description": "Identificador único del proveedor", "example": "2ea19f8f8bcda4fa5e54e139852e0a7459d16b49" }, "company_id": { "type": "string", "description": "Número de identificación fiscal de la empresa", "example": "A12345678" }, "company_name": { "type": "string", "description": "Nombre de la empresa", "example": "EMPRESA 1 SA" } } } }, "invoices": { "type": "array", "description": "Lista de facturas asociadas al contrato de factoring", "items": { "type": "object", "properties": { "uuid": { "type": "string", "description": "Identificador único de la factura", "example": "6b556584df0721e5f0b27448247c9682a6470d11" }, "invoice_id": { "type": "string", "description": "Número o referencia de la factura", "example": "2023-53" }, "provider_id": { "type": "string", "description": "Número de identificación fiscal del proveedor", "example": "A12345678" }, "operation_date": { "type": "string", "format": "date", "description": "Fecha en que se cedió la factura", "example": "2023-10-25" }, "due_date": { "type": "string", "format": "date", "description": "Fecha de vencimiento de la factura", "example": "2024-01-24" }, "amount": { "type": "number", "description": "Importe de la factura", "example": 918.45 }, "status": { "type": "string", "description": "Estado de la factura (ej., pendiente, anticipada, pagada)", "example": "advanced" }, "additional_info": { "$ref": "#/components/schemas/additional_info" } } } } } } }, "confirming": { "type": "array", "items": { "type": "object", "description": "Contratos de confirming", "properties": { "uuid": { "type": "string", "example": "a62ae601a424403d0fbe968d335378421006c277" }, "contract_number": { "type": "string", "example": "000117001234567" }, "name": { "type": "string", "example": "CONFIRMING PPAL SIN RECURSO" }, "currency": { "type": "string", "example": "EUR" }, "balances": { "type": "object", "properties": { "available": { "type": "number", "example": 11360.26 }, "disposed": { "type": "number", "example": 0 }, "limit": { "type": "number", "example": 11360.26 } } }, "interest_rate": { "type": "number", "example": 5.25 }, "linked_account": { "type": "string", "example": "ES0700812345678987654321" }, "next_payment_date": { "type": "string", "example": "" }, "number_invoices": { "type": "integer", "example": 8 }, "total_value": { "type": "number", "description": "Valor total de las facturas", "example": 14495.28 }, "total_advanced_value": { "type": "number", "description": "Valor total anticipado", "example": 6919.29 }, "providers": { "type": "array", "description": "Lista de proveedores asociados al contrato de confirming", "items": { "type": "object", "properties": { "uuid": { "type": "string", "description": "Identificador único del proveedor", "example": "2ea19f8f8bcda4fa5e54e139852e0a7459d16b49" }, "company_id": { "type": "string", "description": "Número de identificación fiscal de la empresa", "example": "A12345678" }, "company_name": { "type": "string", "description": "Nombre de la empresa", "example": "EMPRESA 1 SA" } } } }, "invoices": { "type": "array", "description": "Lista de facturas asociadas al contrato de confirming", "items": { "type": "object", "properties": { "uuid": { "type": "string", "description": "Identificador único de la factura", "example": "6b556584df0721e5f0b27448247c9682a6470d11" }, "invoice_id": { "type": "string", "description": "Número o referencia de la factura", "example": "2023-53" }, "provider_id": { "type": "string", "description": "Número de identificación fiscal del proveedor", "example": "A12345678" }, "operation_date": { "type": "string", "format": "date", "description": "Fecha en que se procesó la factura", "example": "2023-10-25" }, "due_date": { "type": "string", "format": "date", "description": "Fecha de vencimiento de la factura", "example": "2024-01-24" }, "amount": { "type": "number", "description": "Importe de la factura", "example": 918.45 }, "status": { "type": "string", "description": "Estado de la factura (ej., pendiente, anticipada, pagada)", "example": "advanced" }, "additional_info": { "$ref": "#/components/schemas/additional_info" } } } } } } }, "employment": { "type": "object", "description": "Vida laboral / historial de empleo y cotizaciones", "properties": { "summary": { "type": "object", "description": "Resumen agregado de la vida laboral", "properties": { "totalDaysRegistered": { "type": "integer", "description": "Total de días registrados", "example": 8912 }, "daysInMultipleActivity": { "type": "integer", "description": "Días en múltiple actividad", "example": 130 }, "daysContributedForBenefits": { "type": "integer", "description": "Días cotizados para prestaciones", "example": 8782 }, "totalTimeEquivalence": { "type": "string", "description": "Equivalencia de tiempo total", "example": "24 años, 0 meses y 17 días." } } }, "periods": { "type": "array", "description": "Listado de periodos laborales y asimilados (empleo, desempleo, autónomo, etc.)", "items": { "type": "object", "required": [ "employer", "regime", "contract", "category", "actualStartDate", "startDate", "endDate", "contributedDays" ], "properties": { "employer": { "type": "string", "example": "TRABAJADOR AUTONOMO" }, "regime": { "type": "string", "example": "AUTONOMO" }, "contract": { "type": "string", "example": "INDEFINIDO.TIEMPO COMPLETO.ORDINARIO" }, "category": { "type": "string", "example": "INGENIEROS LICENCIADOS" }, "actualStartDate": { "type": "string", "format": "date", "example": "2022-11-10" }, "startDate": { "type": "string", "format": "date", "example": "2022-11-10" }, "endDate": { "type": "string", "description": "Fecha fin o 'Actual' si el periodo está en curso", "example": "Actual" }, "contributedDays": { "type": "integer", "description": "Días cotizados dentro del periodo", "example": 1062 } } } } } }, "guarantees": { "type": "array", "items": { "type": "object", "description": "Avales y garantías bancarias (técnicas y financieras)", "required": [ "uuid", "code", "name", "subtype", "currency", "balances" ], "properties": { "uuid": { "type": "string", "description": "Unique identifier, in relation to the user, assigned by Wealth Reader", "example": "90763109952d4f2ebece8dceca8254078c5384a0" }, "code": { "type": "string", "description": "Identificador interno del banco para la garantía", "example": "f2eb8HsfBDSDseBw8HeSccOwJweJ2OfxH2xDw8Ss" }, "name": { "type": "string", "description": "Nombre comercial de la garantía según la entidad", "example": "Aval Financiero" }, "nickname": { "type": "string", "description": "Alias si la entidad lo proporciona", "example": "Aval Técnico" }, "subtype": { "type": "string", "description": "Tipo de aval/garantía", "enum": [ "financial", "technical", "other" ], "example": "financial" }, "currency": { "type": "string", "example": "EUR" }, "linked_account": { "type": "string", "description": "IBAN de la cuenta vinculada (si la entidad lo aporta)", "example": "ES1001289462580857003432" }, "issuer": { "type": "string", "description": "Entidad emisora si procede (cuando no sea el propio banco principal)", "example": "Bankinter, S.A." }, "beneficiary": { "type": "string", "description": "Beneficiario del aval si está disponible", "example": "AYUNTAMIENTO DE MADRID" }, "purpose": { "type": "string", "description": "Finalidad/objeto del aval si la entidad lo indica", "example": "Licitación obra pública expediente 2025/00123" }, "issue_date": { "type": "string", "format": "date", "description": "Fecha de emisión", "example": "2024-06-12" }, "expiration_date": { "type": "string", "format": "date", "description": "Fecha de vencimiento si existe", "example": "2026-06-11" }, "status": { "type": "string", "description": "Estado operativo de la garantía", "enum": [ "active", "cancelled", "expired", "pending_activation" ], "example": "active" }, "balances": { "type": "object", "description": "Importes clave de la garantía", "properties": { "guaranteed_amount": { "type": "number", "description": "Guaranteed nominal amount", "example": 50000 }, "exposure": { "type": "number", "description": "Outstanding risk/amount used under the guarantee (if applicable)", "example": 0 }, "available": { "type": "number", "description": "Remaining available amount (if applicable to guarantee lines)", "example": 50000 }, "euro_equivalent": { "type": "number", "description": "Euro equivalent if the guarantee currency is different", "example": 50000 } } }, "fees_commissions": { "type": "object", "description": "Información de comisiones asociadas, si la entidad la proporciona", "properties": { "periodicity": { "type": "string", "enum": [ "monthly", "quarterly", "semiannual", "annual", "at_issuance", "other" ], "example": "quarterly" }, "last_charge_date": { "type": "string", "format": "date", "example": "2025-03-31" }, "last_charge_amount": { "type": "number", "example": 125 } } }, "additional_info": { "type": "array", "description": "Non-standardized bank-specific fields", "items": { "type": "object", "properties": { "key": { "type": "string", "example": "euroEquivalent" }, "value": { "type": "string", "example": "0.00" } } } } } } }, "owners": { "type": "array", "description": "Array de titulares", "items": { "$ref": "#/components/schemas/owner" } }, "owner": { "type": "object", "required": [ "ID", "name", "role" ], "properties": { "ID": { "type": "string", "nullable": true, "example": "12345678Z", "description": "It may be null if the bank does not specify it" }, "name": { "type": "string", "example": "LUIS GARCIA BAQUERO" }, "role": { "type": "string", "enum": [ "owner", "legal representative", "administrator", "attorney-in-fact", "authorised" ], "example": "owner" } } }, "warning-error-codes": { "type": "array", "items": { "type": "object", "required": [ "code", "description", "possible_reasons", "how_to_proceed" ], "properties": { "code": { "type": "integer", "description": "Error code", "example": 2 }, "description": { "type": "string", "description": "Error description", "example": "Incorrect call" }, "possible_reasons": { "type": "string", "description": "Possible causes of the error", "example": "Some of the required parameters have not been sent or have been sent in an incorrect format" }, "how_to_proceed": { "type": "string", "description": "How to act when this error code is obtained", "example": "The text received in \"message\" will detail the reason for the error. For example, \"The parameter \"api_key\" is mandatory\"." } } } }, "entities": { "type": "object", "required": [ "code", "name", "logo", "color", "inputs", "statistics" ], "properties": { "code": { "type": "string", "example": "bancamarch", "description": "The institution code" }, "name": { "type": "string", "example": "Bancamarch", "description": "The institution name" }, "logo": { "type": "string", "example": "https://cdn.wealthreader.com/bancamarch.svg", "description": "Logo" }, "color": { "type": "string", "example": "#e23e4d", "description": "Predominant color in the logo" }, "inputs": { "type": "object", "properties": { "document_type": { "type": "object", "properties": { "required": { "type": "boolean", "example": false, "description": "Indicates if the field is required" }, "name": { "type": "string", "example": "DNI;Pasaporte", "description": "Field name. Since the 'document type' field is a dropdown list, this string is a semicolon-separated list of values" } } }, "user": { "type": "object", "properties": { "required": { "type": "boolean", "example": true }, "name": { "type": "string", "example": "Username" } } }, "password": { "type": "object", "properties": { "required": { "type": "boolean", "example": true }, "name": { "type": "string", "example": "Access key" } } } } }, "statistics": { "$ref": "#/components/schemas/statistics" } } }, "register-user-request": { "type": "object", "required": [ "api_key", "user_id", "email", "service" ], "properties": { "api_key": { "type": "string", "description": "Authentication key (8 alphanumeric characters)", "example": "A1B2C3D4" }, "user_id": { "type": "string", "description": "User identification document.", "example": "12345678A" }, "service": { "type": "string", "description": "Service associated with the user. Determines the data flow.", "enum": [ "integra", "easy-transfer" ], "example": "easy-transfer" }, "email": { "type": "string", "format": "email", "description": "User email, used according to service type.", "example": "sai_banker@singularbank.com" } } }, "register-user-response": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "message": { "type": "string", "example": "User registered successfully" } } }, "check-user-request": { "type": "object", "required": [ "api_key", "user_id" ], "properties": { "api_key": { "type": "string", "description": "Authentication key", "example": "A1B2C3D4" }, "user_id": { "type": "string", "description": "User identification document.", "example": "12345678A" } } }, "check-user-response": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "registered": { "type": "boolean", "example": true }, "user_id": { "type": "string", "example": "12345" }, "links": { "type": "object", "description": "Collection of links to different aggregation services registered by the user.", "additionalProperties": { "type": "string", "format": "uri" }, "example": { "easy-transfer": "https://singularbank.wealthreader.com/...", "integra": "https://www.acumulas.com/register?..." } } } }, "revoke-user-request": { "type": "object", "required": [ "api_key", "user_id", "service" ], "properties": { "api_key": { "type": "string", "description": "Authentication key (8 alphanumeric characters)", "example": "A1B2C3D4" }, "user_id": { "type": "string", "description": "User identification document.", "example": "12345678A" }, "service": { "type": "string", "enum": [ "integra", "easy-transfer", "all" ], "description": "Service from which to unregister the user. 'all' for all services.", "example": "easy-transfer" } } }, "revoke-user-response": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "message": { "type": "string", "example": "User unregistered successfully" } } }, "error-response": { "type": "object", "properties": { "success": { "type": "boolean", "example": false }, "message": { "type": "string", "example": "Invalid API key" } } }, "batch-connection": { "type": "object", "description": "Structure of each connection in the array - accepts all parameters from the /entities/ method\nMust always send credential_id + code + (token OR credentials)\n", "required": [ "credential_id", "code" ], "properties": { "credential_id": { "type": "string", "description": "Client's unique identifier for this credential", "example": "cred_001" }, "code": { "type": "string", "description": "Name of the entity. The complete list is available with GET /entities/", "example": "santander" }, "token": { "type": "string", "description": "Value for custodied credentials, previously tokenized through a call\nwith tokenize=true. Alternative to user/password.\n", "example": "FRJ0mHlaqZwLzu" }, "user": { "type": "string", "description": "User (required if token is not sent)" }, "password": { "type": "string", "description": "Password (required if token is not sent)" }, "product_types": { "type": "string", "description": "List of product types from which information is to be retrieved.\nAccepts multiple values separated by commas. Default value is ALL.\n", "default": "ALL", "example": "accounts,cards,portfolios" }, "only_balances": { "type": "boolean", "default": false, "description": "Indicates whether to obtain only the balances of the products\ninstead of all available information\n" }, "date_from": { "type": "string", "format": "date", "description": "Date from which transactions are requested, in YYYY-MM-DD format.\nMust be a date before today.\n", "example": "2024-01-01" } } } } }, "servers": [ { "description": "Production Server", "url": "https://api.wealthreader.com/" } ] }