{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"9d9b329d-9e16-4b7f-a08d-8bbd9b632f4b","name":"API Xerpa PFM","description":"La **API Xerpa** proporciona una solución eficiente y segura para la integración de servicios financieros en plataformas bancarias. Diseñada para optimizar la automatización de procesos y mejorar la experiencia del usuario, esta API permite gestionar autenticación, creación de usuarios, configuración de cuentas, ejecución de reglas de ahorro y procesamiento de transacciones. Su arquitectura escalable y basada en estándares de seguridad garantiza una comunicación confiable entre los sistemas bancarios y la infraestructura de Xerpa.\n\nGracias a su diseño modular, la API facilita la implementación de nuevas funcionalidades sin afectar la estabilidad de los sistemas existentes. Permite la interacción mediante solicitudes HTTP seguras, asegurando la transmisión encriptada de datos y el cumplimiento de regulaciones bancarias. Con una documentación clara y detallada, los desarrolladores pueden integrar sus servicios de manera ágil y reducir tiempos de desarrollo e implementación.\n\nEsta documentación está diseñada para desarrolladores externos que deseen conectar sus productos con Xerpa de forma sencilla, clara y segura.\n\n---\n\n> ⚠️**¡IMPORTANTE!**  \n_Esta documentación está dirigida exclusivamente a clientes de Xerpa. Si formas parte de una institución financiera que utiliza nuestros servicios, te invitamos a continuar con la lectura para conocer las especificaciones técnicas, flujos de integración y mejores prácticas para el uso de la API._ \n  \n\n---\n\n---\n\n#### 🔐 Autenticación\n\nPara consumir la mayoría de los endpoints, necesitarás un **token de autenticación**. Consulta la sección [Autenticación ](https://documenter.getpostman.com/view/25856993/2sAYkGJyjT#9e758eec-98e5-4418-b94c-2f4d50dd667a) para conocer el flujo completo y cómo obtener un token válido.\n\n---\n\n#### 🧪 Entornos y variables\n\nEsta colección utiliza variables para facilitar la reutilización:\n\n| Variable | Descripción | Ejemplo |\n| --- | --- | --- |\n| `{{base_url}}` | Dirección base de la API | `https://api.xerpa.com/v1` |\n| `{{auth_token}}` | Token para autenticación | `eyJhbGciOiJIUz...` |\n| `{{user_id}}` | ID del usuario autenticado | `12345678` |\n\nConfigura tu entorno antes de ejecutar los requests.\n\n---\n\n#### 🧭 Convenciones generales\n\n- Todas las respuestas están en formato **JSON**.\n    \n- Todos los tiempos están en formato **ISO 8601** (UTC).\n    \n- Versionado por URL: `https://api.xerpa.com/v1/...`\n    \n- Errores siguen el formato estándar: código HTTP + cuerpo con campos `code`, `message`, `details`.\n    \n\n---\n\n#### 📦 Versionado de la API\n\nLa API se encuentra actualmente en la versión **v1**. Cambios mayores que impliquen incompatibilidades se comunicarán oportunamente y se expondrán en una nueva versión (`v2`, etc.).\n\n---\n\n#### 📞 Soporte\n\nSi tienes dudas, contáctanos en:\n\n📧 [soporte@getxerpa.com](https://mailto:soporte@getxerpa.com)\n\nTambién puedes abrir un issue o pregunta en nuestro portal para desarrolladores en:\n\n🛠️ [https://ubank.atlassian.net/servicedesk/customer](https://ubank.atlassian.net/servicedesk/customer)\n\n---\n\n# Arquitectura\n\n<img src=\"https://content.pstmn.io/873b5e32-afd8-425b-bf23-01861a830ac1/QXJxdWl0ZWN0dXRhX1hlcnBhLnBuZw==\">\n\nLa siguiente imagen ilustra la arquitectura de alto nivel que permite la integración entre los **clientes del banco** y la **plataforma de Xerpa**, destacando los principales componentes involucrados en el consumo de la API:\n\n#### 🟢 Lado del Cliente (Banco)\n\n- **Clientes Banco:** Usuarios finales que acceden a los productos y servicios a través del canal del banco.\n    \n- **Procesos Banco:** Sistemas internos del banco que interactúan con la API de Xerpa.\n    \n- **Equipo de Negocio:** Stakeholders que analizan los datos generados mediante los servicios provistos por Xerpa.\n    \n\n#### 🌐 Conectividad\n\n- **Internet:** Medio de conexión entre el banco y la nube de Xerpa.\n    \n- **API Gateway:** Punto de entrada unificado que controla el acceso a las distintas APIs, aplica reglas de seguridad y enruta el tráfico.\n    \n\n#### ☁️ Lado de Xerpa (Cloud)\n\n- **Load Balancer:** Balanceador de carga que distribuye las solicitudes entrantes hacia los distintos servicios backend de forma eficiente.\n    \n- **Security Groups:** Reglas de red que protegen los servicios de backend y bases de datos.\n    \n- **Contenedores Kubernetes:**\n    \n    - `APIs`: Módulos expuestos públicamente para integración externa.\n        \n    - `Motores & Servicios`: Procesos internos que ejecutan lógica de negocio y cálculos.\n        \n    - `APIs Analítica`: Servicios especializados en la entrega de datos analíticos y reportes.\n        \n\n#### 🟣 Bases de Datos\n\n- **BDD Operacional:** Almacena información transaccional en tiempo real.\n    \n- **BDD Analítica:** Estructura orientada a consulta, optimizada para visualización, análisis y reportería.\n    \n\n---\n\n# Autenticación\n\nLa autenticación para acceder a los productos Xerpa se lleva a cabo solicitando primero un token de aplicación, mediante el envío de las credenciales más el API-Key asignadas por Xerpa al cliente al momento de habilitar sus ambientes de QA y Producción, según corresponda.\n\nEsta API fortalece la seguridad del sistema y optimiza la eficiencia en los procesos de desarrollo e integración. Su implementación es ágil y estructurada, permitiendo una integración fluida con los servicios existentes y garantizando una autenticación robusta para los usuarios.\n\n# Flujo de integración y autorización\n\nA continuación revisaremos el proceso de autenticación y autorización requerido para consumir los servicios de la API de Xerpa, a través de un **API Gateway público**, siguiendo el estándar **OAuth 2.0 con Bearer Tokens**.\n\n#### 📶 Acceso externo mediante API Gateway\n\nTodas las integraciones con Xerpa, ya sean desde sistemas del banco o desde aplicaciones cliente, se realizan a través de un **API Gateway** que valida tokens y enruta las solicitudes a los servicios internos protegidos.\n\n<img src=\"https://content.pstmn.io/b20f2c20-0436-4517-adbc-1b6812dfbfa4/RGlhZ3JhbWFfU2VjdWVuY2lhX0F1dGVudGljYWNpb24gWGVycGEucG5n\">\n\n#### 🔑 Tipos de tokens y su propósito\n\n##### **Client Tokens**\n\n- **Uso:** Integraciones sistema a sistema (backends del banco ↔ APIs de Xerpa).\n    \n- **Alcance:** Pueden acceder a información de múltiples usuarios o productos.\n    \n- **Duración:** Hasta 24 horas.\n    \n- **Recomendado para:** Automatización de procesos, sincronización de datos, dashboards internos.\n    \n\n##### **User Tokens**\n\n- **Uso:** Integraciones frontend (apps del banco ↔ APIs de Xerpa).\n    \n- **Alcance:** Limitado a información de un solo usuario.\n    \n- **Duración:** 5 minutos.\n    \n- **Recomendado para:** Consultas de usuario autenticado en tiempo real (por ejemplo, saldo, movimientos, reglas de ahorro).\n    \n\n---\n\n#### 🔁 Flujo resumido del proceso\n\n1. **El sistema del banco solicita un token** enviando su `client_id` y `client_secret` al **servicio de autenticación** de Xerpa.\n    \n2. **El servicio responde con un Client Token**, que debe guardarse temporalmente y usarse en futuras solicitudes.\n    \n3. **El banco envía una solicitud a la API**, incluyendo el token en el header:  \n    `Authorization: Bearer {{auth_token}}`\n    \n4. **El API Gateway valida el token** a través del **servicio de autorización**.\n    \n5. **Si el token es válido**, la petición se enruta al servicio API correspondiente.\n    \n6. **La respuesta final es devuelta** al banco.\n    \n\n---\n\n#### 🧩 Consideraciones adicionales\n\n- Todos los tokens deben enviarse en el header HTTP como:  \n    `Authorization: Bearer {token}`\n    \n- Las APIs de frontend requieren que primero se obtenga un **User Token**, generalmente generado por el backend autorizado.\n    \n- Para llamadas concurrentes o integración con múltiples usuarios, se recomienda usar **Client Tokens** desde servidores backend.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"25856993","team":293513,"collectionId":"9d9b329d-9e16-4b7f-a08d-8bbd9b632f4b","publishedId":"2sAYkGJyjT","public":true,"publicUrl":"https://front.docs.getxerpa.com","privateUrl":"https://go.postman.co/documentation/25856993-9d9b329d-9e16-4b7f-a08d-8bbd9b632f4b","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":null,"colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":null,"colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"}}]}},"version":"8.11.4","publishDate":"2025-07-28T16:09:56.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":null,"logoDark":null}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/7eb908413a9a587c0f27186617f2037c5f82c0370f6739c364a8c9006dcdfb49","favicon":"https://getxerpa.com/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://front.docs.getxerpa.com/view/metadata/2sAYkGJyjT"}