{"info":{"_postman_id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","name":"API Xerpa Middleware","description":"<html><head></head><body><p>Xerpa expone a través de su API, servicios para que el banco o institución financiera pueda acceder a la información necesaria para ejecutar sus actividades.</p>\n<p>Estos servicios consideran endopints de los productos de <strong>Control de Gastos</strong> y <strong>Ahorro Automático</strong>.</p>\n<blockquote>\n<p><strong>Acceso Restringido</strong><br>Esta API solo está disponible para los bancos e instituciones financieras que forman parte de la cartera de clientes de Xerpa. </p>\n</blockquote>\n<h2 id=\"campos-requeridos\">Campos requeridos</h2>\n<p>A menos de que se especifique lo contrario, todos los campos de las peticiones son obligatorios. Solo bajo ciertas circunstancias y donde quede explícitamente documentado se manejarán campos opcionales para las peticiones. Estos campos opcionales se indicarán en cada endpoint que lo permita.</p>\n<h2 id=\"códigos-de-respuesta\">Códigos de Respuesta</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Descripción</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>200</td>\n<td>OK</td>\n</tr>\n<tr>\n<td>201</td>\n<td>Recurso creado (POST)</td>\n</tr>\n<tr>\n<td>204</td>\n<td>OK, no se devolvió contenido (usar para PATCH)</td>\n</tr>\n<tr>\n<td>304</td>\n<td>No modificado</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Petición Incorrecta</td>\n</tr>\n<tr>\n<td>401</td>\n<td>No autorizado (para usuarios no autenticados)</td>\n</tr>\n<tr>\n<td>403</td>\n<td>Prohibido (para usuarios autenticados que no tienen los permisos adecuados)</td>\n</tr>\n<tr>\n<td>404</td>\n<td>No encontrado</td>\n</tr>\n<tr>\n<td>408</td>\n<td>Timeout</td>\n</tr>\n<tr>\n<td>415</td>\n<td>Tipo de acción no admitida</td>\n</tr>\n<tr>\n<td>429</td>\n<td>Límite de peticiones alcanzado</td>\n</tr>\n<tr>\n<td>500</td>\n<td>Error interno de servidor</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"códigos-de-error\">Códigos de Error</h3>\n<p>Se utilizan códigos de error internos para problemas relacionados al uso de la API, estos códigos se retornarán dentro del cuerpo de la respuesta.</p>\n<p>El <strong>case-id</strong> es un identificador único de la petición para trazar el error en los logs internos y atender actividades de soporte.</p>\n<p>El <strong>error-code</strong> es un código que se puede buscar en el diccionario de errores y donde se puede encontrar más información del problema.</p>\n<h2 id=\"reintento-de-peticiones\">Reintento de peticiones</h2>\n<p>Las peticiones a la API pueden fallar por múltipes razones, desde problemas de red, límite de peticiones, timeouts o errores de servicios. Como recomendación, sugerimos desarrollar un sistema de reintento de peticiones cuando se obtengas las siguientes respuestas HTTP:</p>\n<ul>\n<li><p><strong>5xx</strong> (Server errors)</p>\n</li>\n<li><p><strong>429</strong> (Rate Limits)</p>\n</li>\n<li><p><strong>408</strong> (Timeouts)</p>\n</li>\n</ul>\n<h2 id=\"límite-de-peticiones\">Límite de peticiones</h2>\n<p>El límite por defecto de las peticiones desde una misma IP son de 1,000 peticiones por minuto. El límite aplica para cada ambiente (sandbox, QA y producción) independientemente.</p>\n<p>Si se alcanza el límite, las peticiones responderán con un error HTTP 429.</p>\n<p>En caso de ser necesario el límite se puede aumentar para ambientes productivos con previo análisis con el equipo responsable de las APIs en Xerpa.</p>\n<h2 id=\"timeouts\">Timeouts</h2>\n<p>Todas nuestras APIs tienen tomeouts para identificar que ha ocurrido un error lo antes posible y con eso puedas reintentar la petición. Es recomentadble manejar los mismos tiempos de timeouts para los clientes.</p>\n<p><strong>Tiempo por Defecto</strong> - La mayoría de las APIs arrojará un timeout a los <em>29 segundos</em>.</p>\n<h2 id=\"paginación\">Paginación</h2>\n<p>La paginación cuando esté disponible se explicitará en la documentación respectiva de cada recurso.</p>\n<p>Para paginación se debe usar los siguientes parámetros como query-param:</p>\n<ul>\n<li><p><strong>start</strong>: Inicio de la paginación</p>\n</li>\n<li><p><strong>limit</strong>: Items por página</p>\n</li>\n</ul>\n<h5 id=\"ejemplo-petición-con-paginación\">Ejemplo petición con paginación</h5>\n<p><code>https://api.getxerpa.com/api/V1.1/resource/?start=0&amp;limit=10</code></p>\n<h2 id=\"filtros-y-ordenamiento\">Filtros y ordenamiento</h2>\n<p>En los recursos donde los filtros estén disponibles se indicará explícitamente en la documentación, asi como los parámetros por los cuales se puede filtrar y el ordenamiento.</p>\n<h2 id=\"parámetro-expand\">Parámetro Expand</h2>\n<p>En algunos recursos se permite el parámetro expand para mostrar los objetos anidados. Este parámetro se usa principalmente para expandir los objetos de catálogos dentro de las respuestas.</p>\n<h5 id=\"ejemplo-petición-con-parámetro-expand\">Ejemplo petición con parámetro expand</h5>\n<p><a href=\"https://api.getxerpa.comm/api/V1.1/resource/?expand=project_category,\"><code>https://api.getxerpa.com/api/V1.1/resource/?expand=project_category,project_status</code></a></p>\n<h2 id=\"variables-de-entorno-utilizadas\">Variables de entorno utilizadas</h2>\n<p>La variables de entorno para utilizar con esta documentación son las siguientes:</p>\n<p><strong><code>host_login_middleware</code></strong>: URL para endpoint Obtener Token app</p>\n<p><strong><code>middleware-auth-api-key</code>****:</strong> api-key requerida para utilizar el endpoint Obtener Token app</p>\n<p><strong><code>host_middleware</code>****:</strong> URL para otros endpoints del middleware que requiere el token_app</p>\n<p><strong><code>login_username_middleware</code>****:</strong> username para autenticarse en el middleware y obtener token_app</p>\n<p><strong><code>login_password_middleware</code>****:</strong> password para autenticarse en el middleware y obtener token_app</p>\n<blockquote>\n<p>Estas variables de entorno serán entregadas al equipo de implementación por Xerpa y serán distintas para los ambientes de QA y PRO</p>\n</blockquote>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"25856993","collectionId":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","publishedId":"2sB3BGHA8f","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2025-08-13T19:42:36.000Z"},"item":[{"name":"Autenticación","item":[{"name":"Obtener token app","event":[{"listen":"test","script":{"id":"db3a92ab-a5ca-49ab-8897-51f831e53f60","exec":["const response = pm.response.json();","pm.environment.set(\"token_app\", response.token);","pm.environment.set(\"token_middleware\", response.token)"],"type":"text/javascript","packages":{}}}],"id":"d57e723b-d6e0-4bc8-8013-956b0d4ec459","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"x-api-key"},{"key":"value","value":"{{middleware-auth-api-key}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"username\": \"{{login_username_middleware}}\",\n    \"password\": \"{{login_password_middleware}}\"\n}","options":{"raw":{"language":"json"}}},"url":"{{host_login_middleware}}/token-app","description":"<p>Este endpoint permite a los servicios autenticarse y obtener un <code>Client Token</code> mediante una solicitud HTTP POST. Se requiere que el usuario proporcione su nombre de usuario y contraseña para recibir una respuesta que incluye información del usuario y detalles sobre las operaciones disponibles.</p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><p>Metodo: POST</p>\n</li>\n<li><p>URL: {{host_login_middleware}}/token-app</p>\n</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><p><code>username</code> (string): El nombre de usuario del usuario que intenta autenticarse.</p>\n</li>\n<li><p><code>password</code> (string): La contraseña asociada al nombre de usuario.</p>\n</li>\n</ul>\n<h4 id=\"request-body-example\">Request Body Example</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"username\": \"usuario_prueba\",\n  \"password\": \"clave_usuario\"\n}\n\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><code>token</code>(string): Token generado para el usuario.</li>\n</ul>\n<h4 id=\"response-format\">Response Format</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"token\":\"string\"\n}\n\n</code></pre>\n","urlObject":{"path":["token-app"],"host":["{{host_login_middleware}}"],"query":[],"variable":[]}},"response":[{"id":"8e6bbcd1-33a9-4411-a42e-86b5326f0125","name":"Successful Response","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"username\": \"xh-user-qa-1\",\n    \"password\": \"Passxerpauserqa1@\"\n}","options":{"raw":{"language":"json"}}},"url":"{{host_login_middleware}}/token-app"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 13 Jun 2025 21:20:34 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"996"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"7c0ea7fe-fa5c-4eaa-9e46-a2454c0e980e"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"x-amz-apigw-id","value":"MHxlDEW5oAMEJ3g="},{"key":"X-Amzn-Trace-Id","value":"Root=1-684c961f-5db40514119c13bb772a0b0d;Parent=282a37f29ecf1012;Sampled=0;Lineage=1:1ed41042:0"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"token\": \"eyJraWQiOiJvWGVrTDlLUERFclRnOTBmZGZNbEVZeE5HNzd6YWIyd2Q3YlY4SVZYZEh3PSIsImFsZyI6IlJTMjU2In0.eyJvcmlnaW5fanRpIjoiNjRiMzRhMGYtNmZkMy00YTFjLTg3ZTUtZDQ4Y2Y4NTkxNzhiIiwic3ViIjoiMDQ1ODM0NTgtMTA4MS03MDRiLWVkNTYtNzg3OGJhOGYyNzU4IiwiYXVkIjoiNm1wMWEzMGNpYmx2aHVkNXNtOGN0YW5hdXUiLCJldmVudF9pZCI6IjQ3MWU4NzBlLTNjZWMtNDk3My1iNDA1LTU2ZThjMjljNzIyMyIsInRva2VuX3VzZSI6ImlkIiwiYXV0aF90aW1lIjoxNzQ5ODQ5NjM0LCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAudXMtZWFzdC0xLmFtYXpvbmF3cy5jb21cL3VzLWVhc3QtMV9NbDFHN3VLYloiLCJjb2duaXRvOnVzZXJuYW1lIjoieGgtdXNlci1xYS0xIiwiZXhwIjoxNzQ5ODUzMjM0LCJpYXQiOjE3NDk4NDk2MzQsImp0aSI6Ijk0Nzc5YmRmLWYxNDYtNDI4OC1iZTRhLWYyZTUxOTc2MzUzMCJ9.hlCp7ZCQ5BwThVVYYt6VyQRoZgUeOlumGhKP0F61l2xFEHWsVQBG4RlTieyInfQISUf9JbdJds7qM286JoPazDWHNlluyPZv815cd8P-FlfzbADyVNaTN8EKoLvLfXZcT7sHmnOV5bBg4PU57uxtTVv9zfNpGOSrxcsu8_nCHt7FGSleK2ap0ezFpx49DUtyMGeYtt2be9zr5OndmnF5vUAfA38dYb2XjrRYsFg40_ixNq77qKMq4Z4BYKJ_OcirnPTX-OhogxJYR7PoIHYVMp0DqGpaPg571HKKqGxG6fAv6RHxVjCAnp3o9zgfschytkKrFsaTtpM0OpXM-IBCzA\"\n}"}],"_postman_id":"d57e723b-d6e0-4bc8-8013-956b0d4ec459"}],"id":"5a0b8437-2abb-49af-a000-bf35eeb89afb","description":"<p>Nuestras APIs usan OAuth 2.0 Bearer Token para autenticar los requests.<br />Todas las llamadas a la API deben incluir el token.</p>\n<p>Existen dos tipos de token que se utilizan para acceder a distintos tipos de servicios:</p>\n<ul>\n<li><p><strong>Client Tokens</strong>: Para consumo de APIs de sistema y que pueden acceder a la información de múltiples usuarios y tienen permisos amplios. Duración hasta 24hrs.</p>\n</li>\n<li><p><strong>User Tokens</strong>: Para consumo de APIs desde el frontend y están restringidos a la consulta de información específica por usuario. Duración hasta 5 min.</p>\n</li>\n</ul>\n<p>El uso de cada tipo de token de describe en el siguiente diagrama:</p>\n<img src=\"https://lh7-rt.googleusercontent.com/slidesz/AGV_vUcFzD6no-RGWwFyPAD9Vw3ZVGJf3ce21ygXihWYyDt0VVG0VzIf9sou6JsjnaYso1HwVFZu0xzRLYygHIYboavi8m4Ehbv2atrSD5XU2bhknHab2mMa4ADUmcSSdcEZX3iXkwJjrw=s2048?key=SmcJkW1I-s0Xg8fRA-aSgyak\" />","_postman_id":"5a0b8437-2abb-49af-a000-bf35eeb89afb","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":true,"source":{"_postman_id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","name":"API Xerpa Middleware","type":"collection"}}},{"name":"Usuarios","item":[{"name":"Usuarios con Contrato","item":[{"name":"Registro y actualización de usuario, cuentas, contratos y progress","event":[{"listen":"test","script":{"id":"db3a92ab-a5ca-49ab-8897-51f831e53f60","exec":["const response = pm.response.json();","pm.environment.set(\"token_user\", response.token);"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"6a899f1c-beb9-460b-9e94-0a400674ed4d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_app}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"user_id\": \"test_user_api_020326_201\",\n  \"accounts\": [\n    {\n      \"account\": {\n        \"account_id\": \"test_user_api_020326_10_ac_1\",\n        \"account_number\": \"9f3c2e7a-6b41-4d8f-9a2c-1e5b7c8d4f90\",\n        \"account_type\": \"cuenta_ahorro\",\n        \"account_status\": \"cuenta_activa\",\n        \"account_currency\": \"CLP\"\n      },\n      \"contract\": {\n        \"contract_id\": \"9f3c2e7a-6b41-4d8f-9a2c-1e5b7c8d4f90\",\n        \"contract_role\": \"owner\"\n      }\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v2/core-service/middleware-contract/init-user/","description":"<p>En la solución de <strong>Ahorro Automático</strong>, puedes generarse descuadres en los progresos de las metas que tiene registrado Xerpa y el saldo de las cuentas en donde se almacenan los ahorros. Es por esto que este endpoint permite hacer una actualización del saldo de las cuentas y progresos de las metas asociadas al momento de iniciar sesión.</p>\n<p>Agregando la propiedad <code>projects_balance</code> el sistema automáticamente actualizará el saldo asociado a la cuenta y el progreso de la meta de ahorro asociado a el.</p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><p><strong>Método:</strong> POST</p>\n</li>\n<li><p><strong>URL:</strong> {{host_middleware}}/token-user</p>\n</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><p><code>external_id</code>(string): Identificador alfanumérico único del usuario dentro de la solución Xerpa.</p>\n</li>\n<li><p>accounts(array): Array de cuentas asociadas al usuario. Cada cuenta debe tener los siguientes campos:</p>\n<ul>\n<li><p><code>account_id</code>(string): Identificador alfanumérico único de la cuenta o producto del usuario dentro de la solución Xerpa.</p>\n</li>\n<li><p><code>account_number</code>(string): Identificador de cuenta que será visible en el frontend.</p>\n</li>\n<li><p><code>account_type</code>(string): Identificador del tipo de cuenta. Ej: cuenta_ahorro, cuenta_vista. Deben definirse los tipos que serán usados por el banco de acuerdo a sus productos habilitados para usar la solución Xerpa.</p>\n</li>\n</ul>\n</li>\n<li><p><code>projects_balance</code>(array): Array de balances de proyectos asociados al usuario. Cada balance debe tener los siguientes campos:</p>\n<ul>\n<li><p><code>product_id</code>(string): Identificador alfanumérico único del producto.</p>\n</li>\n<li><p><code>balance</code>(string): Balance del producto.</p>\n</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"request-body-example\">Request Body Example</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"external_id\": \"test_user_api_2\",\n  \"accounts\": [\n    {\n      \"account_id\": \"test_user_api_2_account_1\",\n      \"account_number\": \"aaaabbbb\",\n      \"account_type\": \"cuenta_ahorro\"\n    }\n  ],\n  \"projects_balance\": [\n    {\n      \"account_id\": \"test_user_api_2_account_4\",\n      \"balance\": \"8000.00\"\n    }\n  ]\n}\n\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><code>token</code>(string): Token generado para el usuario.</li>\n</ul>\n<h4 id=\"response-format\">Response Format</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"token\": {\n      \"type\": \"string\"\n    }\n  }\n}\n\n</code></pre>\n","urlObject":{"path":["api-middleware","v2","core-service","middleware-contract","init-user",""],"host":["{{host_middleware}}"],"query":[],"variable":[]}},"response":[{"id":"04b5725d-2b0a-4d67-800e-4492cad50c01","name":"Registro y actualización de usuario, cuentas y progress (sin token)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"external_id\": \"test_user_api_3\", // obligatorio\n    \"accounts\": [ //opcional\n        {\n            \"account_id\": \"test_user_api_2_account_1_aa\",\n            \"account_number\": \"xxx-xxx-123a\",\n            \"account_type\": \"cuenta_ahorro\"\n        },\n        {\n            \"account_id\": \"test_user_api_2_account_2_aaa\",\n            \"account_number\": \"xxx-xxx-134a\",\n            \"account_type\": \"cuenta_vista\"\n        }\n    ]\n\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v1/core-service/init-user/"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Date","value":"Tue, 17 Feb 2026 12:55:33 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"1972"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"0b85442b-1b40-42e1-82c0-263a27139160"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"x-amz-apigw-id","value":"Y7TCzEDxIAMEiew="},{"key":"X-Amzn-Trace-Id","value":"Root=1-69946544-5801d3fa613fb1bf65856a78;Parent=0221a23807b5bd44;Sampled=0;Lineage=1:4850f440:0"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"user\": {\n        \"id\": \"4b8d496c-9e9f-4702-9aa9-aade13997d09\",\n        \"created_at\": \"2026-02-17T12:54:13+0000\",\n        \"updated_at\": \"2026-02-17T12:54:13+0000\",\n        \"external_id\": \"test_user_api_3\",\n        \"onboarding\": 0,\n        \"metadata\": null\n    },\n    \"accounts\": [\n        {\n            \"id\": \"2284fb36-450c-4601-a4fc-029bee1c677e\",\n            \"external_id\": \"test_user_api_2_account_1_aa\",\n            \"user_id\": \"4b8d496c-9e9f-4702-9aa9-aade13997d09\",\n            \"account_number\": \"xxx-xxx-123a\",\n            \"account_type\": {\n                \"id\": \"93909b64-0e8c-4494-bec5-c84906430182\",\n                \"catalog\": \"f1895069-e723-4cc8-9331-d1cb4110ab7a\",\n                \"item_name\": \"cuenta_ahorro\",\n                \"description\": \"Cuenta Ahorro\",\n                \"metadata\": {\n                    \"icon\": \"/assets/xerpa/global/img/icons/account.svg\",\n                    \"type\": \"to\",\n                    \"color\": \"#7C2582\",\n                    \"active\": true,\n                    \"short_name\": \"CUENTAAHORRO\"\n                }\n            },\n            \"account_status\": {\n                \"id\": \"17425297-5c11-4cf2-975e-38327df355b7\",\n                \"catalog\": \"0e6dd428-f6c4-435d-be52-c6021bd5109b\",\n                \"item_name\": \"cuenta_activa\",\n                \"description\": \"Cuenta activa\",\n                \"metadata\": {\n                    \"icon\": \"/assets/xerpa/global/img/categories/cuenta_activa.svg\",\n                    \"color\": \"#7C2582\",\n                    \"active\": true,\n                    \"short_name\": \"CUENTAACTIVA\"\n                }\n            },\n            \"active_pfm\": true,\n            \"created_at\": \"2026-02-17T12:55:32+0000\",\n            \"updated_at\": \"2026-02-17T12:55:32+0000\"\n        },\n        {\n            \"id\": \"1d7c5b79-98c8-4910-baf3-3a662d38f23d\",\n            \"external_id\": \"test_user_api_2_account_2_aaa\",\n            \"user_id\": \"4b8d496c-9e9f-4702-9aa9-aade13997d09\",\n            \"account_number\": \"xxx-xxx-134a\",\n            \"account_type\": {\n                \"id\": \"e480d1b0-cb8e-448c-9864-ed7ae4ce20b3\",\n                \"catalog\": \"f1895069-e723-4cc8-9331-d1cb4110ab7a\",\n                \"item_name\": \"cuenta_vista\",\n                \"description\": \"Cuenta Vista\",\n                \"metadata\": {\n                    \"icon\": \"/assets/xerpa/global/img/icons/account.svg\",\n                    \"type\": \"from\",\n                    \"color\": \"#7C2582\",\n                    \"active\": true,\n                    \"short_name\": \"CUENTAVISTA\"\n                }\n            },\n            \"account_status\": {\n                \"id\": \"17425297-5c11-4cf2-975e-38327df355b7\",\n                \"catalog\": \"0e6dd428-f6c4-435d-be52-c6021bd5109b\",\n                \"item_name\": \"cuenta_activa\",\n                \"description\": \"Cuenta activa\",\n                \"metadata\": {\n                    \"icon\": \"/assets/xerpa/global/img/categories/cuenta_activa.svg\",\n                    \"color\": \"#7C2582\",\n                    \"active\": true,\n                    \"short_name\": \"CUENTAACTIVA\"\n                }\n            },\n            \"active_pfm\": true,\n            \"created_at\": \"2026-02-17T12:55:32+0000\",\n            \"updated_at\": \"2026-02-17T12:55:32+0000\"\n        }\n    ]\n}"}],"_postman_id":"6a899f1c-beb9-460b-9e94-0a400674ed4d"}],"id":"0c4238da-6eb1-425c-96cb-a88f8a238a45","_postman_id":"0c4238da-6eb1-425c-96cb-a88f8a238a45","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":true,"source":{"_postman_id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","name":"API Xerpa Middleware","type":"collection"}}},{"name":"Registro  de usuario y obtención de user token","event":[{"listen":"test","script":{"id":"db3a92ab-a5ca-49ab-8897-51f831e53f60","exec":["const response = pm.response.json();","pm.environment.set(\"token_user\", response.token);"],"type":"text/javascript","packages":{},"requests":{}}},{"listen":"prerequest","script":{"id":"0e59c44a-313d-4683-955b-ec69afc899ae","exec":["var body = pm.request.body.toJSON().raw;","console.log(body.external_id);","pm.environment.set(\"user_external_id\", body.external_id);"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"0cab6beb-767a-4b51-aecb-950e0c19eaac","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_app}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"external_id\": \"test_user_api_2\",\n    \"products\": [\n        {\n            \"product_id\": \"test_user_api_2_account_1\",\n            \"product_number\": \"aaaabbbb\",\n            \"product_type\": \"cuenta_ahorro\"\n        },\n        {\n            \"product_id\": \"test_user_api_2_account_2\",\n            \"product_number\": \"aaaaaccccc\",\n            \"product_type\": \"cuenta_vista\"\n        },\n                {\n            \"product_id\": \"test_user_api_2_account_4\",\n            \"product_number\": \"aaaaaccccchh\",\n            \"product_type\": \"cuenta_vista\"\n        }\n    ],\n    \"projects_balance\": [\n        {\n\t\t    \"product_id\": \"test_user_api_2_account_4\",\n\t\t    \"balance\": \"8000.00\"\n\t\t  },\n          {\n\t\t    \"product_id\": \"test_user_api_2_account_2\",\n\t\t    \"balance\": \"9000.00\"\n\t\t  }\n        \n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}token-user","description":"<p>Este endpoint permite obtener un token de usuario asociado al <code>external_id</code> enviado como parámetro en el cuerpo de la solicitud.</p>\n<p>Si es el primer ingreso del usuario, se creará el usuario en las bases de Xerpa y se retornará el token correspondiente.</p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><p><strong>Método:</strong> POST</p>\n</li>\n<li><p><strong>URL:</strong> {{host_middleware}}/token-user</p>\n</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>external_id</code>(string): Identificador alfanumérico único del usuario dentro de la solución Xerpa.</li>\n</ul>\n<h4 id=\"request-body-example\">Request Body Example</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"external_id\": \"test_user_api_2\"\n}\n\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><code>token</code>(string): Token generado para el usuario.</li>\n</ul>\n<h4 id=\"response-format\">Response Format</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n   \"token\": \"string\"\n}\n\n</code></pre>\n","urlObject":{"host":["{{host_middleware}}token-user"],"query":[],"variable":[]}},"response":[{"id":"4715dac0-3f07-4fa6-9e1a-6fefe2900bc4","name":"Successful Response","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"external_id\": \"test_user_api_2\",\n    \"products\": [\n        {\n            \"product_id\": \"test_user_api_2_account_1\",\n            \"product_number\": \"aaaabbbb\",\n            \"product_type\": \"cuenta_ahorro\"\n        },\n        {\n            \"product_id\": \"test_user_api_2_account_2\",\n            \"product_number\": \"aaaaaccccc\",\n            \"product_type\": \"cuenta_vista\"\n        },\n                {\n            \"product_id\": \"test_user_api_2_account_4\",\n            \"product_number\": \"aaaaaccccchh\",\n            \"product_type\": \"cuenta_vista\"\n        }\n    ],\n    \"projects_balance\": [\n        {\n\t\t    \"product_id\": \"test_user_api_2_account_4\",\n\t\t    \"balance\": \"8000.00\"\n\t\t  },\n          {\n\t\t    \"product_id\": \"test_user_api_2_account_2\",\n\t\t    \"balance\": \"9000.00\"\n\t\t  }\n        \n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/token-user"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 13 Jun 2025 21:22:34 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"1000"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"023b8636-cafe-46c5-8a0f-0beb98f3d288"},{"key":"x-amz-apigw-id","value":"MHx3qEi8oAMERDg="},{"key":"X-Amzn-Trace-Id","value":"Root=1-684c9697-248ff3342a8c8abc6bd70ae4;Parent=35d64c13612c9637;Sampled=0;Lineage=1:42292967:0"}],"cookie":[],"responseTime":null,"body":"{\n    \"token\": \"eyJraWQiOiJtMERLaG9wdHBGQ3V3eGVXU2VTd2ZqMDJoZlZ4NDd3WStPaXdMQjN2dnJVPSIsImFsZyI6IlJTMjU2In0.eyJvcmlnaW5fanRpIjoiOGFjZmMwMWMtMzI0ZS00NDA3LWE4MGMtNTQ4ZWZkYzdlNjlmIiwic3ViIjoiNjQ5ODM0ODgtZDA2MS03MDQwLTEzYjYtMzczNWM2ZTg0ZjI5IiwiYXVkIjoiMzFscWdvZmpvcGwwajF1MHFvNWszbDh1dTYiLCJldmVudF9pZCI6ImZhODY3ZDU0LTI0NjctNDE4OC1iODc3LWRkMTQ0MDQxMGQ3YyIsInRva2VuX3VzZSI6ImlkIiwiYXV0aF90aW1lIjoxNzQ5ODQ5NzU0LCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAudXMtZWFzdC0xLmFtYXpvbmF3cy5jb21cL3VzLWVhc3QtMV9sREFka3dLajAiLCJjb2duaXRvOnVzZXJuYW1lIjoidGVzdF91c2VyX2FwaV8yIiwiZXhwIjoxNzQ5ODUzMzU0LCJpYXQiOjE3NDk4NDk3NTQsImp0aSI6IjQwNGVkMGIyLWFmZDMtNDE1My1hZDFiLTI4NWJhMjY5Nzg1OSJ9.TGHcG_Z4eY6LwzhDMAPZEGfMie4z2dqw6vd-OTWtrhDybDRyr1Ck29DR86HxQpF-1m2wZ593piYhjGYq4dQy_ltN3RK2DMRcFoglGqAKThBlbM2TkziFLmxgqq-_NvVYsrrazH4t3eGsKUVH-FOUMxB2Nl_c5HlJeCIqEORg-nmVjHyDbSyknsXuf7asdRN3Z02QRcmdm3dXd_rgrl3knE_ACrHzRPx0uFZoDr2IM_O3Ni5EKBklWNDgaTqXzwV5eOO9UnfJ1g0DWGTp9plgjKNi6qgeed-Co0uMP5PyffjU0_a3S839mv0JHqLp9aryvl7mb7C2QhUkXKKeBRtWEw\"\n}"}],"_postman_id":"0cab6beb-767a-4b51-aecb-950e0c19eaac"},{"name":"Registro de usuario y cuentas","event":[{"listen":"test","script":{"id":"31caa3d2-0c89-4500-92c3-1ac47192f31c","exec":["const response = pm.response.json();","pm.environment.set(\"token_user\", response.token);"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"11861c98-c8d2-4a6d-a910-83abb9be95fd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_app}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"external_id\": \"16efcada-ab58-4c40-ad9c-d880f793877d\",\r\n    \"products\": [\r\n        {\r\n            \"product_id\": \"342ec405-4678-4aa0-aaa0-eb34e6b6e77d\",\r\n            \"product_number\": \"342ec405-4678-4aa0-aaa0-eb34e6b6e77d\",\r\n            \"product_type\": \"cuenta_vista\"\r\n        }\r\n    ]\r\n}\r\n","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/token-user","description":"<p>Adicionamente al registro de usuarios y la obtención del token, de forma simultánea se pueden crear y actualizar las cuentas de los usuarios registradas en Xerpa en la misma petición.</p>\n<h4 id=\"casos-posibles\">Casos posibles:</h4>\n<ul>\n<li><p><strong>Usuario nuevo o sin cuentas previas</strong>: Se crearán todas las cuentas y se le asociarán al usuario.</p>\n</li>\n<li><p><strong>Usuario con cuentas creadas</strong>: Si el usuario ya tiene cuentas, se compararán las existente en la base de Xerpa con las recibidas en la petición:</p>\n<ul>\n<li><p>Se crearán todas las cuentas que no existan en la base Xerpa y se asociarán al usuario</p>\n</li>\n<li><p>Se actualizarán todas las cuentas según el <code>account_id</code>.</p>\n</li>\n</ul>\n</li>\n</ul>\n<blockquote>\n<p>No se pueden eliminar cuentas desde este endpoint </p>\n</blockquote>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><p><strong>Método:</strong> POST</p>\n</li>\n<li><p><strong>URL:</strong> {{host_middleware}}/token-user</p>\n</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><p><code>external_id</code>(string): Identificador alfanumérico único del usuario dentro de la solución Xerpa.</p>\n</li>\n<li><p><code>accounts</code>(array): Array de productos asociados al usuario. Cada producto debe tener los siguientes campos:</p>\n<ul>\n<li><p><code>account_id</code>(string): Identificador alfanumérico único de la cuenta o producto del usuario dentro de la solución Xerpa.</p>\n</li>\n<li><p><code>account_number</code>(string): Identificador de cuenta que será visible en el frontend.</p>\n</li>\n<li><p><code>account_type</code>(string): Identificador del tipo de cuenta. Ej: cuenta_ahorro, cuenta_vista. Deben definirse los tipos que serán usados por el banco de acuerdo a sus productos habilitados para usar la solución Xerpa.</p>\n</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"request-body-example\">Request Body Example</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"external_id\": \"test_user_api_2\",\n  \"accounts\": [\n    {\n      \"account_id\": \"test_user_api_2_account_1\",\n      \"account_number\": \"aaaabbbb\",\n      \"account_type\": \"cuenta_ahorro\"\n    }\n  ]\n}\n\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><code>token</code>(string): Token generado para el usuario.</li>\n</ul>\n<h4 id=\"response-format\">Response Format</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"token\": {\n      \"type\": \"string\"\n    }\n  }\n}\n\n</code></pre>\n","urlObject":{"path":["token-user"],"host":["{{host_middleware}}"],"query":[],"variable":[]}},"response":[{"id":"ebb1f4cd-0bf0-4e51-8779-4ca055201dd0","name":"Registro de usuario y cuentas","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"external_id\": \"test_user_api\",\r\n    \"accounts\": [\r\n        {\r\n            \"account_id\": \"user-api-a\",\r\n            \"account_number\": \"user-qa-2-number-api\",\r\n            \"account_type\": \"cuenta_ahorro\"\r\n        },\r\n        {\r\n            \"account_id\": \"user-api-d\",\r\n            \"account_number\": \"user-qa-2-number-api-b\",\r\n            \"account_type\": \"cuenta_vista\"\r\n        }\r\n    ]\r\n}\r\n","options":{"raw":{"language":"json"}}},"url":"https://middleware.api.qa.bancoestado.getxerpa.com/api-middleware/v1/core-service/users/"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"token\": \"eyJraWQiOiJtMERLaG9wdHBGQ3V3eGVXU2VTd2ZqMDJoZlZ4NDd3WStPaXdMQjN2dnJVPSIsImFsZyI6IlJTMjU2In0.eyJvcmlnaW5fanRpIjoiMTUyZTA3YzItY2JjYy00MGVlLWI2ZDEtZTliNDUxNjUzZjc4Iiwic3ViIjoiZDRlODk0YTgtMzBjMS03MDE0LTZlMzQtYTIwMTRiODQ0N2MxIiwiYXVkIjoiMzFscWdvZmpvcGwwajF1MHFvNWszbDh1dTYiLCJldmVudF9pZCI6IjMyZGIyNTEwLWYzNTItNDJlMC05OWRjLWI5ZTdmN2M4YzFjMyIsInRva2VuX3VzZSI6ImlkIiwiYXV0aF90aW1lIjoxNzU1MTIwMzU3LCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAudXMtZWFzdC0xLmFtYXpvbmF3cy5jb21cL3VzLWVhc3QtMV9sREFka3dLajAiLCJjb2duaXRvOnVzZXJuYW1lIjoidGVzdF91c2VyX2FwaTIiLCJleHAiOjE3NTUxMjM5NTcsImlhdCI6MTc1NTEyMDM1NywianRpIjoiYTg3YmM4MmEtMDBlNS00ZjNkLTllOGEtNWI0ZjJjY2EwZTU2In0.SYhxcKauxE6Xmif6YgbULvTsc6JD79Xd1mfLcMfGwpjKrjoFMJsVowhnNbpMlZckXy8B6W3KZWkR6HjlQWf8nf-aaW2WenDFqNywWT6_dU2Flwi8CZpyrQ_7hdFAW5eOFNuuUhMX0RkKFPe0f_gVqtE9gHIauyEvxRP3f5y0ymGFxARyOOyaYWmjnQrHw6ayxmJAitDJlO3ppg7U8oKi1MJ40PX4SsQms5FK_zLfAyhFc0jgupY2805cvIJtaq_D0B_mirVWvhwFQfArtPATF5i2rlXnFLZ4zaIAxFSp6hyb6TGsW2qjqNsvulhfKxQXFgzKlnJNyMMN1ddFBEDWtQ\"\n}"}],"_postman_id":"11861c98-c8d2-4a6d-a910-83abb9be95fd"},{"name":"*Registro de usuario, cuentas y saldos","event":[{"listen":"test","script":{"id":"db3a92ab-a5ca-49ab-8897-51f831e53f60","exec":["const response = pm.response.json();","pm.environment.set(\"token_user\", response.token);"],"type":"text/javascript","packages":{}}}],"id":"d514f23d-5572-4999-a5ee-bde72d9a1b69","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_app}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"external_id\": \"test_user_api_2\",\n    \"products\": [\n        {\n            \"product_id\": \"test_user_api_2_account_1\",\n            \"product_number\": \"aaaabbbb\",\n            \"product_type\": \"cuenta_ahorro\"\n        },\n        {\n            \"product_id\": \"test_user_api_2_account_2\",\n            \"product_number\": \"aaaaaccccc\",\n            \"product_type\": \"cuenta_vista\"\n        },\n                {\n            \"product_id\": \"test_user_api_2_account_4\",\n            \"product_number\": \"aaaaaccccchh\",\n            \"product_type\": \"cuenta_vista\"\n        }\n    ],\n    \"projects_balance\": [\n        {\n\t\t    \"product_id\": \"test_user_api_2_account_4\",\n\t\t    \"balance\": \"8000.00\"\n\t\t  },\n          {\n\t\t    \"product_id\": \"test_user_api_2_account_2\",\n\t\t    \"balance\": \"9000.00\"\n\t\t  }\n        \n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/token-user-refresh","description":"<p>En la solución de <strong>Ahorro Automático</strong>, puedes generarse descuadres en los progresos de las metas que tiene registrado Xerpa y el saldo de las cuentas en donde se almacenan los ahorros. Es por esto que este endpoint permite hacer una actualización del saldo de las cuentas y progresos de las metas asociadas al momento de iniciar sesión.</p>\n<p>Agregando la propiedad <code>projects_balance</code> el sistema automáticamente actualizará el saldo asociado a la cuenta y el progreso de la meta de ahorro asociado a el.</p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><p><strong>Método:</strong> POST</p>\n</li>\n<li><p><strong>URL:</strong> {{host_middleware}}/token-user</p>\n</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><p><code>external_id</code>(string): Identificador alfanumérico único del usuario dentro de la solución Xerpa.</p>\n</li>\n<li><p>accounts(array): Array de cuentas asociadas al usuario. Cada cuenta debe tener los siguientes campos:</p>\n<ul>\n<li><p><code>account_id</code>(string): Identificador alfanumérico único de la cuenta o producto del usuario dentro de la solución Xerpa.</p>\n</li>\n<li><p><code>account_number</code>(string): Identificador de cuenta que será visible en el frontend.</p>\n</li>\n<li><p><code>account_type</code>(string): Identificador del tipo de cuenta. Ej: cuenta_ahorro, cuenta_vista. Deben definirse los tipos que serán usados por el banco de acuerdo a sus productos habilitados para usar la solución Xerpa.</p>\n</li>\n</ul>\n</li>\n<li><p><code>projects_balance</code>(array): Array de balances de proyectos asociados al usuario. Cada balance debe tener los siguientes campos:</p>\n<ul>\n<li><p><code>product_id</code>(string): Identificador alfanumérico único del producto.</p>\n</li>\n<li><p><code>balance</code>(string): Balance del producto.</p>\n</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"request-body-example\">Request Body Example</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"external_id\": \"test_user_api_2\",\n  \"accounts\": [\n    {\n      \"account_id\": \"test_user_api_2_account_1\",\n      \"account_number\": \"aaaabbbb\",\n      \"account_type\": \"cuenta_ahorro\"\n    }\n  ],\n  \"projects_balance\": [\n    {\n      \"account_id\": \"test_user_api_2_account_4\",\n      \"balance\": \"8000.00\"\n    }\n  ]\n}\n\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><code>token</code>(string): Token generado para el usuario.</li>\n</ul>\n<h4 id=\"response-format\">Response Format</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"token\": {\n      \"type\": \"string\"\n    }\n  }\n}\n\n</code></pre>\n","urlObject":{"path":["token-user-refresh"],"host":["{{host_middleware}}"],"query":[],"variable":[]}},"response":[{"id":"f90a64df-a516-4f38-90d5-87a7f72996c7","name":"Successful Response","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"external_id\": \"test_user_api_2\",\n    \"products\": [\n        {\n            \"product_id\": \"test_user_api_2_account_1\",\n            \"product_number\": \"aaaabbbb\",\n            \"product_type\": \"cuenta_ahorro\"\n        },\n        {\n            \"product_id\": \"test_user_api_2_account_2\",\n            \"product_number\": \"aaaaaccccc\",\n            \"product_type\": \"cuenta_vista\"\n        },\n                {\n            \"product_id\": \"test_user_api_2_account_4\",\n            \"product_number\": \"aaaaaccccchh\",\n            \"product_type\": \"cuenta_vista\"\n        }\n    ],\n    \"projects_balance\": [\n        {\n\t\t    \"product_id\": \"test_user_api_2_account_4\",\n\t\t    \"balance\": \"8000.00\"\n\t\t  },\n          {\n\t\t    \"product_id\": \"test_user_api_2_account_2\",\n\t\t    \"balance\": \"9000.00\"\n\t\t  }\n        \n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/token-user"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 13 Jun 2025 21:22:34 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"1000"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"023b8636-cafe-46c5-8a0f-0beb98f3d288"},{"key":"x-amz-apigw-id","value":"MHx3qEi8oAMERDg="},{"key":"X-Amzn-Trace-Id","value":"Root=1-684c9697-248ff3342a8c8abc6bd70ae4;Parent=35d64c13612c9637;Sampled=0;Lineage=1:42292967:0"}],"cookie":[],"responseTime":null,"body":"{\n    \"token\": \"eyJraWQiOiJtMERLaG9wdHBGQ3V3eGVXU2VTd2ZqMDJoZlZ4NDd3WStPaXdMQjN2dnJVPSIsImFsZyI6IlJTMjU2In0.eyJvcmlnaW5fanRpIjoiOGFjZmMwMWMtMzI0ZS00NDA3LWE4MGMtNTQ4ZWZkYzdlNjlmIiwic3ViIjoiNjQ5ODM0ODgtZDA2MS03MDQwLTEzYjYtMzczNWM2ZTg0ZjI5IiwiYXVkIjoiMzFscWdvZmpvcGwwajF1MHFvNWszbDh1dTYiLCJldmVudF9pZCI6ImZhODY3ZDU0LTI0NjctNDE4OC1iODc3LWRkMTQ0MDQxMGQ3YyIsInRva2VuX3VzZSI6ImlkIiwiYXV0aF90aW1lIjoxNzQ5ODQ5NzU0LCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAudXMtZWFzdC0xLmFtYXpvbmF3cy5jb21cL3VzLWVhc3QtMV9sREFka3dLajAiLCJjb2duaXRvOnVzZXJuYW1lIjoidGVzdF91c2VyX2FwaV8yIiwiZXhwIjoxNzQ5ODUzMzU0LCJpYXQiOjE3NDk4NDk3NTQsImp0aSI6IjQwNGVkMGIyLWFmZDMtNDE1My1hZDFiLTI4NWJhMjY5Nzg1OSJ9.TGHcG_Z4eY6LwzhDMAPZEGfMie4z2dqw6vd-OTWtrhDybDRyr1Ck29DR86HxQpF-1m2wZ593piYhjGYq4dQy_ltN3RK2DMRcFoglGqAKThBlbM2TkziFLmxgqq-_NvVYsrrazH4t3eGsKUVH-FOUMxB2Nl_c5HlJeCIqEORg-nmVjHyDbSyknsXuf7asdRN3Z02QRcmdm3dXd_rgrl3knE_ACrHzRPx0uFZoDr2IM_O3Ni5EKBklWNDgaTqXzwV5eOO9UnfJ1g0DWGTp9plgjKNi6qgeed-Co0uMP5PyffjU0_a3S839mv0JHqLp9aryvl7mb7C2QhUkXKKeBRtWEw\"\n}"}],"_postman_id":"d514f23d-5572-4999-a5ee-bde72d9a1b69"},{"name":"**Refrescar token de usuario","event":[{"listen":"test","script":{"id":"db3a92ab-a5ca-49ab-8897-51f831e53f60","exec":["const response = pm.response.json();","pm.environment.set(\"token_user\", response.token);"],"type":"text/javascript","packages":{}}}],"id":"9d3388a8-b725-4445-875e-101f80243280","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_app}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"external_id\": \"test_user_api_2\",\n    \"products\": [\n        {\n            \"product_id\": \"test_user_api_2_account_1\",\n            \"product_number\": \"aaaabbbb\",\n            \"product_type\": \"cuenta_ahorro\"\n        },\n        {\n            \"product_id\": \"test_user_api_2_account_2\",\n            \"product_number\": \"aaaaaccccc\",\n            \"product_type\": \"cuenta_vista\"\n        },\n                {\n            \"product_id\": \"test_user_api_2_account_4\",\n            \"product_number\": \"aaaaaccccchh\",\n            \"product_type\": \"cuenta_vista\"\n        }\n    ],\n    \"projects_balance\": [\n        {\n\t\t    \"product_id\": \"test_user_api_2_account_4\",\n\t\t    \"balance\": \"8000.00\"\n\t\t  },\n          {\n\t\t    \"product_id\": \"test_user_api_2_account_2\",\n\t\t    \"balance\": \"9000.00\"\n\t\t  }\n        \n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/token-user-refresh","description":"<p>Pending</p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><p><strong>Método:</strong> POST</p>\n</li>\n<li><p><strong>URL:</strong> {{host_middleware}}/token-user</p>\n</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><p><code>external_id</code>(string): Identificador alfanumérico único del usuario dentro de la solución Xerpa.</p>\n</li>\n<li><p><code>products</code>(array): Array de productos asociados al usuario. Cada producto debe tener los siguientes campos:</p>\n<ul>\n<li><p><code>product_id</code>(string): Identificador alfanumérico único de la cuenta o producto del usuario dentro de la solución Xerpa.</p>\n</li>\n<li><p><code>product_number</code>(string): Identificador de cuenta que será visible en el frontend.</p>\n</li>\n<li><p><code>product_type</code>(string): Identificador del tipo de cuenta. Ej: cuenta_ahorro, cuenta_vista. Deben definirse los tipos que serán usados por el banco de acuerdo a sus productos habilitados para usar la solución Xerpa.</p>\n</li>\n</ul>\n</li>\n<li><p><code>projects_balance</code>(array): Array de balances de proyectos asociados al usuario. Cada balance debe tener los siguientes campos:</p>\n<ul>\n<li><p><code>product_id</code>(string): Identificador alfanumérico único del producto.</p>\n</li>\n<li><p><code>balance</code>(string): Balance del producto.</p>\n</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"request-body-example\">Request Body Example</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"external_id\": \"test_user_api_2\",\n  \"products\": [\n    {\n      \"product_id\": \"test_user_api_2_account_1\",\n      \"product_number\": \"aaaabbbb\",\n      \"product_type\": \"cuenta_ahorro\"\n    }\n  ],\n  \"projects_balance\": [\n    {\n      \"product_id\": \"test_user_api_2_account_4\",\n      \"balance\": \"8000.00\"\n    }\n  ]\n}\n\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><code>token</code>(string): Token generado para el usuario.</li>\n</ul>\n<h4 id=\"response-format\">Response Format</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"token\": {\n      \"type\": \"string\"\n    }\n  }\n}\n\n</code></pre>\n","urlObject":{"path":["token-user-refresh"],"host":["{{host_middleware}}"],"query":[],"variable":[]}},"response":[{"id":"99f48a4a-b629-427b-8eb8-61d8a3a8f18a","name":"Successful Response","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"external_id\": \"test_user_api_2\",\n    \"products\": [\n        {\n            \"product_id\": \"test_user_api_2_account_1\",\n            \"product_number\": \"aaaabbbb\",\n            \"product_type\": \"cuenta_ahorro\"\n        },\n        {\n            \"product_id\": \"test_user_api_2_account_2\",\n            \"product_number\": \"aaaaaccccc\",\n            \"product_type\": \"cuenta_vista\"\n        },\n                {\n            \"product_id\": \"test_user_api_2_account_4\",\n            \"product_number\": \"aaaaaccccchh\",\n            \"product_type\": \"cuenta_vista\"\n        }\n    ],\n    \"projects_balance\": [\n        {\n\t\t    \"product_id\": \"test_user_api_2_account_4\",\n\t\t    \"balance\": \"8000.00\"\n\t\t  },\n          {\n\t\t    \"product_id\": \"test_user_api_2_account_2\",\n\t\t    \"balance\": \"9000.00\"\n\t\t  }\n        \n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/token-user"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 13 Jun 2025 21:22:34 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"1000"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"023b8636-cafe-46c5-8a0f-0beb98f3d288"},{"key":"x-amz-apigw-id","value":"MHx3qEi8oAMERDg="},{"key":"X-Amzn-Trace-Id","value":"Root=1-684c9697-248ff3342a8c8abc6bd70ae4;Parent=35d64c13612c9637;Sampled=0;Lineage=1:42292967:0"}],"cookie":[],"responseTime":null,"body":"{\n    \"token\": \"eyJraWQiOiJtMERLaG9wdHBGQ3V3eGVXU2VTd2ZqMDJoZlZ4NDd3WStPaXdMQjN2dnJVPSIsImFsZyI6IlJTMjU2In0.eyJvcmlnaW5fanRpIjoiOGFjZmMwMWMtMzI0ZS00NDA3LWE4MGMtNTQ4ZWZkYzdlNjlmIiwic3ViIjoiNjQ5ODM0ODgtZDA2MS03MDQwLTEzYjYtMzczNWM2ZTg0ZjI5IiwiYXVkIjoiMzFscWdvZmpvcGwwajF1MHFvNWszbDh1dTYiLCJldmVudF9pZCI6ImZhODY3ZDU0LTI0NjctNDE4OC1iODc3LWRkMTQ0MDQxMGQ3YyIsInRva2VuX3VzZSI6ImlkIiwiYXV0aF90aW1lIjoxNzQ5ODQ5NzU0LCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAudXMtZWFzdC0xLmFtYXpvbmF3cy5jb21cL3VzLWVhc3QtMV9sREFka3dLajAiLCJjb2duaXRvOnVzZXJuYW1lIjoidGVzdF91c2VyX2FwaV8yIiwiZXhwIjoxNzQ5ODUzMzU0LCJpYXQiOjE3NDk4NDk3NTQsImp0aSI6IjQwNGVkMGIyLWFmZDMtNDE1My1hZDFiLTI4NWJhMjY5Nzg1OSJ9.TGHcG_Z4eY6LwzhDMAPZEGfMie4z2dqw6vd-OTWtrhDybDRyr1Ck29DR86HxQpF-1m2wZ593piYhjGYq4dQy_ltN3RK2DMRcFoglGqAKThBlbM2TkziFLmxgqq-_NvVYsrrazH4t3eGsKUVH-FOUMxB2Nl_c5HlJeCIqEORg-nmVjHyDbSyknsXuf7asdRN3Z02QRcmdm3dXd_rgrl3knE_ACrHzRPx0uFZoDr2IM_O3Ni5EKBklWNDgaTqXzwV5eOO9UnfJ1g0DWGTp9plgjKNi6qgeed-Co0uMP5PyffjU0_a3S839mv0JHqLp9aryvl7mb7C2QhUkXKKeBRtWEw\"\n}"}],"_postman_id":"9d3388a8-b725-4445-875e-101f80243280"},{"name":"**Expirar token de usuario","event":[{"listen":"test","script":{"id":"db3a92ab-a5ca-49ab-8897-51f831e53f60","exec":["const response = pm.response.json();","pm.environment.set(\"token_user\", response.token);"],"type":"text/javascript","packages":{}}}],"id":"a112b156-389b-4ace-8ddf-db35a9920cbb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_app}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"external_id\": \"test_user_api_2\",\n    \"products\": [\n        {\n            \"product_id\": \"test_user_api_2_account_1\",\n            \"product_number\": \"aaaabbbb\",\n            \"product_type\": \"cuenta_ahorro\"\n        },\n        {\n            \"product_id\": \"test_user_api_2_account_2\",\n            \"product_number\": \"aaaaaccccc\",\n            \"product_type\": \"cuenta_vista\"\n        },\n                {\n            \"product_id\": \"test_user_api_2_account_4\",\n            \"product_number\": \"aaaaaccccchh\",\n            \"product_type\": \"cuenta_vista\"\n        }\n    ],\n    \"projects_balance\": [\n        {\n\t\t    \"product_id\": \"test_user_api_2_account_4\",\n\t\t    \"balance\": \"8000.00\"\n\t\t  },\n          {\n\t\t    \"product_id\": \"test_user_api_2_account_2\",\n\t\t    \"balance\": \"9000.00\"\n\t\t  }\n        \n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/token-user-refresh","description":"<p>Pendiente</p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><p><strong>Método:</strong> POST</p>\n</li>\n<li><p><strong>URL:</strong> {{host_middleware}}/token-user</p>\n</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><p><code>external_id</code>(string): Identificador alfanumérico único del usuario dentro de la solución Xerpa.</p>\n</li>\n<li><p><code>products</code>(array): Array de productos asociados al usuario. Cada producto debe tener los siguientes campos:</p>\n<ul>\n<li><p><code>product_id</code>(string): Identificador alfanumérico único de la cuenta o producto del usuario dentro de la solución Xerpa.</p>\n</li>\n<li><p><code>product_number</code>(string): Identificador de cuenta que será visible en el frontend.</p>\n</li>\n<li><p><code>product_type</code>(string): Identificador del tipo de cuenta. Ej: cuenta_ahorro, cuenta_vista. Deben definirse los tipos que serán usados por el banco de acuerdo a sus productos habilitados para usar la solución Xerpa.</p>\n</li>\n</ul>\n</li>\n<li><p><code>projects_balance</code>(array): Array de balances de proyectos asociados al usuario. Cada balance debe tener los siguientes campos:</p>\n<ul>\n<li><p><code>product_id</code>(string): Identificador alfanumérico único del producto.</p>\n</li>\n<li><p><code>balance</code>(string): Balance del producto.</p>\n</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"request-body-example\">Request Body Example</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"external_id\": \"test_user_api_2\",\n  \"products\": [\n    {\n      \"product_id\": \"test_user_api_2_account_1\",\n      \"product_number\": \"aaaabbbb\",\n      \"product_type\": \"cuenta_ahorro\"\n    }\n  ],\n  \"projects_balance\": [\n    {\n      \"product_id\": \"test_user_api_2_account_4\",\n      \"balance\": \"8000.00\"\n    }\n  ]\n}\n\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><code>token</code>(string): Token generado para el usuario.</li>\n</ul>\n<h4 id=\"response-format\">Response Format</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"token\": {\n      \"type\": \"string\"\n    }\n  }\n}\n\n</code></pre>\n","urlObject":{"path":["token-user-refresh"],"host":["{{host_middleware}}"],"query":[],"variable":[]}},"response":[{"id":"2a92322e-7661-4f9a-ae80-8cb143703bfc","name":"Successful Response","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"external_id\": \"test_user_api_2\",\n    \"products\": [\n        {\n            \"product_id\": \"test_user_api_2_account_1\",\n            \"product_number\": \"aaaabbbb\",\n            \"product_type\": \"cuenta_ahorro\"\n        },\n        {\n            \"product_id\": \"test_user_api_2_account_2\",\n            \"product_number\": \"aaaaaccccc\",\n            \"product_type\": \"cuenta_vista\"\n        },\n                {\n            \"product_id\": \"test_user_api_2_account_4\",\n            \"product_number\": \"aaaaaccccchh\",\n            \"product_type\": \"cuenta_vista\"\n        }\n    ],\n    \"projects_balance\": [\n        {\n\t\t    \"product_id\": \"test_user_api_2_account_4\",\n\t\t    \"balance\": \"8000.00\"\n\t\t  },\n          {\n\t\t    \"product_id\": \"test_user_api_2_account_2\",\n\t\t    \"balance\": \"9000.00\"\n\t\t  }\n        \n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/token-user"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 13 Jun 2025 21:22:34 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"1000"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"023b8636-cafe-46c5-8a0f-0beb98f3d288"},{"key":"x-amz-apigw-id","value":"MHx3qEi8oAMERDg="},{"key":"X-Amzn-Trace-Id","value":"Root=1-684c9697-248ff3342a8c8abc6bd70ae4;Parent=35d64c13612c9637;Sampled=0;Lineage=1:42292967:0"}],"cookie":[],"responseTime":null,"body":"{\n    \"token\": \"eyJraWQiOiJtMERLaG9wdHBGQ3V3eGVXU2VTd2ZqMDJoZlZ4NDd3WStPaXdMQjN2dnJVPSIsImFsZyI6IlJTMjU2In0.eyJvcmlnaW5fanRpIjoiOGFjZmMwMWMtMzI0ZS00NDA3LWE4MGMtNTQ4ZWZkYzdlNjlmIiwic3ViIjoiNjQ5ODM0ODgtZDA2MS03MDQwLTEzYjYtMzczNWM2ZTg0ZjI5IiwiYXVkIjoiMzFscWdvZmpvcGwwajF1MHFvNWszbDh1dTYiLCJldmVudF9pZCI6ImZhODY3ZDU0LTI0NjctNDE4OC1iODc3LWRkMTQ0MDQxMGQ3YyIsInRva2VuX3VzZSI6ImlkIiwiYXV0aF90aW1lIjoxNzQ5ODQ5NzU0LCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAudXMtZWFzdC0xLmFtYXpvbmF3cy5jb21cL3VzLWVhc3QtMV9sREFka3dLajAiLCJjb2duaXRvOnVzZXJuYW1lIjoidGVzdF91c2VyX2FwaV8yIiwiZXhwIjoxNzQ5ODUzMzU0LCJpYXQiOjE3NDk4NDk3NTQsImp0aSI6IjQwNGVkMGIyLWFmZDMtNDE1My1hZDFiLTI4NWJhMjY5Nzg1OSJ9.TGHcG_Z4eY6LwzhDMAPZEGfMie4z2dqw6vd-OTWtrhDybDRyr1Ck29DR86HxQpF-1m2wZ593piYhjGYq4dQy_ltN3RK2DMRcFoglGqAKThBlbM2TkziFLmxgqq-_NvVYsrrazH4t3eGsKUVH-FOUMxB2Nl_c5HlJeCIqEORg-nmVjHyDbSyknsXuf7asdRN3Z02QRcmdm3dXd_rgrl3knE_ACrHzRPx0uFZoDr2IM_O3Ni5EKBklWNDgaTqXzwV5eOO9UnfJ1g0DWGTp9plgjKNi6qgeed-Co0uMP5PyffjU0_a3S839mv0JHqLp9aryvl7mb7C2QhUkXKKeBRtWEw\"\n}"}],"_postman_id":"a112b156-389b-4ace-8ddf-db35a9920cbb"},{"name":"Dar de baja usuarios (pendiente)","id":"b010ba34-73ad-45ea-8fe5-a47c7072626d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":false},"method":"DELETE","header":[],"url":"{{host_middleware}}/delete-users","urlObject":{"path":["delete-users"],"host":["{{host_middleware}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"b010ba34-73ad-45ea-8fe5-a47c7072626d"},{"name":"Registro y actualización de usuario, cuentas y progress (sin token)","event":[{"listen":"test","script":{"id":"db3a92ab-a5ca-49ab-8897-51f831e53f60","exec":["const response = pm.response.json();","pm.environment.set(\"token_user\", response.token);"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"96b97310-e4c7-45f9-91a6-27163788a5cc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_app}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"external_id\": \"test_user_api_2\", // obligatorio\n    \"accounts\": [ //opcional\n        {\n            \"account_id\": \"test_user_api_2_account_1\",\n            \"account_number\": \"xxx-xxx-123\",\n            \"account_type\": \"cuenta_ahorro\"\n        },\n        {\n            \"account_id\": \"test_user_api_2_account_2\",\n            \"account_number\": \"xxx-xxx-134\",\n            \"account_type\": \"cuenta_vista\"\n        }\n    ],\n    \"projects_balance\": [ //opcional\n        {\n            \"to_account\": \"test_user_api_2_account_1\", // external_id de account\n            \"progress\": \"8000.00\"\n        },\n        {\n            \"to_account\": \"test_user_api_2_account_3\",\n            \"progress\": \"9000.00\"\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v1/core-service/init-user/","description":"<p>En la solución de <strong>Ahorro Automático</strong>, puedes generarse descuadres en los progresos de las metas que tiene registrado Xerpa y el saldo de las cuentas en donde se almacenan los ahorros. Es por esto que este endpoint permite hacer una actualización del saldo de las cuentas y progresos de las metas asociadas al momento de iniciar sesión.</p>\n<p>Agregando la propiedad <code>projects_balance</code> el sistema automáticamente actualizará el saldo asociado a la cuenta y el progreso de la meta de ahorro asociado a el.</p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><p><strong>Método:</strong> POST</p>\n</li>\n<li><p><strong>URL:</strong> {{host_middleware}}/token-user</p>\n</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><p><code>external_id</code>(string): Identificador alfanumérico único del usuario dentro de la solución Xerpa.</p>\n</li>\n<li><p>accounts(array): Array de cuentas asociadas al usuario. Cada cuenta debe tener los siguientes campos:</p>\n<ul>\n<li><p><code>account_id</code>(string): Identificador alfanumérico único de la cuenta o producto del usuario dentro de la solución Xerpa.</p>\n</li>\n<li><p><code>account_number</code>(string): Identificador de cuenta que será visible en el frontend.</p>\n</li>\n<li><p><code>account_type</code>(string): Identificador del tipo de cuenta. Ej: cuenta_ahorro, cuenta_vista. Deben definirse los tipos que serán usados por el banco de acuerdo a sus productos habilitados para usar la solución Xerpa.</p>\n</li>\n</ul>\n</li>\n<li><p><code>projects_balance</code>(array): Array de balances de proyectos asociados al usuario. Cada balance debe tener los siguientes campos:</p>\n<ul>\n<li><p><code>product_id</code>(string): Identificador alfanumérico único del producto.</p>\n</li>\n<li><p><code>balance</code>(string): Balance del producto.</p>\n</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"request-body-example\">Request Body Example</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"external_id\": \"test_user_api_2\",\n  \"accounts\": [\n    {\n      \"account_id\": \"test_user_api_2_account_1\",\n      \"account_number\": \"aaaabbbb\",\n      \"account_type\": \"cuenta_ahorro\"\n    }\n  ],\n  \"projects_balance\": [\n    {\n      \"account_id\": \"test_user_api_2_account_4\",\n      \"balance\": \"8000.00\"\n    }\n  ]\n}\n\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><code>token</code>(string): Token generado para el usuario.</li>\n</ul>\n<h4 id=\"response-format\">Response Format</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"token\": {\n      \"type\": \"string\"\n    }\n  }\n}\n\n</code></pre>\n","urlObject":{"path":["api-middleware","v1","core-service","init-user",""],"host":["{{host_middleware}}"],"query":[],"variable":[]}},"response":[{"id":"1d569f95-e7a5-4cfd-9fbd-32514f5a12f5","name":"Registro y actualización de usuario, cuentas y progress (sin token)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"external_id\": \"test_user_api_3\", // obligatorio\n    \"accounts\": [ //opcional\n        {\n            \"account_id\": \"test_user_api_2_account_1_aa\",\n            \"account_number\": \"xxx-xxx-123a\",\n            \"account_type\": \"cuenta_ahorro\"\n        },\n        {\n            \"account_id\": \"test_user_api_2_account_2_aaa\",\n            \"account_number\": \"xxx-xxx-134a\",\n            \"account_type\": \"cuenta_vista\"\n        }\n    ]\n\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v1/core-service/init-user/"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Date","value":"Tue, 17 Feb 2026 12:55:33 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"1972"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"0b85442b-1b40-42e1-82c0-263a27139160"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"x-amz-apigw-id","value":"Y7TCzEDxIAMEiew="},{"key":"X-Amzn-Trace-Id","value":"Root=1-69946544-5801d3fa613fb1bf65856a78;Parent=0221a23807b5bd44;Sampled=0;Lineage=1:4850f440:0"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"user\": {\n        \"id\": \"4b8d496c-9e9f-4702-9aa9-aade13997d09\",\n        \"created_at\": \"2026-02-17T12:54:13+0000\",\n        \"updated_at\": \"2026-02-17T12:54:13+0000\",\n        \"external_id\": \"test_user_api_3\",\n        \"onboarding\": 0,\n        \"metadata\": null\n    },\n    \"accounts\": [\n        {\n            \"id\": \"2284fb36-450c-4601-a4fc-029bee1c677e\",\n            \"external_id\": \"test_user_api_2_account_1_aa\",\n            \"user_id\": \"4b8d496c-9e9f-4702-9aa9-aade13997d09\",\n            \"account_number\": \"xxx-xxx-123a\",\n            \"account_type\": {\n                \"id\": \"93909b64-0e8c-4494-bec5-c84906430182\",\n                \"catalog\": \"f1895069-e723-4cc8-9331-d1cb4110ab7a\",\n                \"item_name\": \"cuenta_ahorro\",\n                \"description\": \"Cuenta Ahorro\",\n                \"metadata\": {\n                    \"icon\": \"/assets/xerpa/global/img/icons/account.svg\",\n                    \"type\": \"to\",\n                    \"color\": \"#7C2582\",\n                    \"active\": true,\n                    \"short_name\": \"CUENTAAHORRO\"\n                }\n            },\n            \"account_status\": {\n                \"id\": \"17425297-5c11-4cf2-975e-38327df355b7\",\n                \"catalog\": \"0e6dd428-f6c4-435d-be52-c6021bd5109b\",\n                \"item_name\": \"cuenta_activa\",\n                \"description\": \"Cuenta activa\",\n                \"metadata\": {\n                    \"icon\": \"/assets/xerpa/global/img/categories/cuenta_activa.svg\",\n                    \"color\": \"#7C2582\",\n                    \"active\": true,\n                    \"short_name\": \"CUENTAACTIVA\"\n                }\n            },\n            \"active_pfm\": true,\n            \"created_at\": \"2026-02-17T12:55:32+0000\",\n            \"updated_at\": \"2026-02-17T12:55:32+0000\"\n        },\n        {\n            \"id\": \"1d7c5b79-98c8-4910-baf3-3a662d38f23d\",\n            \"external_id\": \"test_user_api_2_account_2_aaa\",\n            \"user_id\": \"4b8d496c-9e9f-4702-9aa9-aade13997d09\",\n            \"account_number\": \"xxx-xxx-134a\",\n            \"account_type\": {\n                \"id\": \"e480d1b0-cb8e-448c-9864-ed7ae4ce20b3\",\n                \"catalog\": \"f1895069-e723-4cc8-9331-d1cb4110ab7a\",\n                \"item_name\": \"cuenta_vista\",\n                \"description\": \"Cuenta Vista\",\n                \"metadata\": {\n                    \"icon\": \"/assets/xerpa/global/img/icons/account.svg\",\n                    \"type\": \"from\",\n                    \"color\": \"#7C2582\",\n                    \"active\": true,\n                    \"short_name\": \"CUENTAVISTA\"\n                }\n            },\n            \"account_status\": {\n                \"id\": \"17425297-5c11-4cf2-975e-38327df355b7\",\n                \"catalog\": \"0e6dd428-f6c4-435d-be52-c6021bd5109b\",\n                \"item_name\": \"cuenta_activa\",\n                \"description\": \"Cuenta activa\",\n                \"metadata\": {\n                    \"icon\": \"/assets/xerpa/global/img/categories/cuenta_activa.svg\",\n                    \"color\": \"#7C2582\",\n                    \"active\": true,\n                    \"short_name\": \"CUENTAACTIVA\"\n                }\n            },\n            \"active_pfm\": true,\n            \"created_at\": \"2026-02-17T12:55:32+0000\",\n            \"updated_at\": \"2026-02-17T12:55:32+0000\"\n        }\n    ]\n}"}],"_postman_id":"96b97310-e4c7-45f9-91a6-27163788a5cc"}],"id":"45b81d19-771b-4aea-8a92-4379b41a4e59","description":"<p>Los usuarios son la base para toda la información que se genera con la plataforma. Independiente de la solución implementada Control de Gastos y/o Ahorros Automáticos, siempre todos los registros tendrán el identificador del usuarios al que pertenecen.</p>\n<p>El usuario se crea comunicando un <strong>external_id</strong>, que es un indicador único del usuario y el retornará siempre un <strong>user_token</strong> con el cual se podrán invocar las APIs de PFM.</p>\n<p>El external_id debe ser un dato anonimizado del usuario del banco ya que Xerpa no almacena información personal.</p>\n<p>El endpoint de registro de usuarios tiene múltiples funciones que se pueden activar dependiendo del caso de uso que se quiera implementar. El endpoint automáticamente identificará que tareas ejecutar dependiendo del request que se realice.</p>\n","_postman_id":"45b81d19-771b-4aea-8a92-4379b41a4e59","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":true,"source":{"_postman_id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","name":"API Xerpa Middleware","type":"collection"}}},{"name":"Cuentas","item":[{"name":"Añadir cuentas a un usuario","id":"335a8711-3d76-4a31-900e-c35d4622fc90","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_app}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"[\r\n    {\r\n        \"product_id\": \"user-qa-2-ahorro\",\r\n        \"product_number\": \"user-qa-2-number-ahorro\",\r\n        \"product_type\": \"cuenta_ahorro\"\r\n    },\r\n    {\r\n        \"product_id\": \"user-qa-2-vista\",\r\n        \"product_number\": \"user-qa-2-number-vista\",\r\n        \"product_type\": \"cuenta_vista\"\r\n    },\r\n        {\r\n        \"product_id\": \"user-qa-2-tc\",\r\n        \"product_number\": \"user-qa-2-number-tc\",\r\n        \"product_type\": \"tarjeta_debito\"\r\n    }\r\n]","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v1/core-service/users/{{user_external_id}}/products/","description":"<p>Este endpoint permite asociar un listado de cuentas al usuario con el <code>external_id</code> indicado en la URL. Solo se persisten las cuentas con <code>account_id</code> que aún no se hayan registrado en Xerpa.</p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><p><strong>Método:</strong> <code>POST</code></p>\n</li>\n<li><p><strong>URL:</strong> <code>/api-middleware/v1/core-service/users/{{user_external_id}}/accounts/</code></p>\n</li>\n<li><p><strong>Parámetros de ruta:</strong></p>\n<ul>\n<li><strong>user_external_id:</strong> Identificador alfanumérico único del usuario dentro de la solución Xerpa.</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<p>Array de cuentas asociados al usuario. Cada producto debe tener los siguientes campos:</p>\n<ul>\n<li><p><strong>account_id</strong> (string): Identificador alfanumérico único de la cuenta o producto del usuario dentro de la solución Xerpa.</p>\n</li>\n<li><p><strong>account_number</strong> (string): Identificador de cuenta que será visible en el frontend.</p>\n</li>\n<li><p><strong>account_type</strong> (string): Identificador del tipo de cuenta. Ej: <code>cuenta_ahorro</code>, <code>cuenta_vista</code>. Deben definirse los tipos que serán usados por el banco de acuerdo a sus productos habilitados para usar la solución Xerpa.</p>\n</li>\n</ul>\n<h4 id=\"request-body-example\">Request Body Example</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[\n    {\n        \"account_id\": \"user-qa-2-ahorro\",\n        \"account_number\": \"user-qa-2-number-ahorro\",\n        \"account_type\": \"cuenta_ahorro\"\n    },\n    {\n        \"account_id\": \"user-qa-2-vista\",\n        \"account_number\": \"user-qa-2-number-vista\",\n        \"account_type\": \"cuenta_vista\"\n    },\n    {\n        \"account_id\": \"user-qa-2-tc\",\n        \"account_number\": \"user-qa-2-number-tc\",\n        \"account_type\": \"tarjeta_debito\"\n    }\n]\n\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<p>Retorna un JSON vacio, indicando que se realizo correctamente la operación.</p>\n","urlObject":{"path":["api-middleware","v1","core-service","users","{{user_external_id}}","products",""],"host":["{{host_middleware}}"],"query":[],"variable":[]}},"response":[{"id":"199bd65c-6030-4647-9577-561bc5314442","name":"Successful Response","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"\r\n   [\r\n            {\r\n                \"product_id\": \"user-qa-2e\",\r\n                \"product_number\": \"user-qa-2-number-e\",\r\n                \"product_type\": \"cuenta_ahorro\"\r\n            },\r\n            {\r\n                \"product_id\": \"user-qa-2f\",\r\n                \"product_number\": \"user-qa-2-number-f\",\r\n                \"product_type\": \"cuenta_ahorro\"\r\n            }\r\n        ]","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}api-middleware/v1/core-service/users/{{user_external_id}}/products/"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"product_type\": \"cuenta_ahorro\",\n        \"product_id\": \"user-qa-2e\",\n        \"product_number\": \"user-qa-2-number-e\"\n    },\n    {\n        \"product_type\": \"cuenta_ahorro\",\n        \"product_id\": \"user-qa-2f\",\n        \"product_number\": \"user-qa-2-number-f\"\n    }\n]"},{"id":"aa51f9e4-ee8b-4b65-8a57-7e85625dff57","name":"Añadir cuentas a un usuario","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"[\r\n    {\r\n        \"product_id\": \"user-qa-2-ahorro\",\r\n        \"product_number\": \"user-qa-2-number-ahorro\",\r\n        \"product_type\": \"cuenta_ahorro\"\r\n    },\r\n    {\r\n        \"product_id\": \"user-qa-2-vista\",\r\n        \"product_number\": \"user-qa-2-number-vista\",\r\n        \"product_type\": \"cuenta_vista\"\r\n    },\r\n        {\r\n        \"product_id\": \"user-qa-2-tc\",\r\n        \"product_number\": \"user-qa-2-number-tc\",\r\n        \"product_type\": \"tarjeta_debito\"\r\n    }\r\n]","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v1/core-service/users/{{user_external_id}}/products/"},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":null}],"_postman_id":"335a8711-3d76-4a31-900e-c35d4622fc90"},{"name":"Añadir cuentas a un usuario v2","id":"8e6a2821-d5cb-4120-9621-7f4131ad2022","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_app}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"[\r\n    {\r\n        \"product_id\": \"user-qa-2-ahorro\",\r\n        \"product_number\": \"user-qa-2-number-ahorro\",\r\n        \"product_type\": \"cuenta_ahorro\"\r\n    },\r\n    {\r\n        \"product_id\": \"user-qa-2-vista\",\r\n        \"product_number\": \"user-qa-2-number-vista\",\r\n        \"product_type\": \"cuenta_vista\"\r\n    },\r\n        {\r\n        \"product_id\": \"user-qa-2-tc\",\r\n        \"product_number\": \"user-qa-2-number-tc\",\r\n        \"product_type\": \"tarjeta_debito\"\r\n    }\r\n]","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v1/core-service/users/{{user_external_id}}/accounts/","description":"<p>(CAMBIAR PRODUCT POR ACCOUNT)</p>\n<p>Este endpoint permite persistir un listado de productos asociados al usuario con el <code>external_id</code> indicado en la URL. Solo se persisten los productos con <code>product_id</code> que aún no se hayan registrado en Xerpa.</p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><p><strong>Método:</strong> <code>POST</code></p>\n</li>\n<li><p><strong>URL:</strong> <code>/api-middleware/v1/core-service/users/{{user_external_id}}/accounts/</code></p>\n</li>\n<li><p><strong>Parámetros de ruta:</strong></p>\n<ul>\n<li><strong>user_external_id:</strong> Identificador alfanumérico único del usuario dentro de la solución Xerpa.</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<p>Array de productos asociados al usuario. Cada producto debe tener los siguientes campos:</p>\n<ul>\n<li><p><strong>product_id</strong> (string): Identificador alfanumérico único de la cuenta o producto del usuario dentro de la solución Xerpa.</p>\n</li>\n<li><p><strong>product_number</strong> (string): Identificador de cuenta que será visible en el frontend.</p>\n</li>\n<li><p><strong>product_type</strong> (string): Identificador del tipo de cuenta. Ej: <code>cuenta_ahorro</code>, <code>cuenta_vista</code>. Deben definirse los tipos que serán usados por el banco de acuerdo a sus productos habilitados para usar la solución Xerpa.</p>\n</li>\n</ul>\n<h4 id=\"request-body-example\">Request Body Example</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[\n    {\n        \"product_id\": \"user-qa-2-ahorro\",\n        \"product_number\": \"user-qa-2-number-ahorro\",\n        \"product_type\": \"cuenta_ahorro\"\n    },\n    {\n        \"product_id\": \"user-qa-2-vista\",\n        \"product_number\": \"user-qa-2-number-vista\",\n        \"product_type\": \"cuenta_vista\"\n    },\n    {\n        \"product_id\": \"user-qa-2-tc\",\n        \"product_number\": \"user-qa-2-number-tc\",\n        \"product_type\": \"tarjeta_debito\"\n    }\n]\n\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<p>Retorna un JSON vacio, indicando que se realizo correctamente la operación.</p>\n","urlObject":{"path":["api-middleware","v1","core-service","users","{{user_external_id}}","accounts",""],"host":["{{host_middleware}}"],"query":[],"variable":[]}},"response":[{"id":"9d392ed8-2a40-4666-b7f5-5861ca6bdb7a","name":"Successful Response","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"\r\n   [\r\n            {\r\n                \"product_id\": \"user-qa-2e\",\r\n                \"product_number\": \"user-qa-2-number-e\",\r\n                \"product_type\": \"cuenta_ahorro\"\r\n            },\r\n            {\r\n                \"product_id\": \"user-qa-2f\",\r\n                \"product_number\": \"user-qa-2-number-f\",\r\n                \"product_type\": \"cuenta_ahorro\"\r\n            }\r\n        ]","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}api-middleware/v1/core-service/users/{{user_external_id}}/products/"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"product_type\": \"cuenta_ahorro\",\n        \"product_id\": \"user-qa-2e\",\n        \"product_number\": \"user-qa-2-number-e\"\n    },\n    {\n        \"product_type\": \"cuenta_ahorro\",\n        \"product_id\": \"user-qa-2f\",\n        \"product_number\": \"user-qa-2-number-f\"\n    }\n]"}],"_postman_id":"8e6a2821-d5cb-4120-9621-7f4131ad2022"},{"name":"Obtener cuentas de un usuario","id":"ca61c96c-fe05-4616-b55a-6313c257aa32","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{host_middleware}}/api-middleware/v1/core-service/users/{{user_external_id}}/accounts/","urlObject":{"path":["api-middleware","v1","core-service","users","{{user_external_id}}","accounts",""],"host":["{{host_middleware}}"],"query":[],"variable":[]}},"response":[{"id":"55281b3e-c133-45f1-a341-6f378606997f","name":"Successful Response","originalRequest":{"method":"GET","header":[],"url":"{{host_middleware}}api-middleware/v1/core-service/users/{{user_external_id}}/products/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"product_type\": \"cuenta_vista\",\n        \"product_id\": \"xh-user-qa-1-dev2\",\n        \"product_number\": \"xxxxx-123-xxx\"\n    },\n    {\n        \"product_type\": \"cuenta_ahorro\",\n        \"product_id\": \"xh-user-qa-1-dev\",\n        \"product_number\": \"xxxxx-456-xxx\"\n    },\n    {\n        \"product_type\": \"cuenta_ahorro\",\n        \"product_id\": \"xh-user-qa-1-dev3\",\n        \"product_number\": \"xxxxx-789-xxx\"\n    },\n    {\n        \"product_type\": \"cuenta_ahorro\",\n        \"product_id\": \"user-qa-2c\",\n        \"product_number\": \"user-qa-2-number-a\"\n    },\n    {\n        \"product_type\": \"cuenta_ahorro\",\n        \"product_id\": \"user-qa-2d\",\n        \"product_number\": \"user-qa-2-number-b\"\n    },\n    {\n        \"product_type\": \"cuenta_ahorro\",\n        \"product_id\": \"1b776e47-9ef2-4536-b1ea-c62700e15bf8\",\n        \"product_number\": \"7dc3cb92-810e-431f-b82f-ef814ad18c92\"\n    }\n]"}],"_postman_id":"ca61c96c-fe05-4616-b55a-6313c257aa32"},{"name":"Cambiar estado de cuenta","id":"d79f1407-3549-4bda-bd72-c0666b6f3aec","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":false},"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\r\n    \"product_status\": \"uuid_cuenta_activa\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v1/core-service/users/{{user_external_id}}/products/{{account_id}}/","urlObject":{"path":["api-middleware","v1","core-service","users","{{user_external_id}}","products","{{account_id}}",""],"host":["{{host_middleware}}"],"query":[],"variable":[]}},"response":[{"id":"937f0eba-481f-4f7a-99f4-8cd45a437037","name":"Successful Response","originalRequest":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\r\n    \"product_status\": \"cuenta_activa\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}api-middleware/v1/core-service/users/{{user_external_id}}/products/{{account_id}}/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"product_type\": \"cuenta_ahorro\",\n    \"product_id\": \"user-qa-2e\",\n    \"product_number\": \"user-qa-2-number-e\"\n}"}],"_postman_id":"d79f1407-3549-4bda-bd72-c0666b6f3aec"}],"id":"2804de5a-0f22-42b5-91d8-a3d44f637fbf","description":"<p>A través de las cuentas se registran todos los productos financieros asociados a los usuarios. Sobre las cuentas después se puende registrar transacciones de ingresos y gastos.</p>\n<p>La información de las cuentas de recibe de forma anonimizada y se identifican a través de un account_id. De forma adicional se recibe un account number, que corresponde a un número enmascarado de la cuenta para mostrarle al usuario final.</p>\n<p>Las cuentas que se vinculan a un usuario deben contener la siguiente información.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descripción</th>\n<th>Ejemplo</th>\n<th>Required</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>account_id</td>\n<td>Identificador alfanumérico de la cuenta</td>\n<td>031021f8-ba13-4baf-957a-662be5e36703</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>account_number</td>\n<td>Número enmascarado.</td>\n<td>XXXX-1234</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>account_type</td>\n<td>Identificador alfanumérico correspondiente al tipo de cuenta</td>\n<td>A01</td>\n<td>Yes</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"tipos-de-cuentas\">Tipos de cuentas</h2>\n<p>Se pueden recibir los siguientes productos financieros para asociarlos al usuario</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Tipo</th>\n<th>PFM</th>\n<th>Ahorro Automático</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Cuentas Vista</td>\n<td>Si</td>\n<td>Si</td>\n</tr>\n<tr>\n<td>Cuentas de Ahorro</td>\n<td>Si</td>\n<td>Si</td>\n</tr>\n<tr>\n<td>Cuentas Corrientes</td>\n<td>Si</td>\n<td>Si</td>\n</tr>\n<tr>\n<td>Cuentas de Inversión</td>\n<td>Si</td>\n<td>Si</td>\n</tr>\n<tr>\n<td>Tarjetas de Débito</td>\n<td>Si</td>\n<td>Si</td>\n</tr>\n<tr>\n<td>Tarjetas de Crédito</td>\n<td>Si</td>\n<td>Si</td>\n</tr>\n<tr>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"2804de5a-0f22-42b5-91d8-a3d44f637fbf","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":true,"source":{"_postman_id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","name":"API Xerpa Middleware","type":"collection"}}},{"name":"Ahorros","item":[{"name":"Flujo de ahorros en batch","item":[],"id":"c569b656-ebe5-41cd-b47c-3269e9a5d124","_postman_id":"c569b656-ebe5-41cd-b47c-3269e9a5d124","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":true,"source":{"_postman_id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","name":"API Xerpa Middleware","type":"collection"}}},{"name":"Ahorros y retiros manuales","item":[{"name":"Transaccion manual de ahorro","id":"92316e50-f315-4597-9b3a-cf9c999bdd83","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"user_id\": \"7a1cb76c-9af3-4557-bc6c-f56f9ee8ef8e\",\r\n    \"pk\": \"{{project_id}}\",\r\n    \"amount\": 10.00,\r\n    \"from_account\": \"test_user_api_2_account_1\",\r\n    \"to_account\": \"test_user_api_2_account_2\",\r\n    \"operation_id\": \"91f2c328-11b7-4376-a0c8-a74f45e66daa\",\r\n    \"date_time\": \"20230804150250\",\r\n    \"authorization\": {\r\n        \"token\": \"token de banco\",\r\n        \"jwToken\": \"token\"\r\n    },\r\n    \"metadata\":{\r\n        \"type\": \"saving\"\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v1/savings/manual-movement/","description":"<p>Este endpoint permite realizar un movimiento manual de ahorros entre cuentas de usuario en el sistema.</p>\n<h4 id=\"request\"><strong>Request</strong></h4>\n<ul>\n<li><p>Método: POST</p>\n</li>\n<li><p>URL: {{host_middleware}}/api-middleware/v1/savings/manual-movement/</p>\n</li>\n</ul>\n<h4 id=\"request-body\"><strong>Request Body:</strong></h4>\n<ul>\n<li><p><code>user_id</code> (string): Identificador único del usuario que realiza el movimiento.</p>\n</li>\n<li><p><code>pk</code> (string): Identificador del proyecto asociado al movimiento.</p>\n</li>\n<li><p><code>amount</code> (integer): Monto a mover entre las cuentas.</p>\n</li>\n<li><p><code>from_account</code> (string): Cuenta de origen desde la cual se retira el monto.</p>\n</li>\n<li><p><code>to_account</code> (string): Cuenta de destino a la cual se deposita el monto.</p>\n</li>\n<li><p><code>operation_id</code> (string): Identificador único de la operación.</p>\n</li>\n<li><p><code>date_time</code> (string): Fecha y hora del movimiento en formato YYYYMMDDHHMMSS.</p>\n</li>\n<li><p><code>authorization</code> (object): Información de autorización que incluye:</p>\n<ul>\n<li><p><code>token</code> (string): Token de autorización del banco.</p>\n</li>\n<li><p><code>jwToken</code> (string): Token JWT para la sesión.</p>\n</li>\n</ul>\n</li>\n<li><p><code>metadata</code> (object): Información adicional sobre el movimiento, que incluye:</p>\n<ul>\n<li><code>type</code> (string): Tipo de movimiento, en este caso \"saving\".</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"request-body-example\"><strong>Request Body Example:</strong></h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"user_id\": \"7a1cb76c-9af3-4557-bc6c-f56f9e...\",\n  \"pk\": \"{{project_id}}\",\n  \"amount\": 10,\n  \"from_account\": \"test_user_api_2_account_1\",\n  \"to_account\": \"test_user_api_2_account_2\",\n  \"operation_id\": \"91f2c328-11b7-4376-a0c8-a74f45...\",\n  \"date_time\": \"20230804150250\",\n  \"authorization\": {\n    \"token\": \"token de banco\",\n    \"jwToken\": \"token\"\n  },\n  \"metadata\": {\n    \"type\": \"saving\"\n  }\n}\n\n</code></pre>\n<p><strong>Response:</strong></p>\n<ul>\n<li><p><code>statusCode</code> (integer): Código de estado de la respuesta, donde 0 indica éxito.</p>\n</li>\n<li><p><code>body</code> (object): Contenido del cuerpo de la respuesta que incluye:</p>\n<ul>\n<li><code>message</code> (string): Mensaje de confirmación o error.</li>\n</ul>\n</li>\n<li><p><code>headers</code> (object): Encabezados de la respuesta que pueden incluir información adicional sobre la respuesta.</p>\n</li>\n</ul>\n<p><strong>Response Format:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"statusCode\": {\n      \"type\": \"integer\",\n      \"const\": 200\n    },\n    \"body\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"message\": {\n          \"type\": \"string\",\n          \"const\": \"OK\"\n        }\n      }\n    },\n    \"headers\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"Content-Type\": {\n          \"type\": \"string\",\n          \"const\": \"application/json\"\n        },\n        \"Access-Control-Allow-Origin\": {\n          \"type\": \"string\",\n          \"const\": \"*\"\n        },\n        \"Access-Control-Allow-Credentials\": {\n          \"type\": \"boolean\",\n          \"const\": true\n        }\n      }\n    }\n  }\n}\n\n</code></pre>\n","urlObject":{"path":["api-middleware","v1","savings","manual-movement",""],"host":["{{host_middleware}}"],"query":[],"variable":[]}},"response":[{"id":"cbcfb28f-31f7-4f1c-9e99-b4d4767a9ff4","name":"Successful Response","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"user_id\": \"7a1cb76c-9af3-4557-bc6c-f56f9ee8ef8e\",\r\n    \"pk\": \"{{project_id}}\",\r\n    \"amount\": 10.00,\r\n    \"from_account\": \"test_user_api_2_account_1\",\r\n    \"to_account\": \"test_user_api_2_account_2\",\r\n    \"operation_id\": \"91f2c328-11b7-4376-a0c8-a74f45e66daa\",\r\n    \"date_time\": \"20230804150250\",\r\n    \"authorization\": {\r\n        \"token\": \"token de banco\",\r\n        \"jwToken\": \"token\"\r\n    },\r\n    \"metadata\":{\r\n        \"type\": \"saving\"\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v1/savings/manual-movement/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 13 Jun 2025 19:33:46 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"162"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"4212d1fb-8ff6-4cfa-9bdd-861765b0c7dc"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"x-amz-apigw-id","value":"MHh78FY4oAMEPJg="},{"key":"X-Amzn-Trace-Id","value":"Root=1-684c7d18-631877d9439bd0206c353062;Parent=3d5bdde4f570e225;Sampled=0;Lineage=1:4850f440:0"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"statusCode\": 200,\n    \"body\": {\n        \"message\": \"OK\"\n    },\n    \"headers\": {\n        \"Content-Type\": \"application/json\",\n        \"Access-Control-Allow-Origin\": \"*\",\n        \"Access-Control-Allow-Credentials\": true\n    }\n}"},{"id":"e1c5e90b-68a6-424d-9977-b87ae62ef076","name":"Bad Request - Invalid account id","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"user_id\": \"7a1cb76c-9af3-4557-bc6c-f56f9ee8ef8e\",\r\n    \"pk\": \"{{project_id}}\",\r\n    \"amount\": 10.00,\r\n    \"from_account\": \"invalid\",\r\n    \"to_account\": \"invalid\",\r\n    \"operation_id\": \"invalid\",\r\n    \"date_time\": \"20230804150250\",\r\n    \"authorization\": {\r\n        \"token\": \"token de banco\",\r\n        \"jwToken\": \"token\"\r\n    },\r\n    \"metadata\":{\r\n        \"type\": \"saving\"\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v1/savings/manual-movement/"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 13 Jun 2025 19:38:42 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"92"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"842d77d2-8503-4dca-ba60-a992ac1f7391"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"x-amz-apigw-id","value":"MHiqYFZBoAMEKdA="},{"key":"X-Amzn-Trace-Id","value":"Root=1-684c7e42-59bb9ab42a8884077a491c84;Parent=36298434ab41ca3d;Sampled=0;Lineage=1:4850f440:0"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"statusCode\": 500,\n    \"body\": {\n        \"error_code\": \"4\",\n        \"error_message\": \"External account id not found\"\n    }\n}"}],"_postman_id":"92316e50-f315-4597-9b3a-cf9c999bdd83"},{"name":"Transaccion manual de ahorro asincronico","id":"d8cf204a-0645-4281-b22e-ba1d68c374ae","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"user_id\": \"7a1cb76c-9af3-4557-bc6c-f56f9ee8ef8e\",\n    \"pk\": \"{{project_id}}\",\n    \"amount\": 10.00,\n    \"from_account\": \"test_user_api_2_account_1\",\n    \"to_account\": \"test_user_api_2_account_2\",\n    \"operation_id\": \"91f2c328-11b7-4376-a0c8-a74f45e66daa\",\n    \"date_time\": \"20230804150250\",\n    \"authorization\": {\n        \"token\": \"token de banco\",\n        \"jwToken\": \"token\"\n    },\n    \"metadata\":{\n        \"type\": \"saving\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v1/savings/manual-movement-async/","description":"<p>Este endpoint permite realizar un movimiento manual de ahorros de manera asíncrona entre cuentas de usuario. Se utiliza para transferir un monto específico de una cuenta a otra, registrando la operación y su estado.</p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><p><strong>Método:</strong> POST</p>\n</li>\n<li><p><strong>URL:</strong> <code>{{host_middleware}}/api-middleware/v1/savings/manual-movement-async/</code></p>\n</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><p><code>user_id</code>(string): Identificador único del usuario que realiza la operación.</p>\n</li>\n<li><p><code>pk</code>(string): Identificador del proyecto relacionado con la operación.</p>\n</li>\n<li><p><code>amount</code>(number): Monto a transferir entre las cuentas.</p>\n</li>\n<li><p><code>from_account</code>(string): Cuenta de origen desde la cual se transfiere el monto.</p>\n</li>\n<li><p><code>to_account</code>(string): Cuenta de destino a la cual se transfiere el monto.</p>\n</li>\n<li><p><code>operation_id</code>(string): Identificador único de la operación de movimiento.</p>\n</li>\n<li><p><code>date_time</code>(string): Fecha y hora en formato <code>YYYYMMDDHHMMSS</code> en la que se realiza la operación.</p>\n</li>\n<li><p><code>authorization</code>(object): Información de autorización para la operación.</p>\n<ul>\n<li><p><code>token</code>(string): Token de autorización del banco.</p>\n</li>\n<li><p><code>jwToken</code>(string): Token JWT para la autorización.</p>\n</li>\n</ul>\n</li>\n<li><p><code>metadata</code>(object): Metadatos adicionales sobre la operación.</p>\n<ul>\n<li><code>type</code>(string): Tipo de operación, en este caso, \"saving\".</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"request-body-example\">Request Body Example</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"user_id\": \"7a1cb76c-9af3-4557-bc6c-f56f9e ...\",\n  \"pk\": \"{{project_id}}\",\n  \"amount\": 10,\n  \"from_account\": \"test_user_api_2_account_1\",\n  \"to_account\": \"test_user_api_2_account_2\",\n  \"operation_id\": \"91f2c328-11b7-4376-a0c8-a74f45 ...\",\n  \"date_time\": \"20230804150250\",\n  \"authorization\": {\n    \"token\": \"token de banco\",\n    \"jwToken\": \"token\"\n  },\n  \"metadata\": {\n    \"type\": \"saving\"\n  }\n}\n\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><code>job</code>(object): Información sobre el trabajo de movimiento.</p>\n<ul>\n<li><p><code>id</code>(string): Identificador del trabajo.</p>\n</li>\n<li><p><code>job_type</code>(object): Tipo de trabajo.</p>\n<ul>\n<li><p><code>id</code>(string): Identificador del tipo de trabajo.</p>\n</li>\n<li><p><code>catalog</code>(string): Catálogo del tipo de trabajo.</p>\n</li>\n<li><p><code>item_name</code>(string): Nombre del ítem del tipo de trabajo.</p>\n</li>\n<li><p><code>description</code>(string): Descripción del tipo de trabajo.</p>\n</li>\n<li><p><code>metadata</code>(object): Metadatos del tipo de trabajo.</p>\n<ul>\n<li><code>max_waiting_seconds_at_origin</code>(number): Tiempo máximo de espera en segundos en el origen.</li>\n</ul>\n</li>\n</ul>\n</li>\n<li><p><code>job_status</code>(object): Estado del trabajo.</p>\n<ul>\n<li><p><code>id</code>(string): Identificador del estado del trabajo.</p>\n</li>\n<li><p><code>catalog</code>(string): Catálogo del estado del trabajo.</p>\n</li>\n<li><p><code>item_name</code>(string): Nombre del ítem del estado del trabajo.</p>\n</li>\n<li><p><code>description</code>(string): Descripción del estado del trabajo.</p>\n</li>\n<li><p><code>metadata</code>(object): Metadatos del estado del trabajo.</p>\n</li>\n</ul>\n</li>\n<li><p><code>external_id</code>(string): Identificador externo del trabajo.</p>\n</li>\n<li><p><code>user_id</code>(string): Identificador del usuario que realizó la operación.</p>\n</li>\n<li><p><code>created_at</code>(string): Fecha y hora de creación del trabajo.</p>\n</li>\n<li><p><code>updated_at</code>(string): Fecha y hora de actualización del trabajo.</p>\n</li>\n<li><p><code>metadata</code>(object): Metadatos adicionales sobre el trabajo.</p>\n</li>\n</ul>\n</li>\n<li><p><code>service_response</code>(object): Respuesta del servicio.</p>\n<ul>\n<li><p><code>request_id</code>(string): Identificador de la solicitud.</p>\n</li>\n<li><p><code>status_code</code>(number): Código de estado de la respuesta.</p>\n</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"response-format\">Response Format</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"job_type\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"id\": { \"type\": \"string\", \"format\": \"uuid\" },\n        \"catalog\": { \"type\": \"string\", \"format\": \"uuid\" },\n        \"item_name\": { \"type\": \"string\" },\n        \"description\": { \"type\": \"string\" },\n        \"metadata\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"max_waiting_seconds_at_origin\": { \"type\": \"integer\" }\n          },\n          \"additionalProperties\": false\n        }\n      }\n    },\n    \"job_status\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"id\": { \"type\": \"string\", \"format\": \"uuid\" },\n        \"catalog\": { \"type\": \"string\", \"format\": \"uuid\" },\n        \"item_name\": { \"type\": \"string\" },\n        \"description\": { \"type\": \"string\" },\n        \"metadata\": { \"type\": \"object\" }\n      }\n    },\n    \"external_id\": { \"type\": \"string\", \"format\": \"uuid\" },\n    \"user_id\": { \"type\": \"string\", \"format\": \"uuid\" },\n    \"created_at\": { \"type\": \"string\", \"format\": \"date-time\" },\n    \"updated_at\": { \"type\": \"string\", \"format\": \"date-time\" },\n    \"metadata\": { \"type\": \"object\" },\n    \"service_response\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"request_id\": { \"type\": \"string\", \"format\": \"uuid\" },\n        \"status_code\": { \"type\": \"integer\" }\n      }\n    }\n  }\n  \"additionalProperties\": false\n}\n\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":true,"source":{"_postman_id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","name":"API Xerpa Middleware","type":"collection"}},"urlObject":{"path":["api-middleware","v1","savings","manual-movement-async",""],"host":["{{host_middleware}}"],"query":[],"variable":[]}},"response":[{"id":"7f2dc9bc-fae0-41a7-9d11-d6329820624b","name":"Sucessful Response","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"user_id\": \"7a1cb76c-9af3-4557-bc6c-f56f9ee8ef8e\",\n    \"pk\": \"{{project_id}}\",\n    \"amount\": 10.00,\n    \"from_account\": \"test_user_api_2_account_1\",\n    \"to_account\": \"test_user_api_2_account_2\",\n    \"operation_id\": \"91f2c328-11b7-4376-a0c8-a74f45e66daa\",\n    \"date_time\": \"20230804150250\",\n    \"authorization\": {\n        \"token\": \"token de banco\",\n        \"jwToken\": \"token\"\n    },\n    \"metadata\":{\n        \"type\": \"saving\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v1/savings/manual-movement-async/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 13 Jun 2025 19:48:18 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"789"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"af02bca0-40ca-45f7-90c9-b7d2d4401f2f"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"x-amz-apigw-id","value":"MHkEZGaIIAMErUg="},{"key":"X-Amzn-Trace-Id","value":"Root=1-684c8082-5a3546e2626ddd44373d8adf;Parent=136d94d2b6aece26;Sampled=0;Lineage=1:4850f440:0"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"job\": {\n        \"id\": \"78fcd10d-682c-4294-938b-0078c6b8f2dc\",\n        \"job_type\": {\n            \"id\": \"09637f57-e3db-4ed1-9f7a-a3cf8c50d96b\",\n            \"catalog\": \"ee23dfd1-9552-4b63-9c8b-a98efb830baa\",\n            \"item_name\": \"job_type_movements_between_accounts\",\n            \"description\": \"Movimientos de dinero entre cuentas\",\n            \"metadata\": {\n                \"max_waiting_seconds_at_origin\": 30\n            }\n        },\n        \"job_status\": {\n            \"id\": \"619ea30d-1dfc-4717-8bed-2de2fd06ca24\",\n            \"catalog\": \"19855c39-7537-4d4c-92f9-376c19481f2d\",\n            \"item_name\": \"job_status_processing\",\n            \"description\": \"Trabajo en proceso\",\n            \"metadata\": {}\n        },\n        \"external_id\": \"e2373d04-f377-4c62-b000-3c93c953f6a3\",\n        \"user_id\": \"7a1cb76c-9af3-4557-bc6c-f56f9ee8ef8e\",\n        \"created_at\": \"2025-06-13T19:48:18+0000\",\n        \"updated_at\": \"2025-06-13T19:48:18+0000\",\n        \"metadata\": {}\n    },\n    \"service_response\": {\n        \"request_id\": \"e2373d04-f377-4c62-b000-3c93c953f6a3\",\n        \"status_code\": 202\n    }\n}"},{"id":"ba60cc93-f0fe-4334-a1f6-37a7a56d6dc1","name":"Bad request - Invalid account id","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"user_id\": \"7a1cb76c-9af3-4557-bc6c-f56f9ee8ef8e\",\n    \"pk\": \"{{project_id}}\",\n    \"amount\": 10.00,\n    \"from_account\": \"invalid\",\n    \"to_account\": \"invalid\",\n    \"operation_id\": \"91f2c328-11b7-4376-a0c8-a74f45e66daa\",\n    \"date_time\": \"20230804150250\",\n    \"authorization\": {\n        \"token\": \"token de banco\",\n        \"jwToken\": \"token\"\n    },\n    \"metadata\":{\n        \"type\": \"saving\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v1/savings/manual-movement-async/"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 13 Jun 2025 19:48:48 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"93"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"a8b2dfbc-745e-470e-99fc-4139b50df568"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"x-amz-apigw-id","value":"MHkJEEt-oAMEFOw="},{"key":"X-Amzn-Trace-Id","value":"Root=1-684c80a0-064c6f5f23cfc3ed5532ba1f;Parent=52202bb38d85f514;Sampled=0;Lineage=1:4850f440:0"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"status_code\": 500,\n    \"body\": {\n        \"error_code\": \"4\",\n        \"error_message\": \"External account id not found\"\n    }\n}"}],"_postman_id":"d8cf204a-0645-4281-b22e-ba1d68c374ae"},{"name":"callbacks/transfer-status/","id":"b83b0c74-74e3-450b-83bb-74b45389ec34","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_app}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"operation_id\": \"701861e5-a6f4-44d7-a7b4-bb1fc034c3e8\", // job_id\n    \"status\": \"error\",\n    \"error_code\": \"3\",\n   \"error_message\": \"Error al procesar llamada al servicio abonar excepcion\",\n    \"bank_reference\": \"ref-banco-002\"\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v1/savings/callbacks/transfer-status/","description":"<p>Generated from cURL: curl --location 'localhost:8000/api-middleware/v1/savings/callbacks/transfer-status/' <br />--header 'Content-Type: application/json' <br />--data '{\n    \"operation_id\": \"76bc81e6-9f7d-461e-96c6-a63ca9d6eeaf\",\n    \"status\": \"error\",\n    \"error_code\": \"3\",\n   \"error_message\": \"Error al procesar llamada al servicio abonar excepcion\",\n    \"bank_reference\": \"ref-banco-002\"\n}'</p>\n","urlObject":{"path":["api-middleware","v1","savings","callbacks","transfer-status",""],"host":["{{host_middleware}}"],"query":[],"variable":[]}},"response":[{"id":"2f52d624-d13c-4037-a3bb-e33cdb7f49fa","name":"200 ok","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"operation_id\": \"8fc0267b-9937-4bd4-8f7a-f53e7dacfeb8\", // job_id\n    \"status\": \"error\",\n    \"error_code\": \"3\",\n   \"error_message\": \"Error al procesar llamada al servicio abonar excepcion\",\n    \"bank_reference\": \"ref-banco-002\"\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v1/savings/callbacks/transfer-status/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"message\": \"already_processed\"\n}"}],"_postman_id":"b83b0c74-74e3-450b-83bb-74b45389ec34"}],"id":"97ab8f2f-66a7-42c8-9e1a-945de6aefeae","_postman_id":"97ab8f2f-66a7-42c8-9e1a-945de6aefeae","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":true,"source":{"_postman_id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","name":"API Xerpa Middleware","type":"collection"}}},{"name":"Movimiento externo","item":[{"name":"movimiento externo","id":"d90ceb53-ca4e-4085-92db-2d96199dc75b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_app}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"operation_id\": \"6595aa60-d7aa-4710-99bf-7ae14b752e6c\",\n  \"amount\": \"-31000\",\n  \"movement_date\": \"2026-03-01\",\n  \"user_id\": \"{{user_external_id}}\",\n  \"from_account\": \"{{from_account_external_id}}\",\n  \"to_account\": \"{{to_account_external_id}}\",\n  \"movement_type\": \"withdrawal\" //deposit -> monto positivo || withdrawal -> monto negativo\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v2/savings/external-movement/","urlObject":{"path":["api-middleware","v2","savings","external-movement",""],"host":["{{host_middleware}}"],"query":[],"variable":[]}},"response":[{"id":"b6d4d4e0-0714-4863-a017-67127fe0e234","name":"movimiento externo","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"operation_id\": \"d6dca662-4514-475d-871e-816fdc1eb55a\",\n  \"amount\": \"-1\",\n  \"movement_date\": \"2026-03-01\",\n  \"user_id\": \"test_user_api_2\",\n  \"from_account\": \"test_user_api_2_account_1\",\n  \"to_account\": \"test_user_api_2_account_1\",\n  \"movement_type\": \"withdrawal\" //deposit -> monto positivo || withdrawal -> monto negativo\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v2/savings/external-movement/"},"status":"Created","code":201,"_postman_previewlanguage":null,"header":[{"key":"Date","value":"Thu, 19 Mar 2026 17:32:21 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"685"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"e4d1a62c-33fb-4945-84f5-c98891123fe9"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"x-amz-apigw-id","value":"aezt0HYIIAMENng="},{"key":"X-Amzn-Trace-Id","value":"Root=1-69bc3324-413200dc52ba0bbf7d531cf6;Parent=57a95d9f4b3a783d;Sampled=0;Lineage=1:4850f440:0"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"Processed\",\n    \"payment\": {\n        \"id\": \"e33b532c-b837-4bb7-8105-aae314748ad7\",\n        \"project\": {\n            \"id\": \"78f62645-0001-4775-b067-3c5657ff40c2\",\n            \"project_name\": \"Meta Viaje\",\n            \"user_id\": \"7a1cb76c-9af3-4557-bc6c-f56f9ee8ef8e\"\n        },\n        \"user_id\": \"7a1cb76c-9af3-4557-bc6c-f56f9ee8ef8e\",\n        \"amount\": \"-1.00\",\n        \"payment_date\": \"2026-03-01\",\n        \"from_account\": \"test_user_api_2_account_1\",\n        \"to_account\": \"test_user_api_2_account_1\",\n        \"created_at\": \"2026-03-19T17:32:21+0000\",\n        \"updated_at\": \"2026-03-19T17:32:21+0000\",\n        \"user_external_id\": \"test_user_api_2\",\n        \"retries\": 0,\n        \"payment_status\": \"fbbb15cf-258a-4736-b72d-6f73362799d0\",\n        \"payment_source\": \"62fee3fe-6484-44e0-bb73-3c308f0b055d\",\n        \"operation_id\": \"0705d0cc-965d-4109-8b7e-bb88ef7a6b1c\"\n    }\n}"}],"_postman_id":"d90ceb53-ca4e-4085-92db-2d96199dc75b"}],"id":"34cdfc0c-dc5d-42f1-b98b-9b68aa659a12","_postman_id":"34cdfc0c-dc5d-42f1-b98b-9b68aa659a12","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":true,"source":{"_postman_id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","name":"API Xerpa Middleware","type":"collection"}}},{"name":"Actualizar progreso de la meta","id":"93623e92-a7eb-47cb-9b30-c4ce34bb062b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"external_user_id\": \"test_user_api_2\",\n    \"update_projects\": [\n        {\n            \"to_account\": \"test_user_api_2_account_4\",\n            \"progress\": \"440.20\"\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v1/savings/projects/update-by-to-account/","description":"<p>Este endpoint permite actualizar proyectos de ahorro asociados a una cuenta específica de un usuario externo. Se utiliza para modificar el progreso de los proyectos en función de la cuenta de destino proporcionada.</p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><p><strong>Método:</strong> POST</p>\n</li>\n<li><p><strong>URL:</strong> <code>{{host_middleware}}/api-middleware/v1/savings/projects/update-by-to-account/</code></p>\n</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><p><code>external_user_id</code> (string): Identificador del usuario externo que está realizando la actualización.</p>\n</li>\n<li><p><code>update_projects</code> (array of objects): Lista de proyectos a actualizar.</p>\n<ul>\n<li><p><code>to_account</code> (string): Cuenta de destino a la que se asocia el proyecto.</p>\n</li>\n<li><p><code>progress</code> (string): Progreso del proyecto en formato de cadena.</p>\n</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"request-body-example\">Request Body Example</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"external_user_id\": \"test_user_api_2\",\n  \"update_projects\": [\n    {\n      \"to_account\": \"test_user_api_2_account_4\",\n      \"progress\": \"440.20\"\n    }\n  ]\n}\n\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><code>message</code> (string): Mensaje de respuesta del servidor.</li>\n</ul>\n<h4 id=\"response-format\">Response Format</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"message\": {\n      \"type\": \"string\",\n      \"const\": \"project updated\"\n    }\n  }\n}\n\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":true,"source":{"_postman_id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","name":"API Xerpa Middleware","type":"collection"}},"urlObject":{"path":["api-middleware","v1","savings","projects","update-by-to-account",""],"host":["{{host_middleware}}"],"query":[],"variable":[]}},"response":[{"id":"04672d90-cdf3-4e42-8d97-8338f6adf4ec","name":"Successful Response","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"external_user_id\": \"test_user_api_2\",\n    \"update_projects\": [\n        {\n            \"to_account\": \"test_user_api_2_account_4\",\n            \"progress\": \"440.20\"\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v1/savings/projects/update-by-to-account/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 13 Jun 2025 19:43:36 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"29"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"172b278e-1076-4a71-a914-15e86307f427"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"x-amz-apigw-id","value":"MHjYSG1aoAMEQmg="},{"key":"X-Amzn-Trace-Id","value":"Root=1-684c7f67-3d01a376157d864617350d66;Parent=5eea87a29979dc45;Sampled=0;Lineage=1:4850f440:0"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"project updated\"\n}"},{"id":"eb58d32d-f9c7-4e44-9c35-cecf31009b00","name":"Bad Request - Invalid user id","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"external_user_id\": \"invalid\",\n    \"update_projects\": [\n        {\n            \"to_account\": \"invalid\",\n            \"progress\": \"440.20\"\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v1/savings/projects/update-by-to-account/"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 13 Jun 2025 19:44:08 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"28"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"70370212-dd76-4b82-87bf-770b19bc5f09"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"x-amz-apigw-id","value":"MHjdTFAAIAMEaiQ="},{"key":"X-Amzn-Trace-Id","value":"Root=1-684c7f87-5a7cf38f4d9f121c1b4decbd;Parent=4dc4b48984b04750;Sampled=0;Lineage=1:4850f440:0"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"user not fount\"\n}"}],"_postman_id":"93623e92-a7eb-47cb-9b30-c4ce34bb062b"}],"id":"03c7f7a7-7373-4720-bc35-b41fb8b8e70d","_postman_id":"03c7f7a7-7373-4720-bc35-b41fb8b8e70d","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":true,"source":{"_postman_id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","name":"API Xerpa Middleware","type":"collection"}}},{"name":"Transacciones","item":[{"name":"Ingesta de transacciones en batch","item":[],"id":"f93cf8b6-a0e8-4e8e-ab70-1a12132dd5d1","description":"<p>Permite el registro de transacciones asociadas a múltiples usuarios. Se recibe la información desde un archivo que cuenta con una estructura definida para luego ser procesada e ingresado los registros en la base</p>\n<h2 id=\"flujo-de-archivos\">Flujo de archivos</h2>\n<p>Toda la información se comunica mediante archivos en un filesystem que provee Xerpa y donde sólo el banco tiene acceso mediante credenciales de autenticación.</p>\n<h3 id=\"proceso\">Proceso</h3>\n<h4 id=\"etapa-0\">Etapa 0</h4>\n<p>Diariamente se deposita un archivo con los identificadores de los usuarios registrados en la solución para que el banco consulte sus transacciones. Este archivo se genera automáticamente a una hora en específico a definir por el banco.<br />ej: 11 PM</p>\n<p>Este paso es opcional y depende si el banco necesita o no un registro de usuarios para la consulta de transacciones del paso siguiente.</p>\n<h4 id=\"etapa-1\">Etapa 1</h4>\n<p>El banco consulta las transacciones de los productos del usuario registradas desde el último archivo.<br />El período de consulta dependerá de que tan frecuente se haga este proceso. La recomendación es que sea diario y en los días hábiles del banco. Esto significa de lunes a viernes exceptuando festivos.</p>\n<p>Las transacciones que se deben enviar deben incluir productos como:</p>\n<ul>\n<li><p>Cuentas</p>\n</li>\n<li><p>Tarjetas débito</p>\n</li>\n<li><p>Tarjetas crédito</p>\n</li>\n</ul>\n<h4 id=\"etapa-2\">Etapa 2</h4>\n<p>Se comunican las transacciones en archivos con una estructura definida. Pueden ser uno o más archivos.</p>\n<p>Junto a cada archivo de datos, se debe adjuntar un archivo bandera con el mismo nombre y extensión .data para indicar al filewatcher que el archivo original fue subido exitosamente y lo pueda leer.</p>\n<p>Cada archivo es validado y en caso de error se deja un archivo de control con el código de error.</p>\n<p>En caso de ser válido, se procesa el archivo y se genera un archivo de control con la cantidad de registros procesados.</p>\n<p>Internamente las transacciones son limpiadas y clasificadas.</p>\n<img src=\"https://content.pstmn.io/565b4a26-8132-4861-a65f-4bd8f3a752dd/aW1hZ2UucG5n\" width=\"650\" height=\"1433\" />\n\n<h2 id=\"definiciones-del-archivo-de-transacciones\">Definiciones del archivo de transacciones</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descripción</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>transaction_id</td>\n<td>Identificador de la transacción. Debe ser único para cada transacción para evitar transacciones duplicadas</td>\n</tr>\n<tr>\n<td>user_id</td>\n<td>Identificador del usuario al que le pertenece la transacción</td>\n</tr>\n<tr>\n<td>account_id</td>\n<td>Identificador de la cuenta al que pertenece la transacción</td>\n</tr>\n<tr>\n<td>transaction_type</td>\n<td>Identificador del tipo de transacción que corresponde</td>\n</tr>\n<tr>\n<td>transaction_date</td>\n<td>Fecha bancaria de cuándo se registró la transacción. Formato: YYYY-MM-DD hh:mm:ss</td>\n</tr>\n<tr>\n<td>description</td>\n<td>Glosa o descripción de la transacción</td>\n</tr>\n<tr>\n<td>amount</td>\n<td>Monto de la transacción incluyendo centavos. en todas las transacciones.  <br />Ej:  <br />$45,50 45.50  <br />$1000.1 1000.10</td>\n</tr>\n<tr>\n<td><em>transaction_mcc</em></td>\n<td><em>Código o identificador interno utilizado por el banco que puede ser un MCC u otro tipo de clasificación.  <br />(opcional)</em></td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"archivo-de-ejemplo\">Archivo de ejemplo</h2>\n<p>El archivo corresponde a un documento de texto plano donde las columnas están separadas por pipe <code>|</code> y donde se incluyen las cabeceras de cada columna.</p>\n<p>transactions.txt</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>transaction_id|user_id|account_id|transaction_type|transaction_date|description|amount|transaction_code\n64163688-75A9-E935-7B8B-674188B35234|619A8DFD-2A48-D08A-DBAC-20553AA324D2|5264427F-C862-6A9C-57E0-D01C8AB8562E|product_cc|2022-05-03|NETFLIX|86.71|665\n033D42A6-1CC2-31B6-DC67-703DB2661F14|DA3356AD-D4B9-FC82-3C31-AC436E6667EA|065A72DE-56D1-47DF-5D53-E9841D9B02E8|product_cc|2022-05-04|AMAZON|157.77|200\nD02085FD-077E-C8C3-5A06-C0988845A717|F26303B8-48C5-A0A6-9025-D9A1D1B45D7D|31190A0B-2FC2-16CE-5171-55DBCD903E51|product_ca|2022-05-05|MC Donalds|102.81|574\n7A03C20D-F77D-6532-067C-BAE5A8429F2C|C47F4E49-08E0-3316-ACEB-F56876F89D44|8B93B55B-EB90-4DD6-6E2D-4FF8A1419008|product_cc|2022-05-06|ATM|8.19|509\n436A356A-B04F-FF11-E15F-19E7D95E91F1|568637AD-41EA-CDDC-624F-5696EC7642B3|99CE730B-481A-2B8E-A418-79E6AA4FE6B2|product_cc|2022-05-07|WALMART|76.12|753\nD1D50F6A-F19E-D02E-37AC-BFF3AA3C6E57|436E4E0C-BD96-B055-EECF-2A922D14A9CF|E19BAE90-54EA-2719-84C1-AA9E4D5A7F05|product_ca|2022-05-08|SEVEN11|150.6|783\n3CC87066-D1B9-7684-FAF3-0E07658CAFA6|4B55441C-B39D-A411-8AEA-CC97AD3AAF2A|291066CA-03C6-6AD6-7727-DB6E5EA677B7|product_cc|2022-05-09|HM|236.76|223\n\n</code></pre>","_postman_id":"f93cf8b6-a0e8-4e8e-ab70-1a12132dd5d1","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":true,"source":{"_postman_id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","name":"API Xerpa Middleware","type":"collection"}}},{"name":"Ingesta de transacciones en línea","item":[{"name":"Añadir transacciones v1","id":"540d7825-5059-4c15-bce5-20636ad5f777","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_app}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"[\r\n    {\r\n        \"transaction_id\": \"9e4b8a32-7c1f-4e59-95c3-6b3e04e77a5d\",\r\n        \"product_id\": \"44fed604-7232-4dad-8468-a968cd338d36\",\r\n        \"transaction_date\": \"2025-10-01\",\r\n        \"transaction_type\": \"\",\r\n        \"amount\": \"-6000\",\r\n        \"description\": \"NETFLIX 2\",\r\n        \"transaction_mcc\": \"\",\r\n        \"currency\": \"CLP\"\r\n    }\r\n]","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v1/pfm-service/transactions/","description":"<p>Este endpoint permite persistir un listado de transacciones para ser procesados y registrados por Xerpa. Las transacciones pueden pertenecer a uno o múltiples usuarios.</p>\n<p>El servicio responde con un objeto donde indica cuántas de las transacciones fueron correctamente registradas y cuántas hubo error.</p>\n<blockquote>\n<p>Cada transacción debe tener un transaction_id único el cual será validado con las transacciones recibidas para identificar si exite duplicación con algún registro anterior. </p>\n</blockquote>\n<h4 id=\"request\"><strong>Request</strong></h4>\n<ul>\n<li><p><strong>Método:</strong> POST</p>\n</li>\n<li><p><strong>URL:</strong> {{host_middleware}}/api-middleware/v1/pfm-service/transactions/</p>\n</li>\n</ul>\n<h3 id=\"request-body\">Request Body</h3>\n<p>Array de transacciones que se desea registrar. Cada transacción debe tener los siguientes campos:</p>\n<ul>\n<li><p><code>transaction_id</code> (string): Identificador único de la transacción dentro de los sistemas del Banco. Permite identificar si la transacción ya ha sido registrada en la solución Xerpa y evitar duplicación.</p>\n</li>\n<li><p><code>account_id</code> (string): Identificador alfanumérico único de la cuenta o producto del usuario dentro de la solución Xerpa. Permite asociar la transacción a una cuenta de usuario que debe existir previamente.</p>\n</li>\n<li><p><code>transaction_date</code> (string): Fecha de la transacción en formato YYYY-MM-DD.</p>\n</li>\n<li><p><code>amount</code> (string): Monto de la transacción. Un gasto es un monto negativo. Un ingreso es un monto positivo.</p>\n</li>\n<li><p><code>description</code> (string): Descripción de la transacción.</p>\n</li>\n<li><p><code>currency</code> (string): Moneda en la que está expresado el monto de la transacción.</p>\n</li>\n<li><p><code>transaction_mcc</code> (string, opcional): MCC código asignado por el procesador de la transacción y es un número de cuatro dígitos listado en ISO 18245.</p>\n</li>\n<li><p><code>transaction_type</code> (string, opcional): Código de catálogo interno del banco que representa tipos de transacciones de acuerdo a canal, medio de pago, origen u otro criterio relevante para el banco.</p>\n</li>\n</ul>\n<h4 id=\"request-body-example\">Request Body Example</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[\n  {\n    \"user_id\": \"id_user_1\",\n    \"transaction_id\": \"invalid\",\n    \"account_id\": \"invalid\", (external id)\n    \"transaction_date\": \"2024-09-20\",\n    \"transaction_type\": \"\",\n    \"amount\": \"-6000\",\n    \"description\": \"NETFLIX 2\",\n    \"transaction_mcc\": \"\",\n    \"currency\": \"CLP\"\n  }\n]\n\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>created</strong> (integer): Cantidad de transacciones creadas.</p>\n</li>\n<li><p><strong>errors</strong> (array): Lista de errores que ocurrieron durante el proceso.</p>\n</li>\n<li><p><strong>received</strong> (integer): Cantidad de transacciones recibidas.</p>\n</li>\n</ul>\n<h4 id=\"response-format\">Response Format</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"created\": {\n      \"type\": \"integer\"\n    },\n    \"errors\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"string\"\n      }\n    },\n    \"received\": {\n      \"type\": \"integer\"\n    }\n  }\n}\n\n</code></pre>\n","urlObject":{"path":["api-middleware","v1","pfm-service","transactions",""],"host":["{{host_middleware}}"],"query":[],"variable":[]}},"response":[{"id":"bea024d4-1c2b-4f23-8599-a194e6e2e889","name":"Successful Response","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"[{\r\n                \"transaction_id\": \"c3f3371d-7b2d-4d50-9716-793947bbdab8\",\r\n                \"product_id\": \"xh-user-qa-1-dev2\",\r\n                \"transaction_date\": \"2024-08-01\",\r\n                \"transaction_type\": \"\",\r\n                \"amount\": \"-6000\",\r\n                \"description\": \"Shopping\",\r\n                \"transaction_code\": \"\",\r\n                \"currency\": \"qwerty\"\r\n            }\r\n]","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}api-middleware/v1/pfm-service/transactions/"},"code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"created\": 1,\n    \"errors\": [],\n    \"received\": 1\n}"},{"id":"a30ca7f1-5568-470e-8bae-d64ca72c619c","name":"Bad Request - Invalid date","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"[\r\n    {\r\n        \"transaction_id\": \"7e2e0262-dc04-4ad6-b659-e256d557bc92\",\r\n        \"product_id\": \"{{product_id}}\",\r\n        \"transaction_date\": \"invalid\",\r\n        \"transaction_type\": \"\",\r\n        \"amount\": \"-6000\",\r\n        \"description\": \"NETFLIX 2\",\r\n        \"transaction_mcc\": \"\",\r\n        \"currency\": \"CLP\"\r\n    }\r\n]","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v1/pfm-service/transactions/"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 13 Jun 2025 21:25:03 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"76"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"225fa4eb-5e82-44c5-b590-53dfa5624ee6"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"x-amz-apigw-id","value":"MHyPaEj9oAMEIhw="},{"key":"X-Amzn-Trace-Id","value":"Root=1-684c972f-5206f1193d63089f02fee354;Parent=0ae4d5d381dc6d66;Sampled=0;Lineage=1:4850f440:0"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"created\": 0,\n    \"errors\": [\n        \"3c8c8c7e-ad82-4d9c-a342-97bbc25883bc\"\n    ],\n    \"received\": 1\n}"},{"id":"313852c1-eb3f-4507-8255-6d3d8fb78eef","name":"Bad Request - Invalid id","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"[\r\n    {\r\n        \"transaction_id\": \"invalid\",\r\n        \"product_id\": \"invalid\",\r\n        \"transaction_date\": \"2024-09-20\",\r\n        \"transaction_type\": \"\",\r\n        \"amount\": \"-6000\",\r\n        \"description\": \"NETFLIX 2\",\r\n        \"transaction_mcc\": \"\",\r\n        \"currency\": \"CLP\"\r\n    }\r\n]","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v1/pfm-service/transactions/"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 13 Jun 2025 21:25:31 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"47"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"3d18e3c6-e873-488e-b90d-d007dd42274d"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"x-amz-apigw-id","value":"MHyT4HOmoAMENTw="},{"key":"X-Amzn-Trace-Id","value":"Root=1-684c974b-5c54fb1d7d7cd0f07572c264;Parent=56fad1a9a89ccc52;Sampled=0;Lineage=1:4850f440:0"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"created\": 0,\n    \"errors\": [\n        \"invalid\"\n    ],\n    \"received\": 1\n}"}],"_postman_id":"540d7825-5059-4c15-bce5-20636ad5f777"},{"name":"Añadir transacciones async *TBR","id":"029af253-b2e1-4256-b824-55b8029b48f5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_app}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"[\r\n    {\r\n        \"transaction_id\": \"28c86eb6-7d1e-4c52-82f2-02b3dcf56a7e\",\r\n        \"account_id\": \"user-api-a-front\",\r\n        \"transaction_date\": \"2025-09-10\",\r\n        \"transaction_type\": \"\",\r\n        \"amount\": \"-1234\",\r\n        \"description\": \"SALCOBRAND 578 ANTOF \",\r\n        \"transaction_code\": \"\",\r\n        \"currency\": \"CLP\",\r\n        \"external_user_id\": \"front\"\r\n    }\r\n]","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v2/pfm-service/transactions-async/","description":"<p>Este endpoint permite persistir un listado de transacciones para distintos usuarios y cuentas.</p>\n<h4 id=\"request\"><strong>Request</strong></h4>\n<ul>\n<li><p><strong>Método:</strong> POST</p>\n</li>\n<li><p><strong>URL:</strong> {{host_middleware}}/api-middleware/v2/pfm-service/transactions/</p>\n</li>\n</ul>\n<h3 id=\"request-body\">Request Body</h3>\n<p>Array de transacciones que se desea registrar. Cada transacción debe tener los siguientes campos:</p>\n<ul>\n<li><p><code>transaction_id</code> (string): Identificador único de la transacción dentro de los sistemas del Banco. Permite identificar si la transacción ya ha sido registrada en la solución Xerpa y evitar duplicación.</p>\n</li>\n<li><p><code>user_id</code> (string): Identificador del usuario al que le pertence la transacción</p>\n</li>\n<li><p><code>account_id</code> (string): Identificador alfanumérico único de la cuenta o producto del usuario dentro de la solución Xerpa. Permite asociar la transacción a una cuenta de usuario que debe existir previamente.</p>\n</li>\n<li><p><code>transaction_date</code> (string): Fecha de la transacción en formato YYYY-MM-DD.</p>\n</li>\n<li><p><code>amount</code> (string): Monto de la transacción. Un gasto es un monto negativo. Un ingreso es un monto positivo.</p>\n</li>\n<li><p><code>description</code> (string): Descripción de la transacción.</p>\n</li>\n<li><p><code>currency</code> (string): Moneda en la que está expresado el monto de la transacción.</p>\n</li>\n<li><p><code>transaction_mcc</code> (string, opcional): MCC código asignado por el procesador de la transacción y es un número de cuatro dígitos listado en ISO 18245.</p>\n</li>\n<li><p><code>transaction_type</code> (string, opcional): Código de catálogo interno del banco que representa tipos de transacciones de acuerdo a canal, medio de pago, origen u otro criterio relevante para el banco.</p>\n</li>\n</ul>\n<h4 id=\"request-body-example\">Request Body Example</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[\n  {\n    \"transaction_id\": \"invalid\",\n    \"user_id\": \"\",\n    \"account_id\": \"\",\n    \"transaction_date\": \"2024-09-20\",\n    \"transaction_type\": \"\",\n    \"amount\": \"-6000\",\n    \"description\": \"NETFLIX 2\",\n    \"transaction_mcc\": \"\",\n    \"currency\": \"CLP\"\n  }\n]\n\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>created</strong> (integer): Cantidad de transacciones creadas.</p>\n</li>\n<li><p><strong>errors</strong> (array): Lista de errores que ocurrieron durante el proceso.</p>\n</li>\n<li><p><strong>received</strong> (integer): Cantidad de transacciones recibidas.</p>\n</li>\n</ul>\n<h4 id=\"response-format\">Response Format</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"created\": {\n      \"type\": \"integer\"\n    },\n    \"errors\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"string\"\n      }\n    },\n    \"received\": {\n      \"type\": \"integer\"\n    }\n  }\n}\n\n</code></pre>\n","urlObject":{"path":["api-middleware","v2","pfm-service","transactions-async",""],"host":["{{host_middleware}}"],"query":[],"variable":[]}},"response":[{"id":"bd9a65fd-93ab-4866-8a89-dde04cb0307c","name":"Successful Response","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"[\r\n    {\r\n        \"transaction_id\": \"b30034d7-46e0-472b-b066-8f317851a88b\",\r\n        \"account_id\": \"1234567890-1\",\r\n        \"transaction_date\": \"2025-09-10\",\r\n        \"transaction_type\": \"\",\r\n        \"amount\": \"-17699\",\r\n        \"description\": \"SALCOBRAND 578 ANTOF\",\r\n        \"transaction_code\": \"\",\r\n        \"external_user_id\": \"xerpafront\"\r\n    }\r\n]","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}api-middleware/v2/pfm-service/transactions/"},"code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"created\": 1,\n    \"errors\": [],\n    \"received\": 1\n}"},{"id":"73a2c2fc-db2d-4313-8474-3b3a89bab8ee","name":"Bad Request - not external_user_id","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"[\r\n    {\r\n        \"transaction_id\": \"648f9652-54d9-467e-945c-0966127c9ed3\",\r\n        \"account_id\": \"{{product_id}}\",\r\n        \"transaction_date\": \"2025-09-10\",\r\n        \"transaction_type\": \"\",\r\n        \"amount\": \"-6000\",\r\n        \"description\": \"NETFLIX 2\",\r\n        \"transaction_mcc\": \"\",\r\n        \"currency\": \"CLP\"\r\n    }\r\n]","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v2/pfm-service/transactions/"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 13 Jun 2025 21:25:03 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"76"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"225fa4eb-5e82-44c5-b590-53dfa5624ee6"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"x-amz-apigw-id","value":"MHyPaEj9oAMEIhw="},{"key":"X-Amzn-Trace-Id","value":"Root=1-684c972f-5206f1193d63089f02fee354;Parent=0ae4d5d381dc6d66;Sampled=0;Lineage=1:4850f440:0"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"created\": 0,\n    \"errors\": [\n        \"3c8c8c7e-ad82-4d9c-a342-97bbc25883bc\"\n    ],\n    \"received\": 1\n}"},{"id":"d3524fc6-0533-4711-a9b2-f63a30524635","name":"Bad Request - Invalid external for the user","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"[\r\n    {\r\n        \"transaction_id\": \"9cdc4935-7384-4a1f-8e8f-3d564574d80e\",\r\n        \"account_id\": \"{{product_id}}\",\r\n        \"transaction_date\": \"2025-09-10\",\r\n        \"transaction_type\": \"\",\r\n        \"amount\": \"-6000\",\r\n        \"description\": \"NETFLIX 2\",\r\n        \"transaction_mcc\": \"\",\r\n        \"external_user_id\": \"xerpafront\"\r\n    }\r\n]","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v2/pfm-service/transactions/"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 13 Jun 2025 21:25:31 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"47"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"3d18e3c6-e873-488e-b90d-d007dd42274d"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"x-amz-apigw-id","value":"MHyT4HOmoAMENTw="},{"key":"X-Amzn-Trace-Id","value":"Root=1-684c974b-5c54fb1d7d7cd0f07572c264;Parent=56fad1a9a89ccc52;Sampled=0;Lineage=1:4850f440:0"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"created\": 0,\n    \"errors\": [\n        \"invalid\"\n    ],\n    \"received\": 1\n}"}],"_postman_id":"029af253-b2e1-4256-b824-55b8029b48f5"},{"name":"Añadir transacciones sync *TBR","id":"5704b810-0e84-421d-9e94-da9e456a76af","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_app}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"[\r\n    {\r\n        \"transaction_id\": \"95d2e51e-ab62-4661-aad4-039d12b3cdc1\",\r\n        \"user_id\": \"{{user_id}}\",\r\n        \"account_id\": \"1234567890\",\r\n        \"transaction_date\": \"2025-09-10\",\r\n        \"transaction_type\": \"\",\r\n        \"amount\": \"-1234\",\r\n        \"description\": \"SALCOBRAND 578 ANTOF \",\r\n        \"transaction_code\": \"\",\r\n        \"currency\": \"CLP\",\r\n        \"external_user_id\": \"{{user_external_id}}\"\r\n    }\r\n]","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v2/pfm-service/transactions/","description":"<p>Este endpoint permite registrar las transacciones de uno o más usuarios y recibir como respuesta las transacciones enriquecidas de acuerdo al motor de enriquecimiento de Xerpa. En esta respuesta de enriquecimiento no se aplican las reglas personalizadas de los usuarios</p>\n<blockquote>\n<p>Este endpoint permite hasta 100 transacciones distintas por petición. </p>\n</blockquote>\n<h4 id=\"request\"><strong>Request</strong></h4>\n<ul>\n<li><p><strong>Método:</strong> POST</p>\n</li>\n<li><p><strong>URL:</strong> {{host_middleware}}/api-middleware/v2/pfm-service/transactions-sync/</p>\n</li>\n</ul>\n<h3 id=\"request-body\">Request Body</h3>\n<p>Array de transacciones que se desea registrar. Cada transacción debe tener los siguientes campos:</p>\n<ul>\n<li><p><code>transaction_id</code> (string): Identificador único de la transacción dentro de los sistemas del Banco. Permite identificar si la transacción ya ha sido registrada en la solución Xerpa y evitar duplicación.</p>\n</li>\n<li><p><code>user_id</code> (string): Identificador del usuario al que le pertence la transacción</p>\n</li>\n<li><p><code>account_id</code> (string): Identificador alfanumérico único de la cuenta o producto del usuario dentro de la solución Xerpa. Permite asociar la transacción a una cuenta de usuario que debe existir previamente.</p>\n</li>\n<li><p><code>transaction_date</code> (string): Fecha de la transacción en formato YYYY-MM-DD.</p>\n</li>\n<li><p><code>amount</code> (string): Monto de la transacción. Un gasto es un monto negativo. Un ingreso es un monto positivo.</p>\n</li>\n<li><p><code>description</code> (string): Descripción de la transacción.</p>\n</li>\n<li><p><code>currency</code> (string): Moneda en la que está expresado el monto de la transacción.</p>\n</li>\n<li><p><code>transaction_mcc</code> (string, opcional): MCC código asignado por el procesador de la transacción y es un número de cuatro dígitos listado en ISO 18245.</p>\n</li>\n<li><p><code>transaction_type</code> (string, opcional): Código de catálogo interno del banco que representa tipos de transacciones de acuerdo a canal, medio de pago, origen u otro criterio relevante para el banco.</p>\n</li>\n</ul>\n<h4 id=\"request-body-example\">Request Body Example</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[\n  {\n    \"transaction_id\": \"invalid\",\n    \"user_id\": \"\",\n    \"account_id\": \"\",\n    \"transaction_date\": \"2024-09-20\",\n    \"transaction_type\": \"\",\n    \"amount\": \"-6000\",\n    \"description\": \"NETFLIX 2\",\n    \"transaction_mcc\": \"\",\n    \"currency\": \"CLP\"\n  }\n]\n\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>created</strong> (integer): Cantidad de transacciones creadas.</p>\n</li>\n<li><p><strong>errors</strong> (array): Lista de errores que ocurrieron durante el proceso.</p>\n</li>\n<li><p><strong>received</strong> (integer): Cantidad de transacciones recibidas.</p>\n</li>\n</ul>\n<h4 id=\"response-format\">Response Format</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"created\": {\n      \"type\": \"integer\"\n    },\n    \"errors\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"string\"\n      }\n    },\n    \"received\": {\n      \"type\": \"integer\"\n    }\n  }\n}\n\n</code></pre>\n","urlObject":{"path":["api-middleware","v2","pfm-service","transactions",""],"host":["{{host_middleware}}"],"query":[],"variable":[]}},"response":[{"id":"d0f6ccc1-0abc-4a7a-8568-1b8c9bcc60b1","name":"Successful Response","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"[\r\n    {\r\n        \"transaction_id\": \"62c150a9-7d37-4080-a5de-d5f537ae296e\",\r\n        \"account_id\": \"1234567890-1\",\r\n        \"transaction_date\": \"2025-09-10\",\r\n        \"transaction_type\": \"\",\r\n        \"amount\": \"-17699\",\r\n        \"description\": \"SALCOBRAND 578 ANTOF\",\r\n        \"transaction_code\": \"\",\r\n        \"external_user_id\": \"xerpafront\"\r\n    }\r\n]","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}api-middleware/v2/pfm-service/transactions/"},"code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"created\": 1,\n    \"errors\": [],\n    \"received\": 1\n}"},{"id":"3710be52-711d-4b2a-9161-d994e19c5dc9","name":"Bad Request - not external_user_id","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"[\r\n    {\r\n        \"transaction_id\": \"acfb7e66-9431-4663-ba03-1be7c62612ea\",\r\n        \"account_id\": \"{{product_id}}\",\r\n        \"transaction_date\": \"2025-09-10\",\r\n        \"transaction_type\": \"\",\r\n        \"amount\": \"-6000\",\r\n        \"description\": \"NETFLIX 2\",\r\n        \"transaction_mcc\": \"\",\r\n        \"currency\": \"CLP\"\r\n    }\r\n]","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v2/pfm-service/transactions/"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 13 Jun 2025 21:25:03 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"76"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"225fa4eb-5e82-44c5-b590-53dfa5624ee6"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"x-amz-apigw-id","value":"MHyPaEj9oAMEIhw="},{"key":"X-Amzn-Trace-Id","value":"Root=1-684c972f-5206f1193d63089f02fee354;Parent=0ae4d5d381dc6d66;Sampled=0;Lineage=1:4850f440:0"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"created\": 0,\n    \"errors\": [\n        \"3c8c8c7e-ad82-4d9c-a342-97bbc25883bc\"\n    ],\n    \"received\": 1\n}"},{"id":"e2a7b398-f8e1-4a29-a8db-c27bcdad210b","name":"Bad Request - Invalid external for the user","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"[\r\n    {\r\n        \"transaction_id\": \"a70fc564-4cb1-4066-becb-607b94b02392\",\r\n        \"account_id\": \"{{product_id}}\",\r\n        \"transaction_date\": \"2025-09-10\",\r\n        \"transaction_type\": \"\",\r\n        \"amount\": \"-6000\",\r\n        \"description\": \"NETFLIX 2\",\r\n        \"transaction_mcc\": \"\",\r\n        \"external_user_id\": \"xerpafront\"\r\n    }\r\n]","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v2/pfm-service/transactions/"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 13 Jun 2025 21:25:31 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"47"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"3d18e3c6-e873-488e-b90d-d007dd42274d"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"x-amz-apigw-id","value":"MHyT4HOmoAMENTw="},{"key":"X-Amzn-Trace-Id","value":"Root=1-684c974b-5c54fb1d7d7cd0f07572c264;Parent=56fad1a9a89ccc52;Sampled=0;Lineage=1:4850f440:0"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"created\": 0,\n    \"errors\": [\n        \"invalid\"\n    ],\n    \"received\": 1\n}"}],"_postman_id":"5704b810-0e84-421d-9e94-da9e456a76af"}],"id":"722e5ebe-030d-48eb-8342-a276b997cce9","description":"<p>Se diponibiliza un endpoint para recibir las transacciones de los usuarios. Este servicio permite un array de transacciones que pueden pertenecer a uno a varios usaurios. La información esperada es la misma que e</p>\n","_postman_id":"722e5ebe-030d-48eb-8342-a276b997cce9","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":true,"source":{"_postman_id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","name":"API Xerpa Middleware","type":"collection"}}},{"name":"Ingesta de transacciones","id":"e99b0df6-6c65-45db-abc5-cdc1e6576ba2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_app}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"[\n  {\n  \"transaction_id\": \"trx-batch-002\",\n  \"user_id\": \"user-001\",\n  \"transaction_date\": \"2026-01-15\",\n  \"amount\": \"50000\",\n  \"description\": \"transferencia\",\n  \"transaction_mcc\": \"9999\",\n  \"transaction_type\": \"100\",\n  \"currency\": \"CLP\",\n  \"account\": {\n    \"account_id\": \"acc-100\",\n    \"account_number\": \"**** 1234\",\n    \"account_currency\": \"CLP\",\n    \"account_type\": \"cuenta_vista\"\n  },\n  \"contract\": {\n    \"contract_id\": \"con-50\",\n    \"contract_role\": \"contract_user_role_owner\"\n  }\n}\n]","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v2/pfm-service/transactions-sync/","urlObject":{"path":["api-middleware","v2","pfm-service","transactions-sync",""],"host":["{{host_middleware}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"e99b0df6-6c65-45db-abc5-cdc1e6576ba2"},{"name":"load-and-get-report","id":"58238d6b-48b7-4b19-9ed5-f58b10e4b3ee","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"[\n    {\n        \"transaction_id\": \"54576a41-ceee-4a3f-bea1-e102f3c7911b\",\n        \"user_id\": \"{{user_id}}\",\n        \"account_id\": \"user-qa-2e\",\n        \"transaction_date\": \"2025-09-10\",\n        \"transaction_type\": \"\",\n        \"amount\": \"-1234\",\n        \"description\": \"SALCOBRAND 578 ANTOF \",\n        \"transaction_code\": \"\",\n        \"currency\": \"CLP\",\n        \"external_user_id\": \"xh-user-qa-1\"\n    }\n]","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v2/pfm-service/transactions/load-and-get-report/","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":true,"source":{"_postman_id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","name":"API Xerpa Middleware","type":"collection"}},"urlObject":{"path":["api-middleware","v2","pfm-service","transactions","load-and-get-report",""],"host":["{{host_middleware}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"58238d6b-48b7-4b19-9ed5-f58b10e4b3ee"}],"id":"efaafbc7-0ef9-41b7-ae85-0396e775aff0","description":"<p>Las transacciones son todos los movimientos de cuentas y tarjetas (débito y crédito) que se generan en los productos del cliente.</p>\n<p>En Xerpa se utilizan para aplicación de las reglas de ahorro transaccionales y también para la presentación de todas las funcionalidades del módulo de Control de Gastos.</p>\n<p>Las transacciones siempre están asociadas a un usuario y a una cuenta que este usuario tiene.</p>\n<h2 id=\"objeto-transacción\">Objeto Transacción</h2>\n<p>Cada transacción se compone con la siguiente información</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Descripción</th>\n<th>Required</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>transaction_id</td>\n<td>Identificador único de la transacción.</td>\n<td>Si</td>\n</tr>\n<tr>\n<td>product_id</td>\n<td>Identificador de la cuenta a la que pertenece la transacción</td>\n<td>Si</td>\n</tr>\n<tr>\n<td>user_id</td>\n<td>Identificador del usuario al que le pertenece la transacción</td>\n<td>Si</td>\n</tr>\n<tr>\n<td>transaction_type</td>\n<td>Identificador para tipo de la transacción (abono o retiro).</td>\n<td>No</td>\n</tr>\n<tr>\n<td>transaction_date</td>\n<td>Fecha de la transacción</td>\n<td>Si</td>\n</tr>\n<tr>\n<td>transaction_mcc</td>\n<td>Código MCC de la transacción</td>\n<td>No</td>\n</tr>\n<tr>\n<td>description</td>\n<td>Detalle o glosa de la transacción</td>\n<td>Si</td>\n</tr>\n<tr>\n<td>amount</td>\n<td>Valor de la transacción</td>\n<td>Si</td>\n</tr>\n<tr>\n<td>mcc</td>\n<td>Código MCC de la transacción si está disponible</td>\n<td>No</td>\n</tr>\n<tr>\n<td>country</td>\n<td>Código del país de la transaación en formato ISO 3166 a 2 caracteres. Ej: CL, CO, ES</td>\n<td>Si</td>\n</tr>\n<tr>\n<td>original_amount</td>\n<td>Monto en base a la moneda original.</td>\n<td>No</td>\n</tr>\n<tr>\n<td>currency</td>\n<td>Moneda original.</td>\n<td>No</td>\n</tr>\n<tr>\n<td>exchange_rate</td>\n<td>Valor del tipo de cambio aplicado.</td>\n<td>No</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"tipos-de-transacciones\">Tipos de Transacciones</h2>\n<p>Las transacciones son insumos para las soluciones de <strong>Ahorro Automático</strong> y <strong>Control de Gastos</strong>. Sin embargo, dependiendo de los servicios contratados los diferentes tipos de transacciones pueden o no ser necesarios.</p>\n<p>Para la solución de <strong>Control de Gastos</strong>, se buscan todas aquellas transacciones que impacten en los saldos de los productos del cliente.</p>\n<p>Para el <strong>Ahorro Automático</strong> se necesitan las compras realizadas con sus cuentas y tarjetas principalmente</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Tipo de Transacción</th>\n<th>PFM</th>\n<th>Ahorro Automático</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Compras en Cuentas y Tarjetas de Débito</td>\n<td>Si</td>\n<td>Si</td>\n</tr>\n<tr>\n<td>Compras con Tarjeta de Crédito</td>\n<td>Si</td>\n<td>Si</td>\n</tr>\n<tr>\n<td>Transferencias entre cuentas propias</td>\n<td>Si</td>\n<td>No</td>\n</tr>\n<tr>\n<td>Transferencias a terceros</td>\n<td>Si</td>\n<td>No</td>\n</tr>\n<tr>\n<td>Giros en Cajero</td>\n<td>Si</td>\n<td>Si</td>\n</tr>\n<tr>\n<td>Abonos de Sueldo o Nomina</td>\n<td>Si</td>\n<td>Si</td>\n</tr>\n<tr>\n<td>Intereses y/o comisiones</td>\n<td>Si</td>\n<td>No</td>\n</tr>\n<tr>\n<td>Pagos de servicios</td>\n<td>Si</td>\n<td>No</td>\n</tr>\n</tbody>\n</table>\n</div><h1 id=\"transaction-enrichment\"><strong>Transaction Enrichment</strong></h1>\n<p>Todas las transacciones son procesadas por el servicio para identificar un comercio, asociarles una categoría y extraer otra información relevante para ser utilizada dentro del PFM</p>\n<blockquote>\n<p>+100K Comercios registrados<br />+90% Categorización<br />+70% Identificación de comercios </p>\n</blockquote>\n<p>Este servicio puede agregar hasta 12 campos de información a cada transacción. Un equipo Xerpa se preocupa de alimentar y actualizar la base de comercios y glosas para mantener las métricas de cobertura</p>\n<img src=\"https://lh7-rt.googleusercontent.com/slidesz/AGV_vUdScLR9GtZGGnS1pl23MIl7uBoIBhxpyWZmjl1D6_RGQv2mw9iFYLDL9CXxMgDeSASM8Vg0oZ3OKOiWKbA7i0vQTJFhDQRKR3Q2JPtDgiojTRs0qYxuFd5wndfQvYM1Q1HD8s5Y=s2048?key=SmcJkW1I-s0Xg8fRA-aSgyak\" />\n\n<h3 id=\"logos\"><strong>Logos</strong></h3>\n<p>Se disponibilizan directamente desde el CDN de Xerpa para su uso. Los logos son imágenes en formato PNG de dimensiones de 128x128 pixeles.</p>\n<img src=\"https://lh7-rt.googleusercontent.com/slidesz/AGV_vUd21xexCjzG0rp3FbbgoxXvMDlKbjiYACScCAfymgRRjYghv37DhJ4bUuBCpR9OUPw8ja7yJNjAcmIH6ZWVB5eEOEjovzFeM1gdaV-GuHSSrFOexfFfqcAo_T6YHcmUUU0y5AhmXw=s2048?key=SmcJkW1I-s0Xg8fRA-aSgyak\" />\n\n<img src=\"https://lh7-rt.googleusercontent.com/slidesz/AGV_vUdWgkyHdfbkzQEShwUiKhVPYeekxztpmhsXanpaQY4gJ1a5KpNNseTOhLVcV98lisIWxp7FYCasTT5L9qhmCZ0upw5phCG_u6oGRNJ5zZcbCSzA1i_o0bv3ZEzPucZXaUeCtb4t=s2048?key=SmcJkW1I-s0Xg8fRA-aSgyak\" />\n\n<img src=\"https://lh7-rt.googleusercontent.com/slidesz/AGV_vUdHegHw12DlppOYS2Rgo-dXMsbH9SR1mhhZgmvIkETBpXc6Q49BT2kFn7wHpOATVZXqIzUVUAbU5ZCIG7a3w16xmyqU6Ox2Apa7HXPScGTqUkS8F4MgvsymV2G0PokCZapWOI2b9g=s2048?key=SmcJkW1I-s0Xg8fRA-aSgyak\" />\n\n<h2 id=\"ingesta-de-transacciones\">Ingesta de transacciones</h2>\n<p>Xerpa permite la recepción de las transacciones con distintos mecanismos para adaptarse a las necesidades técnicas y de negocio del cliente.</p>\n<p>Independiente del mecanismo de ingesta son necesarios los mismos datos para registrar cada transacción.</p>\n","_postman_id":"efaafbc7-0ef9-41b7-ae85-0396e775aff0","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":true,"source":{"_postman_id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","name":"API Xerpa Middleware","type":"collection"}}},{"name":"Notificaciones","item":[{"name":"Lista de notificaciones externas","id":"34ec1057-6d20-450d-bbaf-2a8e126ef10c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{host_middleware}}/api-middleware/v1/notification-api/notifications/?page=1&page_size=5","description":"<p>Este endpoint permite obtener información sobre las notificaciones asociadas al usuario. Devuelve detalles sobre el estado de las notificaciones, incluyendo su tipo, campaña asociada y otros atributos relevantes.</p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><p><strong>Método:</strong> GET</p>\n</li>\n<li><p><strong>URL:</strong> <code>{{host_middleware}}/api-middleware/v1/notification-api/notifications/</code></p>\n</li>\n<li><p><strong>Parámetros de query:</strong></p>\n<ul>\n<li><p><code>page</code> (número): Número de página a obtener (Opcional).</p>\n</li>\n<li><p><code>page_size</code> (número): Número de notificaciones por página (Opcional).</p>\n</li>\n<li><p><code>send</code> (booleano): Filtrar notificaciones enviadas (Opcional).</p>\n</li>\n<li><p><code>active</code> (booleano): Filtrar notificaciones activas (Opcional).</p>\n</li>\n<li><p><code>ignored</code> (booleano): Filtrar notificaciones ignoradas (Opcional).</p>\n</li>\n<li><p><code>read</code> (booleano): Filtrar notificaciones leídas (Opcional).</p>\n</li>\n<li><p><code>expired</code> (booleano): Filtrar notificaciones expiradas (Opcional).</p>\n</li>\n<li><p><code>notification_campaign</code> (string): Filtrar por campaña de notificación (Opcional).</p>\n</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<p>Este request de tipo <code>GET</code> no requiere cuerpo. El cuerpo de la solicitud debe enviarse vacío.</p>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><code>next</code> (string): URL para la siguiente página de resultados.</p>\n</li>\n<li><p><code>previous</code> (string): URL para la página anterior de resultados.</p>\n</li>\n<li><p><code>total_pages</code> (integer): Total de páginas disponibles.</p>\n</li>\n<li><p><code>current_page</code> (integer): Página actual de resultados.</p>\n</li>\n<li><p><code>offset</code> (integer): Desplazamiento de los resultados.</p>\n</li>\n<li><p><code>results</code> (array): Lista de notificaciones.</p>\n<ul>\n<li><p><code>id</code> (string): Identificador único de la notificación.</p>\n</li>\n<li><p><code>created_at</code> (string): Fecha de creación de la notificación.</p>\n</li>\n<li><p><code>updated_at</code> (string): Fecha de última actualización de la notificación.</p>\n</li>\n<li><p><code>notification_type</code> (string): Tipo de notificación.</p>\n</li>\n<li><p><code>notification_campaign</code> (string): Campaña asociada a la notificación.</p>\n</li>\n<li><p><code>user_id</code> (string): Identificador del usuario asociado a la notificación.</p>\n</li>\n<li><p><code>ignored</code> (boolean): Indica si la notificación fue ignorada.</p>\n</li>\n<li><p><code>read</code> (boolean): Indica si la notificación ha sido leída.</p>\n</li>\n<li><p><code>sent</code> (boolean): Indica si la notificación fue enviada.</p>\n</li>\n<li><p><code>publication_date</code> (string): Fecha de publicación de la notificación.</p>\n</li>\n<li><p><code>expiration_date</code> (string): Fecha de expiración de la notificación.</p>\n</li>\n<li><p><code>priority_level</code> (integer): Nivel de prioridad de la notificación.</p>\n</li>\n<li><p><code>content</code> (object): Contenido de la notificación.</p>\n<ul>\n<li><p><code>image</code> (string): URL de la imagen asociada a la notificación.</p>\n</li>\n<li><p><code>title</code> (string): Título de la notificación.</p>\n</li>\n<li><p><code>action</code> (object): Acción asociada a la notificación.</p>\n<ul>\n<li><p><code>event</code> (object): Evento relacionado.</p>\n<ul>\n<li><p><code>reportId</code> (string): Identificador del reporte (Opcional).</p>\n</li>\n<li><p><code>pageEvent</code> (string): Evento de página (Opcional).</p>\n</li>\n</ul>\n</li>\n<li><p><code>route</code> (string): Ruta asociada a la acción.</p>\n</li>\n<li><p><code>origin</code> (string): Origen de la acción.</p>\n</li>\n</ul>\n</li>\n<li><p><code>subtitle</code> (string): Subtítulo de la notificación (Opcional).</p>\n</li>\n</ul>\n</li>\n<li><p><code>user_external_id</code> (string): Identificador externo del usuario (Opcional).</p>\n</li>\n</ul>\n</li>\n<li><p><code>count</code> (integer): Número total de notificaciones.</p>\n</li>\n</ul>\n<h4 id=\"response-format\">Response Format</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"next\": {\n      \"type\": [\"string\", \"null\"],\n      \"format\": \"uri-reference\"\n    },\n    \"previous\": {\n      \"type\": [\"string\", \"null\"],\n      \"format\": \"uri-reference\"\n    },\n    \"total_pages\": {\n      \"type\": \"integer\",\n      \"minimum\": 0\n    },\n    \"current_page\": {\n      \"type\": \"integer\",\n      \"minimum\": 1\n    },\n    \"offset\": {\n      \"type\": \"integer\",\n      \"minimum\": 0\n    },\n    \"results\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"id\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"created_at\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          },\n          \"updated_at\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          },\n          \"notification_type\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"notification_campaign\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"user_id\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"ignored\": {\n            \"type\": \"boolean\"\n          },\n          \"read\": {\n            \"type\": \"boolean\"\n          },\n          \"sent\": {\n            \"type\": \"boolean\"\n          },\n          \"publication_date\": {\n            \"type\": \"string\",\n            \"format\": \"date\"\n          },\n          \"expiration_date\": {\n            \"type\": \"string\",\n            \"format\": \"date\"\n          },\n          \"priority_level\": {\n            \"type\": \"integer\"\n          },\n          \"content\": {\n            \"type\": \"object\",\n            \"properties\": {\n              \"image\": {\n                \"type\": \"string\"\n              },\n              \"title\": {\n                \"type\": \"string\"\n              },\n              \"subtitle\": {\n                \"type\": \"string\"\n              },\n              \"action\": {\n                \"type\": \"object\",\n                \"properties\": {\n                  \"event\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                      \"projectId\": {\n                        \"type\": \"string\",\n                        \"format\": \"uuid\"\n                      },\n                      \"isProjectCreate\": {\n                        \"type\": \"boolean\"\n                      }\n                    }\n                  },\n                  \"route\": {\n                    \"type\": \"string\"\n                  },\n                  \"origin\": {\n                    \"type\": \"string\"\n                  }\n                }\n              }\n            }\n          },\n          \"user_external_id\": {\n            \"type\": \"string\"\n          }\n        }\n      }\n    }\n  }\n}\n\n</code></pre>\n","urlObject":{"path":["api-middleware","v1","notification-api","notifications",""],"host":["{{host_middleware}}"],"query":[{"disabled":true,"key":"send","value":"false"},{"disabled":true,"key":"active","value":"false"},{"disabled":true,"key":"ignored","value":"true"},{"disabled":true,"key":"read","value":"true"},{"disabled":true,"key":"expired","value":"false"},{"disabled":true,"key":"notification_campaign","value":"monthly_savings_report_5_2024"},{"key":"page","value":"1"},{"key":"page_size","value":"5"},{"disabled":true,"key":"paginate","value":"false"}],"variable":[]}},"response":[{"id":"47568d89-4767-410b-b898-27288c692425","name":"Successful Response","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{host_middleware}}api-middleware/v1/notification-api/notifications/?page_size=1&page=2","host":["{{host_middleware}}api-middleware"],"path":["v1","notification-api","notifications",""],"query":[{"key":"page_size","value":"1"},{"key":"page","value":"2"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"next\": \"/api-middleware/v1/notification-api/notifications/?internal_only=false&page=3&page_size=1&paginate=true\",\n    \"previous\": \"/api-middleware/v1/notification-api/notifications/?internal_only=false&page_size=1&paginate=true\",\n    \"total_pages\": 7,\n    \"current_page\": 2,\n    \"offset\": 1,\n    \"notifications\": [\n        {\n            \"id\": \"7447fb9f-4a83-4b1c-aee3-cfa09a511b0e\",\n            \"created_at\": \"2024-07-30T17:08:57.224765Z\",\n            \"updated_at\": \"2024-08-09T13:58:07.369347Z\",\n            \"notification_type\": \"d77af6e6-f577-46e4-bf62-ff57e98a328e\",\n            \"notification_campaign\": \"a9cd9504-a00e-4ce4-b5a7-9019fc3aa42f\",\n            \"user_id\": \"b1e430ff-4ba3-4340-83fd-e73f3946917c\",\n            \"ignored\": false,\n            \"read\": false,\n            \"sent\": true,\n            \"publication_date\": \"2024-07-30\",\n            \"expiration_date\": \"2024-08-10\",\n            \"priority_level\": 5,\n            \"content\": {\n                \"image\": \"/assets/xerpa/global/img/rules/mis_centavitos.svg\",\n                \"title\": \"Resumen semanal\",\n                \"action\": {\n                    \"event\": {\n                        \"reportId\": \"e47a55df-5fee-4bd5-8f21-f647673acf61\",\n                        \"pageEvent\": \"\"\n                    },\n                    \"route\": \"reportDetail\",\n                    \"origin\": \"\"\n                },\n                \"subtitle\": \"Revisa el balance de tus ahorros de esta semana\"\n            },\n            \"user_external_id\": \"\"\n        }\n    ],\n    \"count\": 7\n}"}],"_postman_id":"34ec1057-6d20-450d-bbaf-2a8e126ef10c"},{"name":"Lista de notificaciones por external_id","id":"8c804e9b-a6c3-49d5-9bc8-24677fae7b16","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{host_middleware}}/api-middleware/v1/notification-api/users/{{user_external_id}}/notifications/?page_size=1&page=1","description":"<p>Este endpoint permite recuperar las notificaciones de un usuario específico en el sistema. Se puede paginar la respuesta utilizando los parámetros de consulta.</p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><p><strong>Método:</strong> GET</p>\n</li>\n<li><p><strong>URL:</strong> <code>{{host_middleware}}/api-middleware/v1/notification-api/users/{{user_external_id}}/notifications/</code></p>\n</li>\n<li><p><strong>Parámetros de ruta:</strong></p>\n<ul>\n<li><code>user_external_id</code>(string): ID externo del usuario para el cual se desean obtener las notificaciones.</li>\n</ul>\n</li>\n<li><p><strong>Parámetros de query:</strong></p>\n<ul>\n<li><p><code>page_size</code>(integer): Número de notificaciones a retornar por página (Opcional).</p>\n</li>\n<li><p><code>page</code>(integer): Número de página a retornar (Opcional).</p>\n</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<p>Este request de tipo <code>GET</code> no requiere cuerpo. El cuerpo de la solicitud debe enviarse vacío.</p>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><code>next</code>(string): URL para la siguiente página de resultados.</p>\n</li>\n<li><p><code>previous</code>(string|null): URL para la página anterior de resultados.</p>\n</li>\n<li><p><code>total_pages</code>(integer): Total de páginas de resultados.</p>\n</li>\n<li><p><code>current_page</code>(integer): Página actual de resultados.</p>\n</li>\n<li><p><code>offset</code>(integer): Desplazamiento de los resultados.</p>\n</li>\n<li><p><code>results</code>(array): Lista de notificaciones.</p>\n<ul>\n<li><p><code>id</code>(string): ID de la notificación.</p>\n</li>\n<li><p><code>created_at</code>(string): Fecha y hora de creación de la notificación.</p>\n</li>\n<li><p><code>updated_at</code>(string): Fecha y hora de actualización de la notificación.</p>\n</li>\n<li><p><code>notification_type</code>(string): Tipo de notificación.</p>\n</li>\n<li><p><code>notification_campaign</code>(string): Campaña de notificación asociada.</p>\n</li>\n<li><p><code>user_id</code>(string): ID del usuario asociado a la notificación.</p>\n</li>\n<li><p><code>ignored</code>(boolean): Indica si la notificación fue ignorada.</p>\n</li>\n<li><p><code>read</code>(boolean): Indica si la notificación fue leída.</p>\n</li>\n<li><p><code>sent</code>(boolean): Indica si la notificación fue enviada.</p>\n</li>\n<li><p><code>publication_date</code>(string): Fecha de publicación de la notificación.</p>\n</li>\n<li><p><code>expiration_date</code>(string): Fecha de expiración de la notificación.</p>\n</li>\n<li><p><code>priority_level</code>(integer): Nivel de prioridad de la notificación.</p>\n</li>\n<li><p><code>content</code>(object): Contenido de la notificación.</p>\n<ul>\n<li><p><code>image</code>(string): URL de la imagen asociada a la notificación.</p>\n</li>\n<li><p><code>title</code>(string): Título de la notificación.</p>\n</li>\n<li><p><code>action</code>(object): Acción asociada a la notificación.</p>\n<ul>\n<li><p><code>event</code>(object): Evento relacionado.</p>\n<ul>\n<li><p><code>reportId</code>(string): ID del informe asociado al evento.</p>\n</li>\n<li><p><code>pageEvent</code>(string): Evento de página relacionado.</p>\n</li>\n</ul>\n</li>\n<li><p><code>route</code>(string): Ruta a la que se redirige al usuario.</p>\n</li>\n<li><p><code>origin</code>(string): Origen de la acción.</p>\n</li>\n</ul>\n</li>\n<li><p><code>subtitle</code>(string): Subtítulo de la notificación.</p>\n</li>\n</ul>\n</li>\n<li><p><code>user_external_id</code>(string): ID externo del usuario asociado a la notificación.</p>\n</li>\n</ul>\n</li>\n<li><p><code>count</code>(integer): Número total de notificaciones retornadas.</p>\n</li>\n</ul>\n<h4 id=\"response-format\">Response Format:</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"next\": {\n      \"type\": [\"string\", \"null\"],\n      \"format\": \"uri-reference\"\n    },\n    \"previous\": {\n      \"type\": [\"string\", \"null\"],\n      \"format\": \"uri-reference\"\n    },\n    \"total_pages\": {\n      \"type\": \"integer\",\n      \"minimum\": 0\n    },\n    \"current_page\": {\n      \"type\": \"integer\",\n      \"minimum\": 1\n    },\n    \"offset\": {\n      \"type\": \"integer\",\n      \"minimum\": 0\n    },\n    \"results\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"id\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"created_at\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          },\n          \"updated_at\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          },\n          \"notification_type\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"notification_campaign\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"user_id\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"ignored\": {\n            \"type\": \"boolean\"\n          },\n          \"read\": {\n            \"type\": \"boolean\"\n          },\n          \"sent\": {\n            \"type\": \"boolean\"\n          },\n          \"publication_date\": {\n            \"type\": \"string\",\n            \"format\": \"date\"\n          },\n          \"expiration_date\": {\n            \"type\": \"string\",\n            \"format\": \"date\"\n          },\n          \"priority_level\": {\n            \"type\": \"integer\"\n          },\n          \"content\": {\n            \"type\": \"object\",\n            \"properties\": {\n              \"image\": {\n                \"type\": \"string\"\n              },\n              \"title\": {\n                \"type\": \"string\"\n              },\n              \"subtitle\": {\n                \"type\": \"string\"\n              },\n              \"action\": {\n                \"type\": \"object\",\n                \"properties\": {\n                  \"event\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                      \"projectId\": {\n                        \"type\": \"string\",\n                        \"format\": \"uuid\"\n                      },\n                      \"isProjectCreate\": {\n                        \"type\": \"boolean\"\n                      }\n                    }\n                  },\n                  \"route\": {\n                    \"type\": \"string\"\n                  },\n                  \"origin\": {\n                    \"type\": \"string\"\n                  }\n                }\n              }\n            }\n          },\n          \"user_external_id\": {\n            \"type\": \"string\"\n          }\n        }\n      }\n    }\n  }\n}\n\n</code></pre>\n","urlObject":{"path":["api-middleware","v1","notification-api","users","{{user_external_id}}","notifications",""],"host":["{{host_middleware}}"],"query":[{"key":"page_size","value":"1"},{"key":"page","value":"1"}],"variable":[]}},"response":[{"id":"be6cf90c-7904-42ce-974f-5506363b95de","name":"Successful Response","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{host_middleware}}api-middleware/v1/notification-api/users/{{user_external_id}}/notifications/?page_size=1&page=1","host":["{{host_middleware}}api-middleware"],"path":["v1","notification-api","users","{{user_external_id}}","notifications",""],"query":[{"key":"page_size","value":"1"},{"key":"page","value":"1"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"next\": \"/api-middleware/v1/notification-api/users/61a85f1f-98aa-4dcd-837d-84cf54bb532a/notifications/?internal_only=false&page=2&page_size=1&paginate=true\",\n    \"previous\": null,\n    \"total_pages\": 2,\n    \"current_page\": 1,\n    \"offset\": 0,\n    \"notifications\": [\n        {\n            \"id\": \"7a924453-ca03-4b96-81bb-fac90ffcb339\",\n            \"created_at\": \"2024-07-24T17:12:59.470195Z\",\n            \"updated_at\": \"2024-08-09T14:01:59.863024Z\",\n            \"notification_type\": \"d77af6e6-f577-46e4-bf62-ff57e98a328e\",\n            \"notification_campaign\": \"95b4f449-af3f-4de2-a4fb-6a4620fba9d3\",\n            \"user_id\": \"61a85f1f-98aa-4dcd-837d-84cf54bb532a\",\n            \"ignored\": false,\n            \"read\": false,\n            \"sent\": true,\n            \"publication_date\": \"2024-07-24\",\n            \"expiration_date\": \"2024-08-10\",\n            \"priority_level\": 5,\n            \"content\": {\n                \"image\": \"/assets/xerpa/global/img/rules/mis_centavitos.svg\",\n                \"title\": \"Resumen semanal\",\n                \"action\": {\n                    \"event\": {\n                        \"reportId\": \"852935e5-f38b-405d-a256-bc8e6cb5fbd7\",\n                        \"pageEvent\": \"\"\n                    },\n                    \"route\": \"reportDetail\",\n                    \"origin\": \"\"\n                },\n                \"subtitle\": \"Revisa el balance de tus ahorros de esta semana\"\n            },\n            \"user_external_id\": \"xh-user-qa-1\"\n        }\n    ],\n    \"count\": 2\n}"}],"_postman_id":"8c804e9b-a6c3-49d5-9bc8-24677fae7b16"},{"name":"Ignorar notificacion","id":"dc6f7075-25c5-4a6a-a302-ce535f2c6df1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"ignored\": true\r\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v1/notification-api/users/{{user_external_id}}/notifications/{{notification_id}}/change-ignored/","description":"<p>Este endpoint permite cambiar el estado de ignorado de una notificación específica para un usuario registrado en el sistema.</p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><p><strong>Método</strong>: POST</p>\n</li>\n<li><p><strong>URL</strong>: <code>{{host_middleware}}/api-middleware/v1/notification-api/users/{{user_external_id}}/notifications/{{notification_id}}/change-ignored/</code></p>\n</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<p>El cuerpo de la solicitud debe ser un objeto JSON con el siguiente parámetro:</p>\n<ul>\n<li><code>ignored</code> (boolean): Indica si la notificación debe ser ignorada o no.</li>\n</ul>\n<h4 id=\"request-body-example\">Request Body Example</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"ignored\": true\n}\n\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<p>La respuesta será un objeto JSON que contiene información sobre la notificación actualizada. Los campos de la respuesta incluyen:</p>\n<ul>\n<li><p><code>id</code> (string): ID de la notificación.</p>\n</li>\n<li><p><code>created_at</code> (string): Fecha de creación de la notificación.</p>\n</li>\n<li><p><code>updated_at</code> (string): Fecha de la última actualización de la notificación.</p>\n</li>\n<li><p><code>notification_type</code> (string): Tipo de notificación.</p>\n</li>\n<li><p><code>notification_campaign</code> (string): Campaña asociada a la notificación.</p>\n</li>\n<li><p><code>user_id</code> (string): ID del usuario al que pertenece la notificación.</p>\n</li>\n<li><p><code>ignored</code> (boolean): Estado de ignorado de la notificación.</p>\n</li>\n<li><p><code>read</code> (boolean): Estado de lectura de la notificación.</p>\n</li>\n<li><p><code>sent</code> (boolean): Estado de envío de la notificación.</p>\n</li>\n<li><p><code>publication_date</code> (string): Fecha de publicación de la notificación.</p>\n</li>\n<li><p><code>expiration_date</code> (string): Fecha de expiración de la notificación.</p>\n</li>\n<li><p><code>priority_level</code> (integer): Nivel de prioridad de la notificación.</p>\n</li>\n<li><p><code>content</code> (object): Contenido de la notificación, que incluye:</p>\n<ul>\n<li><p><code>image</code> (string): URL de la imagen asociada.</p>\n</li>\n<li><p><code>title</code> (string): Título de la notificación.</p>\n</li>\n<li><p><code>action</code> (object): Acción asociada a la notificación, que incluye:</p>\n<ul>\n<li><p><code>event</code> (object): Evento relacionado, que incluye:</p>\n<ul>\n<li><p><code>reportId</code> (string): ID del reporte.</p>\n</li>\n<li><p><code>pageEvent</code> (string): Evento de página.</p>\n</li>\n</ul>\n</li>\n<li><p><code>route</code> (string): Ruta asociada a la acción.</p>\n</li>\n<li><p><code>origin</code> (string): Origen de la acción.</p>\n</li>\n</ul>\n</li>\n<li><p><code>subtitle</code> (string): Subtítulo de la notificación.</p>\n</li>\n</ul>\n</li>\n<li><p><code>user_external_id</code> (string): ID externo del usuario.</p>\n</li>\n</ul>\n<h4 id=\"response-format\">Response Format</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\"content\": {\n  \"type\": \"object\",\n  \"properties\": {\n    \"image\": { \"type\": \"string\" },\n    \"title\": { \"type\": \"string\" },\n    \"subtitle\": { \"type\": \"string\" },\n    \"action\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"event\": {\n          \"type\": \"object\",\n          \"description\": \"Estructura dinámica según tipo de evento\",\n          \"unevaluatedProperties\": true,\n          \"properties\": {},\n          \"required\": []\n        },\n        \"route\": { \"type\": \"string\" },\n        \"origin\": { \"type\": \"string\" }\n      }\n    }\n  }\n}\n\n</code></pre>\n","urlObject":{"path":["api-middleware","v1","notification-api","users","{{user_external_id}}","notifications","{{notification_id}}","change-ignored",""],"host":["{{host_middleware}}"],"query":[],"variable":[]}},"response":[{"id":"82d96a58-1b68-4822-abc2-816041ac85c8","name":"Successful Response","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"ignored\": true\r\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}api-middleware/v1/notification-api/users/{{user_external_id}}/notifications/451e0979-f19d-4185-a587-ad5f9c19fd47/change-ignored/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"451e0979-f19d-4185-a587-ad5f9c19fd47\",\n    \"created_at\": \"2024-07-24T17:12:57.120940Z\",\n    \"updated_at\": \"2024-08-09T14:14:48.338341Z\",\n    \"notification_type\": \"7ed5c079-3a7a-47f5-9f29-97a018b7aa0c\",\n    \"notification_campaign\": \"32af5881-f316-4198-9a78-d732fc8addb5\",\n    \"user_id\": \"61a85f1f-98aa-4dcd-837d-84cf54bb532a\",\n    \"ignored\": true,\n    \"read\": false,\n    \"sent\": true,\n    \"publication_date\": \"2024-07-24\",\n    \"expiration_date\": \"2024-08-10\",\n    \"priority_level\": 5,\n    \"content\": {\n        \"image\": \"/assets/xerpa/global/img/rules/monto_fijo.svg\",\n        \"title\": \"Resumen mensual\",\n        \"action\": {\n            \"event\": {\n                \"reportId\": \"34406b09-38f0-4bc0-9f26-0e7f5de18dc4\",\n                \"pageEvent\": \"\"\n            },\n            \"route\": \"reportDetail\",\n            \"origin\": \"\"\n        },\n        \"subtitle\": \"Revisa el balance de tus ahorros durante mayo\"\n    },\n    \"user_external_id\": \"xh-user-qa-1\"\n}"}],"_postman_id":"dc6f7075-25c5-4a6a-a302-ce535f2c6df1"},{"name":"Cambia campo read a true o false Copy","id":"b17adca3-3a34-427d-ad37-db704aa9e637","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"read\": true\r\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}/api-middleware/v1/notification-api/users/{{user_external_id}}/notifications/{{notification_id}}/change-read/","description":"<p>Este endpoint permite cambiar el estado de lectura de una notificación específica para un usuario determinado. Al enviar una solicitud a este endpoint, se actualiza el estado de la notificación a \"leída\".</p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><p><strong>Método:</strong> POST</p>\n</li>\n<li><p><strong>URL:</strong> <code>{{host_middleware}}/api-middleware/v1/notification-api/users/{{user_external_id}}/notifications/{{notification_id}}/change-read/</code></p>\n</li>\n<li><p><strong>Parámetros de ruta:</strong></p>\n<ul>\n<li><p><code>user_external_id</code>(string): Identificador externo del usuario.</p>\n</li>\n<li><p><code>notification_id</code>(string): Identificador de la notificación.</p>\n</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>read</code>(boolean): Indica si la notificación ha sido leída.</li>\n</ul>\n<h4 id=\"request-body-example\">Request Body Example</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"read\": true\n}\n\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><code>id</code>(string): Identificador de la notificación.</p>\n</li>\n<li><p><code>created_at</code>(string): Fecha de creación de la notificación.</p>\n</li>\n<li><p><code>updated_at</code>(string): Fecha de actualización de la notificación.</p>\n</li>\n<li><p><code>notification_type</code>(string): Tipo de notificación.</p>\n</li>\n<li><p><code>notification_campaign</code>(string): Campaña de notificación asociada.</p>\n</li>\n<li><p><code>user_id</code>(string): Identificador del usuario.</p>\n</li>\n<li><p><code>ignored</code>(boolean): Indica si la notificación fue ignorada.</p>\n</li>\n<li><p><code>read</code>(boolean): Indica si la notificación ha sido leída.</p>\n</li>\n<li><p><code>sent</code>(boolean): Indica si la notificación ha sido enviada.</p>\n</li>\n<li><p><code>publication_date</code>(string): Fecha de publicación de la notificación.</p>\n</li>\n<li><p><code>expiration_date</code>(string): Fecha de expiración de la notificación.</p>\n</li>\n<li><p><code>priority_level</code>(integer): Nivel de prioridad de la notificación.</p>\n</li>\n<li><p><code>content</code>(object): Contenido de la notificación.</p>\n<ul>\n<li><p><code>image</code>(string): URL de la imagen asociada a la notificación.</p>\n</li>\n<li><p><code>title</code>(string): Título de la notificación.</p>\n</li>\n<li><p><code>action</code>(object): Acción asociada a la notificación.</p>\n<ul>\n<li><p><code>event</code>(object): Evento relacionado.</p>\n<ul>\n<li><p><code>reportId</code>(string): Identificador del reporte.</p>\n</li>\n<li><p><code>pageEvent</code>(string): Evento de página.</p>\n</li>\n</ul>\n</li>\n<li><p><code>route</code>(string): Ruta de la acción.</p>\n</li>\n<li><p><code>origin</code>(string): Origen de la acción.</p>\n</li>\n</ul>\n</li>\n<li><p><code>subtitle</code>(string): Subtítulo de la notificación.</p>\n</li>\n</ul>\n</li>\n<li><p><code>user_external_id</code>(string): Identificador externo del usuario.</p>\n</li>\n</ul>\n<h4 id=\"response-format\">Response Format</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\"content\": {\n  \"type\": \"object\",\n  \"properties\": {\n    \"image\": { \"type\": \"string\" },\n    \"title\": { \"type\": \"string\" },\n    \"subtitle\": { \"type\": \"string\" },\n    \"action\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"event\": {\n          \"type\": \"object\",\n          \"description\": \"Estructura dinámica según tipo de evento\",\n          \"unevaluatedProperties\": true,\n          \"properties\": {},\n          \"required\": []\n        },\n        \"route\": { \"type\": \"string\" },\n        \"origin\": { \"type\": \"string\" }\n      },\n      \"required\": [\"event\", \"route\", \"origin\"],\n      \"additionalProperties\": false\n    }\n  },\n  \"required\": [\"image\", \"title\", \"subtitle\", \"action\"],\n  \"additionalProperties\": false\n}\n\n\n</code></pre>\n","urlObject":{"path":["api-middleware","v1","notification-api","users","{{user_external_id}}","notifications","{{notification_id}}","change-read",""],"host":["{{host_middleware}}"],"query":[],"variable":[]}},"response":[{"id":"1508e0f2-7d00-4f91-a333-40cce42c9923","name":"Successful Response","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"read\": true\r\n}","options":{"raw":{"language":"json"}}},"url":"{{host_middleware}}api-middleware/v1/notification-api/users/{{user_external_id}}/notifications/451e0979-f19d-4185-a587-ad5f9c19fd47/change-read/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"451e0979-f19d-4185-a587-ad5f9c19fd47\",\n    \"created_at\": \"2024-07-24T17:12:57.120940Z\",\n    \"updated_at\": \"2024-08-09T16:43:04.243379Z\",\n    \"notification_type\": \"7ed5c079-3a7a-47f5-9f29-97a018b7aa0c\",\n    \"notification_campaign\": \"32af5881-f316-4198-9a78-d732fc8addb5\",\n    \"user_id\": \"61a85f1f-98aa-4dcd-837d-84cf54bb532a\",\n    \"ignored\": true,\n    \"read\": true,\n    \"sent\": true,\n    \"publication_date\": \"2024-07-24\",\n    \"expiration_date\": \"2024-08-10\",\n    \"priority_level\": 5,\n    \"content\": {\n        \"image\": \"/assets/xerpa/global/img/rules/monto_fijo.svg\",\n        \"title\": \"Resumen mensual\",\n        \"action\": {\n            \"event\": {\n                \"reportId\": \"34406b09-38f0-4bc0-9f26-0e7f5de18dc4\",\n                \"pageEvent\": \"\"\n            },\n            \"route\": \"reportDetail\",\n            \"origin\": \"\"\n        },\n        \"subtitle\": \"Revisa el balance de tus ahorros durante mayo\"\n    },\n    \"user_external_id\": \"xh-user-qa-1\"\n}"}],"_postman_id":"b17adca3-3a34-427d-ad37-db704aa9e637"},{"name":"Obtener notificacion","id":"d3847532-1880-4656-9d5e-264a5e4e4583","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{host_middleware}}/api-middleware/v1/notification-api/users/{{user_external_id}}/notifications/{{notification_id}}/","description":"<p>Este endpoint permite obtener las notificaciones asociadas a un usuario específico utilizando su identificador externo y el identificador de la notificación.</p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><p><strong>Método:</strong> GET</p>\n</li>\n<li><p><strong>URL:</strong> <code>{{host_middleware}}/api-middleware/v1/notification-api/users/{{user_external_id}}/notifications/{{notification_id}}/</code></p>\n</li>\n<li><p><strong>Parámetros de ruta:</strong></p>\n<ul>\n<li><p><code>user_external_id</code>(string): Identificador externo del usuario.</p>\n</li>\n<li><p><code>notification_id</code>(string): Identificador de la notificación.</p>\n</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<p>Este request de tipo <code>GET</code> no requiere cuerpo. El cuerpo de la solicitud debe enviarse vacío.</p>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><code>id</code>(string): Identificador único de la notificación.</p>\n</li>\n<li><p><code>created_at</code>(string): Fecha y hora de creación de la notificación.</p>\n</li>\n<li><p><code>updated_at</code>(string): Fecha y hora de la última actualización de la notificación.</p>\n</li>\n<li><p><code>notification_type</code>(string): Tipo de notificación.</p>\n</li>\n<li><p><code>notification_campaign</code>(string): Campaña asociada a la notificación.</p>\n</li>\n<li><p><code>user_id</code>(string): Identificador del usuario asociado a la notificación.</p>\n</li>\n<li><p><code>ignored</code>(boolean): Indica si la notificación fue ignorada.</p>\n</li>\n<li><p><code>read</code>(boolean): Indica si la notificación ha sido leída.</p>\n</li>\n<li><p><code>sent</code>(boolean): Indica si la notificación ha sido enviada.</p>\n</li>\n<li><p><code>publication_date</code>(string): Fecha de publicación de la notificación.</p>\n</li>\n<li><p><code>expiration_date</code>(string): Fecha de expiración de la notificación.</p>\n</li>\n<li><p><code>priority_level</code>(integer): Nivel de prioridad de la notificación.</p>\n</li>\n<li><p><code>content</code>(object): Contenido de la notificación.</p>\n<ul>\n<li><p><code>image</code>(string): URL de la imagen asociada a la notificación.</p>\n</li>\n<li><p><code>title</code>(string): Título de la notificación.</p>\n</li>\n<li><p><code>action</code>(object): Acción asociada a la notificación.</p>\n<ul>\n<li><p><code>event</code>(object): Evento relacionado con la acción.</p>\n<ul>\n<li><p><code>reportId</code>(string): Identificador del reporte.</p>\n</li>\n<li><p><code>pageEvent</code>(string): Evento de la página.</p>\n</li>\n</ul>\n</li>\n<li><p><code>route</code>(string): Ruta asociada a la acción.</p>\n</li>\n<li><p><code>origin</code>(string): Origen de la acción.</p>\n</li>\n</ul>\n</li>\n<li><p><code>subtitle</code>(string): Subtítulo de la notificación.</p>\n</li>\n</ul>\n</li>\n<li><p><code>user_external_id</code>(string): Identificador externo del usuario.</p>\n</li>\n</ul>\n<h4 id=\"response-format\">Response Format</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\"content\": {\n  \"type\": \"object\",\n  \"properties\": {\n    \"image\": { \"type\": \"string\" },\n    \"title\": { \"type\": \"string\" },\n    \"subtitle\": { \"type\": \"string\" },\n    \"action\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"event\": {\n          \"oneOf\": [\n            {\n              \"type\": \"object\",\n              \"properties\": {\n                \"projectId\": { \"type\": \"string\", \"format\": \"uuid\" },\n                \"isProjectCreate\": { \"type\": \"boolean\" }\n              }\n            },\n            {\n              \"type\": \"object\",\n              \"properties\": {\n                \"reportId\": { \"type\": \"string\", \"format\": \"uuid\" },\n                \"pageEvent\": { \"type\": \"string\" }\n              }\n            }\n          ]\n        },\n        \"route\": { \"type\": \"string\" },\n        \"origin\": { \"type\": \"string\" }\n      }\n    }\n  }\n}\n\n</code></pre>\n","urlObject":{"path":["api-middleware","v1","notification-api","users","{{user_external_id}}","notifications","{{notification_id}}",""],"host":["{{host_middleware}}"],"query":[],"variable":[]}},"response":[{"id":"8b1ee1bd-a3db-4d46-a44e-4256e8be6c9a","name":"Successful Response","originalRequest":{"method":"GET","header":[]},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"451e0979-f19d-4185-a587-ad5f9c19fd47\",\n    \"created_at\": \"2024-07-24T17:12:57.120940Z\",\n    \"updated_at\": \"2024-08-09T16:43:04.243379Z\",\n    \"notification_type\": \"7ed5c079-3a7a-47f5-9f29-97a018b7aa0c\",\n    \"notification_campaign\": \"32af5881-f316-4198-9a78-d732fc8addb5\",\n    \"user_id\": \"61a85f1f-98aa-4dcd-837d-84cf54bb532a\",\n    \"ignored\": true,\n    \"read\": true,\n    \"sent\": true,\n    \"publication_date\": \"2024-07-24\",\n    \"expiration_date\": \"2024-08-10\",\n    \"priority_level\": 5,\n    \"content\": {\n        \"image\": \"/assets/xerpa/global/img/rules/monto_fijo.svg\",\n        \"title\": \"Resumen mensual\",\n        \"action\": {\n            \"event\": {\n                \"reportId\": \"34406b09-38f0-4bc0-9f26-0e7f5de18dc4\",\n                \"pageEvent\": \"\"\n            },\n            \"route\": \"reportDetail\",\n            \"origin\": \"\"\n        },\n        \"subtitle\": \"Revisa el balance de tus ahorros durante mayo\"\n    },\n    \"user_external_id\": \"xh-user-qa-1\"\n}"}],"_postman_id":"d3847532-1880-4656-9d5e-264a5e4e4583"},{"name":"Listar campañas","id":"3f444725-1d0a-44cb-bf24-6c7bc09c5cfc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{host_middleware}}/api-middleware/v1/notification-api/campaigns/","description":"<p>Este endpoint permite recuperar una lista de campañas de notificación basadas en varios parámetros de filtrado, como el tipo de notificación, el nombre, la fecha de creación y el estado activo. También soporta paginación para facilitar la navegación a través de grandes conjuntos de datos.</p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><p><strong>Método:</strong> GET</p>\n</li>\n<li><p><strong>URL:</strong> <code>{{host_middleware}}/api-middleware/v1/notification-api/campaigns/</code></p>\n</li>\n<li><p><strong>Parámetros de query:</strong></p>\n<ul>\n<li><p><code>paginate</code> (bool): Indica si se debe paginar la respuesta.</p>\n</li>\n<li><p><code>active</code> (bool): Filtra las campañas activas o inactivas.</p>\n</li>\n<li><p><code>notification_type</code> (string): ID del Tipo de notificación a filtrar.</p>\n</li>\n<li><p><code>name</code> (string): Nombre de la campaña a filtrar.</p>\n</li>\n<li><p><code>created_at</code> (string): Fecha de creación de la campaña.</p>\n</li>\n<li><p><code>notification_schedule_date</code> (string): Fecha programada para la notificación.</p>\n</li>\n<li><p><code>ordering</code> (string): Criterio de ordenamiento de los resultados.</p>\n</li>\n<li><p><code>page_size</code> (integer): Número de resultados por página.</p>\n</li>\n<li><p><code>page</code> (integer): Número de la página a recuperar.</p>\n</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"3-request-body\">3. Request Body</h4>\n<p>Este request de tipo <code>GET</code> no requiere cuerpo. El cuerpo de la solicitud debe enviarse vacío.</p>\n<h4 id=\"4-request-body-example\">4. Request Body Example</h4>\n<p>(No se incluye ejemplo ya que no hay cuerpo en la solicitud.)</p>\n<h4 id=\"5-response\">5. Response</h4>\n<ul>\n<li><p><code>next</code> (string): URL para la siguiente página de resultados.</p>\n</li>\n<li><p><code>previous</code> (string): URL para la página anterior de resultados.</p>\n</li>\n<li><p><code>total_pages</code> (integer): Total de páginas disponibles.</p>\n</li>\n<li><p><code>current_page</code> (integer): Página actual de los resultados.</p>\n</li>\n<li><p><code>offset</code> (integer): Desplazamiento actual en los resultados.</p>\n</li>\n<li><p><code>results</code> (array of object): Lista de campañas de notificación.</p>\n<ul>\n<li><p><code>id</code> (string): Identificador único de la campaña.</p>\n</li>\n<li><p><code>created_at</code> (string): Fecha de creación de la campaña.</p>\n</li>\n<li><p><code>updated_at</code> (string): Fecha de última actualización de la campaña.</p>\n</li>\n<li><p><code>name</code> (string): Nombre de la campaña.</p>\n</li>\n<li><p><code>description</code> (string): Descripción de la campaña.</p>\n</li>\n<li><p><code>notification_type</code> (string): Tipo de notificación de la campaña.</p>\n</li>\n<li><p><code>notification_schedule_date</code> (string): Fecha programada para la notificación.</p>\n</li>\n<li><p><code>notification_built_date</code> (string): Fecha en que se construyó la notificación.</p>\n</li>\n<li><p><code>metadata</code> (object): Metadatos relacionados con la campaña.</p>\n<ul>\n<li><code>channel_type_id</code> (array of string): Identificadores de tipo de canal.</li>\n</ul>\n</li>\n<li><p><code>active</code> (bool): Indica si la campaña está activa.</p>\n</li>\n<li><p><code>internal_only</code> (bool): Indica si la campaña es solo para uso interno.</p>\n</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"response-format\">Response Format</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"id\": {\n      \"type\": \"string\",\n      \"format\": \"uuid\"\n    },\n    \"name\": {\n      \"type\": \"string\"\n    },\n    \"description\": {\n      \"type\": \"string\"\n    },\n    \"notification_type\": {\n      \"type\": \"string\",\n      \"format\": \"uuid\"\n    },\n    \"notification_schedule_date\": {\n      \"type\": \"string\",\n      \"format\": \"date\"\n    },\n    \"notification_built_date\": {\n      \"type\": \"string\",\n      \"format\": \"date\"\n    },\n    \"metadata\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"channel_type_id\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          }\n        }\n      }\n    },\n    \"active\": {\n      \"type\": \"boolean\"\n    },\n    \"internal_only\": {\n      \"type\": \"boolean\"\n    }\n  }\n}\n\n</code></pre>\n","urlObject":{"path":["api-middleware","v1","notification-api","campaigns",""],"host":["{{host_middleware}}"],"query":[{"disabled":true,"key":"paginate","value":"true"},{"disabled":true,"key":"active","value":"false"},{"disabled":true,"key":"notification_type","value":"f41e2201-fed0-4313-a5f9-4ed40251d8fb"},{"disabled":true,"key":"name","value":"usuarios con meta sin ahorro manual"},{"disabled":true,"key":"created_at","value":"2025-06-01"},{"disabled":true,"key":"notification_schedule_date","value":"2025-06-01"},{"disabled":true,"key":"ordering","value":"-created_at"},{"disabled":true,"key":"page_size","value":"1"},{"disabled":true,"key":"page","value":"1"}],"variable":[]}},"response":[{"id":"ee9bf657-cffe-4ab0-918e-0caf2873ae87","name":"Successful Response","originalRequest":{"method":"GET","header":[],"url":"{{host_middleware}}/api-middleware/v1/notification-api/campaigns/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 24 Sep 2024 18:51:04 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"498"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"d3ee872e-0fbc-4fac-898d-ceed23ed7675"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"x-amz-apigw-id","value":"en6D1GbNoAMEjwg="},{"key":"X-Amzn-Trace-Id","value":"Root=1-66f30a18-21be3750477bfe5c3560b49e;Parent=0dc3f4a4e3bb5d70;Sampled=0;Lineage=1:4850f440:0"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"id\": \"95b4f449-af3f-4de2-a4fb-6a4620fba9d3\",\n        \"created_at\": \"2024-07-24T17:12:59.447723Z\",\n        \"updated_at\": \"2024-07-24T17:12:59.473913Z\",\n        \"name\": \"weekly_report_short_2024-06-03_2024-06-09_demo\",\n        \"description\": \"Reporte semanal del 2024-06-03 a 2024-06-09\",\n        \"notification_type\": \"d77af6e6-f577-46e4-bf62-ff57e98a328e\",\n        \"notification_schedule_date\": \"2024-07-24\",\n        \"notification_built_date\": \"2024-07-24\",\n        \"metadata\": {\n            \"channel_type_id\": [\n                \"ce9fc3bf-e384-4a4b-8780-b08a58f40a09\"\n            ]\n        },\n        \"active\": false,\n        \"internal_only\": false\n    }\n]"},{"id":"24950585-ef64-4381-a561-f4987273e9d7","name":"Successful Response - Paginated","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{host_middleware}}/api-middleware/v1/notification-api/campaigns/?paginate=true","host":["{{host_middleware}}"],"path":["api-middleware","v1","notification-api","campaigns",""],"query":[{"key":"paginate","value":"true"},{"key":"internal_only","value":"false","disabled":true},{"key":"active","value":"true","disabled":true},{"key":"notification_type","value":"d77af6e6-f577-46e4-bf62-ff57e98a328e","disabled":true},{"key":"name","value":"weekly_report_short_2024-06-10_2024-06-16","disabled":true},{"key":"created_at","value":"2024-07-24","disabled":true},{"key":"notification_schedule_date","value":"2024-07-24","disabled":true},{"key":"ordering","value":"-created_at","disabled":true},{"key":"page_size","value":"1","disabled":true},{"key":"page","value":"2","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 24 Sep 2024 18:54:44 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"592"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"843880aa-0c9c-48df-9f15-1901ad2b0a94"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"x-amz-apigw-id","value":"en6mPE-8IAMEhfg="},{"key":"X-Amzn-Trace-Id","value":"Root=1-66f30af4-7441e9236c6d100f51b90898;Parent=6cffb6d492f1e478;Sampled=0;Lineage=1:4850f440:0"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"next\": null,\n    \"previous\": null,\n    \"total_pages\": 1,\n    \"current_page\": 1,\n    \"offset\": 0,\n    \"results\": [\n        {\n            \"id\": \"95b4f449-af3f-4de2-a4fb-6a4620fba9d3\",\n            \"created_at\": \"2024-07-24T17:12:59.447723Z\",\n            \"updated_at\": \"2024-07-24T17:12:59.473913Z\",\n            \"name\": \"weekly_report_short_2024-06-03_2024-06-09_demo\",\n            \"description\": \"Reporte semanal del 2024-06-03 a 2024-06-09\",\n            \"notification_type\": \"d77af6e6-f577-46e4-bf62-ff57e98a328e\",\n            \"notification_schedule_date\": \"2024-07-24\",\n            \"notification_built_date\": \"2024-07-24\",\n            \"metadata\": {\n                \"channel_type_id\": [\n                    \"ce9fc3bf-e384-4a4b-8780-b08a58f40a09\"\n                ]\n            },\n            \"active\": false,\n            \"internal_only\": false\n        }\n    ],\n    \"count\": 1\n}"}],"_postman_id":"3f444725-1d0a-44cb-bf24-6c7bc09c5cfc"},{"name":"Obtener campaña","id":"e9d1fb7a-df84-482c-8f1f-a5df0a046d6a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{host_middleware}}/api-middleware/v1/notification-api/campaigns/{{campaign_id}}/","description":"<p>Este endpoint permite obtener información detallada sobre una campaña específica en el sistema de notificaciones. Al realizar una solicitud GET a este endpoint, se recuperan los datos de la campaña identificada por el <code>campaign_id</code>.</p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><p><strong>Método:</strong> GET</p>\n</li>\n<li><p><strong>URL:</strong> <code>{{host_middleware}}/api-middleware/v1/notification-api/campaigns/{{campaign_id}}/</code></p>\n</li>\n<li><p><strong>Parámetros de ruta:</strong></p>\n<ul>\n<li><code>campaign_id</code> (string): Identificador único de la campaña que se desea consultar.</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<p>Este request de tipo <code>GET</code> no requiere cuerpo. El cuerpo de la solicitud debe enviarse vacío.</p>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><code>id</code> (string): Identificador único de la campaña.</p>\n</li>\n<li><p><code>created_at</code> (string): Fecha y hora de creación de la campaña.</p>\n</li>\n<li><p><code>updated_at</code> (string): Fecha y hora de la última actualización de la campaña.</p>\n</li>\n<li><p><code>name</code> (string): Nombre de la campaña.</p>\n</li>\n<li><p><code>description</code> (string): Descripción de la campaña.</p>\n</li>\n<li><p><code>notification_type</code> (string): Tipo de notificación asociada a la campaña.</p>\n</li>\n<li><p><code>notification_schedule_date</code> (string): Fecha programada para la notificación.</p>\n</li>\n<li><p><code>notification_built_date</code> (string): Fecha en la que se construyó la notificación.</p>\n</li>\n<li><p><code>metadata</code> (objeto): Metadatos adicionales sobre la campaña.</p>\n<ul>\n<li><code>channel_type_id</code> (array of strings): Identificadores de los tipos de canal asociados a la campaña.</li>\n</ul>\n</li>\n<li><p><code>active</code> (boolean): Indica si la campaña está activa.</p>\n</li>\n<li><p><code>internal_only</code> (boolean): Indica si la campaña es solo para uso interno.</p>\n</li>\n</ul>\n<h4 id=\"response-format\">Response Format</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"id\": {\n      \"type\": \"string\",\n      \"format\": \"uuid\"\n    },\n    \"created_at\": {\n      \"type\": \"string\",\n      \"format\": \"date-time\"\n    },\n    \"updated_at\": {\n      \"type\": \"string\",\n      \"format\": \"date-time\"\n    },\n    \"name\": {\n      \"type\": \"string\"\n    },\n    \"description\": {\n      \"type\": \"string\"\n    },\n    \"notification_type\": {\n      \"type\": \"string\",\n      \"format\": \"uuid\"\n    },\n    \"notification_schedule_date\": {\n      \"type\": \"string\",\n      \"format\": \"date\"\n    },\n    \"notification_built_date\": {\n      \"type\": \"string\",\n      \"format\": \"date\"\n    },\n    \"metadata\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"channel_type_id\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          }\n        }\n      }\n    },\n    \"active\": {\n      \"type\": \"boolean\"\n    },\n    \"internal_only\": {\n      \"type\": \"boolean\"\n    }\n  }\n}\n\n</code></pre>\n","urlObject":{"path":["api-middleware","v1","notification-api","campaigns","{{campaign_id}}",""],"host":["{{host_middleware}}"],"query":[],"variable":[]}},"response":[{"id":"b58644ba-dd4c-4da5-9ae4-cca440e77e4a","name":"Successful Response","originalRequest":{"method":"GET","header":[],"url":"{{host_middleware}}/api-middleware/v1/notification-api/campaigns/95b4f449-af3f-4de2-a4fb-6a4620fba9d3/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 24 Sep 2024 18:52:49 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"496"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"7e1fee6d-fcd2-41d9-9817-f6b2ea86ae74"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"x-amz-apigw-id","value":"en6UNEh2IAMEeyg="},{"key":"X-Amzn-Trace-Id","value":"Root=1-66f30a81-7078496d2a41d3735a9801a3;Parent=016d1360d88a27bb;Sampled=0;Lineage=1:4850f440:0"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"95b4f449-af3f-4de2-a4fb-6a4620fba9d3\",\n    \"created_at\": \"2024-07-24T17:12:59.447723Z\",\n    \"updated_at\": \"2024-07-24T17:12:59.473913Z\",\n    \"name\": \"weekly_report_short_2024-06-03_2024-06-09_demo\",\n    \"description\": \"Reporte semanal del 2024-06-03 a 2024-06-09\",\n    \"notification_type\": \"d77af6e6-f577-46e4-bf62-ff57e98a328e\",\n    \"notification_schedule_date\": \"2024-07-24\",\n    \"notification_built_date\": \"2024-07-24\",\n    \"metadata\": {\n        \"channel_type_id\": [\n            \"ce9fc3bf-e384-4a4b-8780-b08a58f40a09\"\n        ]\n    },\n    \"active\": false,\n    \"internal_only\": false\n}"}],"_postman_id":"e9d1fb7a-df84-482c-8f1f-a5df0a046d6a"},{"name":"Listar tipos de canales","id":"1d8f0e65-c705-486c-a038-bb714f3dd73d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{host_middleware}}/api-middleware/v1/notification-api/channel-type/","description":"<p>Este endpoint permite obtener información sobre los tipos de canales de notificación disponibles en el sistema, con opciones de paginación.</p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><p><strong>Método:</strong> GET</p>\n</li>\n<li><p><strong>URL:</strong> <code>{{host_middleware}}/api-middleware/v1/notification-api/channel-type/</code></p>\n</li>\n<li><p><strong>Parámetros de query:</strong></p>\n<ul>\n<li><p><code>paginate</code>(booleano): Indica si se debe paginar la respuesta.</p>\n</li>\n<li><p><code>page_size</code>(entero): Número de resultados por página.</p>\n</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<p>Este request de tipo <code>GET</code> no requiere cuerpo. El cuerpo de la solicitud debe enviarse vacío.</p>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><code>next</code>(string): URL para la siguiente página de resultados (Opcional).</p>\n</li>\n<li><p><code>previous</code>(string): URL para la página anterior de resultados (Opcional).</p>\n</li>\n<li><p><code>total_pages</code>(entero): Número total de páginas disponibles.</p>\n</li>\n<li><p><code>current_page</code>(entero): Número de la página actual.</p>\n</li>\n<li><p><code>offset</code>(entero): Desplazamiento de los resultados.</p>\n</li>\n<li><p><code>results</code>(array of object): Lista de resultados que contiene información sobre los tipos de canales.</p>\n<ul>\n<li><p><code>id</code>(string): Identificador único del canal.</p>\n</li>\n<li><p><code>created_at</code>(string): Fecha de creación del canal.</p>\n</li>\n<li><p><code>updated_at</code>(string): Fecha de última actualización del canal.</p>\n</li>\n<li><p><code>name</code>(string): Nombre del canal.</p>\n</li>\n<li><p><code>description</code>(string): Descripción del canal.</p>\n</li>\n<li><p><code>metadata</code>(object): Metadatos adicionales del canal (Opcional).</p>\n</li>\n<li><p><code>internal_only</code>(booleano): Indica si el canal es solo para uso interno.</p>\n</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"response-format\">Response Format:</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"next\": {\n      \"type\": [\"string\", \"null\"],\n      \"format\": \"uri\"\n    },\n    \"previous\": {\n      \"type\": [\"string\", \"null\"],\n      \"format\": \"uri\"\n    },\n    \"total_pages\": {\n      \"type\": \"integer\",\n      \"minimum\": 1\n    },\n    \"current_page\": {\n      \"type\": \"integer\",\n      \"minimum\": 1\n    },\n    \"offset\": {\n      \"type\": \"integer\",\n      \"minimum\": 0\n    },\n    \"count\": {\n      \"type\": \"integer\",\n      \"minimum\": 0\n    },\n    \"results\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"id\": {\n            \"type\": \"string\",\n            \"format\": \"uuid\"\n          },\n          \"created_at\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          },\n          \"updated_at\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"description\": {\n            \"type\": \"string\"\n          },\n          \"metadata\": {\n            \"type\": \"object\"\n          },\n          \"internal_only\": {\n            \"type\": \"boolean\"\n          }\n        }\n      }\n    }\n  }\n}\n\n</code></pre>\n","urlObject":{"path":["api-middleware","v1","notification-api","channel-type",""],"host":["{{host_middleware}}"],"query":[{"disabled":true,"key":"paginate","value":"true"},{"disabled":true,"key":"page_size","value":"1"}],"variable":[]}},"response":[{"id":"b9ac318e-f457-4f8d-bce3-f8ecc3aac859","name":"Successful Response","originalRequest":{"method":"GET","header":[],"url":"{{host_middleware}}/api-middleware/v1/notification-api/channel-type/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 24 Sep 2024 18:56:05 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"206"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"3ba9f1b6-2d94-465a-abc3-3a083a04a94d"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"x-amz-apigw-id","value":"en6y2GejIAMEhhQ="},{"key":"X-Amzn-Trace-Id","value":"Root=1-66f30b45-6d26acac1aa9681c5015e6b0;Parent=1afd39ab167ee6a2;Sampled=0;Lineage=1:4850f440:0"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"id\": \"ce9fc3bf-e384-4a4b-8780-b08a58f40a09\",\n        \"created_at\": \"2024-04-01T18:57:07.892006Z\",\n        \"updated_at\": \"2024-04-01T18:57:07.892006Z\",\n        \"name\": \"JSON\",\n        \"description\": \"JSON\",\n        \"metadata\": null,\n        \"internal_only\": false\n    }\n]"},{"id":"6d4dce5f-b129-4c30-bad0-4ad2f4e8c44f","name":"Successful Response - Paginated","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{host_middleware}}/api-middleware/v1/notification-api/channel-type/?paginate=true&page_size=1","host":["{{host_middleware}}"],"path":["api-middleware","v1","notification-api","channel-type",""],"query":[{"key":"paginate","value":"true"},{"key":"page_size","value":"1"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 24 Sep 2024 18:56:43 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"300"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"6c767eb1-cbbd-40df-8883-3f77dd2a683b"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"x-amz-apigw-id","value":"en64wG1JoAMENPw="},{"key":"X-Amzn-Trace-Id","value":"Root=1-66f30b6a-13a28ce12fdf74eb51fd1342;Parent=2ce73d3b7258add0;Sampled=0;Lineage=1:4850f440:0"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"next\": null,\n    \"previous\": null,\n    \"total_pages\": 1,\n    \"current_page\": 1,\n    \"offset\": 0,\n    \"results\": [\n        {\n            \"id\": \"ce9fc3bf-e384-4a4b-8780-b08a58f40a09\",\n            \"created_at\": \"2024-04-01T18:57:07.892006Z\",\n            \"updated_at\": \"2024-04-01T18:57:07.892006Z\",\n            \"name\": \"JSON\",\n            \"description\": \"JSON\",\n            \"metadata\": null,\n            \"internal_only\": false\n        }\n    ],\n    \"count\": 1\n}"}],"_postman_id":"1d8f0e65-c705-486c-a038-bb714f3dd73d"},{"name":"Obtener tipo de canal","id":"34a7719a-d21c-403e-8fef-93ab736e87d6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{host_middleware}}/api-middleware/v1/notification-api/channel-type/{{channel_type_id}}/","description":"<p>Este endpoint permite obtener información sobre un tipo de canal de notificación específico en el sistema.</p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><p><strong>Método:</strong> GET</p>\n</li>\n<li><p><strong>URL:</strong> <code>/api-middleware/v1/notification-api/channel-type/{{channel_type_id}}/</code></p>\n</li>\n<li><p><strong>Parámetros de ruta:</strong></p>\n<ul>\n<li><code>channel_type_id</code> (string): ID del tipo de canal (obligatorio).</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<p>Este request de tipo <code>GET</code> no requiere cuerpo. El cuerpo de la solicitud debe enviarse vacío.</p>\n<h4 id=\"response\">Response</h4>\n<p>La respuesta de este endpoint incluye los siguientes campos:</p>\n<ul>\n<li><p><code>id</code> (string): ID del tipo de canal.</p>\n</li>\n<li><p><code>created_at</code> (string): Fecha y hora de creación del tipo de canal.</p>\n</li>\n<li><p><code>updated_at</code> (string): Fecha y hora de la última actualización del tipo de canal.</p>\n</li>\n<li><p><code>name</code> (string): Nombre del tipo de canal.</p>\n</li>\n<li><p><code>description</code> (string): Descripción del tipo de canal.</p>\n</li>\n<li><p><code>metadata</code> (object): Metadatos asociados al tipo de canal.</p>\n</li>\n<li><p><code>internal_only</code> (boolean): Indica si el canal es solo para uso interno.</p>\n</li>\n</ul>\n<h4 id=\"formato-de-respuesta\">Formato de Respuesta</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"id\": {\n      \"type\": \"string\",\n      \"format\": \"uuid\"\n    },\n    \"created_at\": {\n      \"type\": \"string\",\n      \"format\": \"date-time\"\n    },\n    \"updated_at\": {\n      \"type\": \"string\",\n      \"format\": \"date-time\"\n    },\n    \"name\": {\n      \"type\": \"string\"\n    },\n    \"description\": {\n      \"type\": \"string\"\n    },\n    \"metadata\": {\n      \"type\": [\"object\", \"null\"]\n    },\n    \"internal_only\": {\n      \"type\": \"boolean\"\n    }\n  }\n}\n\n</code></pre>\n","urlObject":{"path":["api-middleware","v1","notification-api","channel-type","{{channel_type_id}}",""],"host":["{{host_middleware}}"],"query":[],"variable":[]}},"response":[{"id":"a9ad3e94-b9f2-4ca6-b56a-66742453e305","name":"Successful Response","originalRequest":{"method":"GET","header":[],"url":"{{host_middleware}}/api-middleware/v1/notification-api/channel-type/ce9fc3bf-e384-4a4b-8780-b08a58f40a09/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 24 Sep 2024 18:57:38 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"204"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"31842260-8bce-461f-a926-dd133f09f961"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"x-amz-apigw-id","value":"en7BdFEUoAMErkw="},{"key":"X-Amzn-Trace-Id","value":"Root=1-66f30ba2-02f2dc6638fe381c064e4b27;Parent=266cf7226e81dc9d;Sampled=0;Lineage=1:4850f440:0"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"ce9fc3bf-e384-4a4b-8780-b08a58f40a09\",\n    \"created_at\": \"2024-04-01T18:57:07.892006Z\",\n    \"updated_at\": \"2024-04-01T18:57:07.892006Z\",\n    \"name\": \"JSON\",\n    \"description\": \"JSON\",\n    \"metadata\": null,\n    \"internal_only\": false\n}"}],"_postman_id":"34a7719a-d21c-403e-8fef-93ab736e87d6"},{"name":"Listar tipos de notificaciones","id":"1f1afaed-b831-44a7-9d59-ae807e4cfe46","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{host_middleware}}/api-middleware/v1/notification-api/notification-type/","description":"<p>Este endpoint permite recuperar los tipos de notificación disponibles en el sistema, con la opción de paginación para limitar la cantidad de resultados devueltos.</p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><p><strong>Método:</strong> GET</p>\n</li>\n<li><p><strong>URL:</strong> <code>{{host_middleware}}/api-middleware/v1/notification-api/notification-type/</code></p>\n</li>\n<li><p><strong>Parámetros de query:</strong></p>\n<ul>\n<li><p><code>paginate</code>(booleano): Indica si se debe paginar la respuesta.</p>\n</li>\n<li><p><code>page_size</code>(entero): Número de resultados por página.</p>\n</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<p>Este request de tipo <code>GET</code> no requiere cuerpo. El cuerpo de la solicitud debe enviarse vacío.</p>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><code>next</code>(string): URL para la siguiente página de resultados, si existe.</p>\n</li>\n<li><p><code>previous</code>(string): URL para la página anterior de resultados, si existe.</p>\n</li>\n<li><p><code>total_pages</code>(integer): Total de páginas disponibles.</p>\n</li>\n<li><p><code>current_page</code>(integer): Número de la página actual.</p>\n</li>\n<li><p><code>offset</code>(integer): Desplazamiento de los resultados.</p>\n</li>\n<li><p><code>results</code>(array of object): Lista de tipos de notificación.</p>\n<ul>\n<li><p><code>id</code>(string): Identificador único del tipo de notificación.</p>\n</li>\n<li><p><code>created_at</code>(string): Fecha de creación del tipo de notificación.</p>\n</li>\n<li><p><code>updated_at</code>(string): Fecha de última actualización del tipo de notificación.</p>\n</li>\n<li><p><code>name</code>(string): Nombre del tipo de notificación.</p>\n</li>\n<li><p><code>description</code>(string): Descripción del tipo de notificación.</p>\n</li>\n<li><p><code>notification_category</code>(string): Categoría de la notificación.</p>\n</li>\n<li><p><code>metadata</code>(object): Metadatos asociados al tipo de notificación.</p>\n<ul>\n<li><p><code>channels</code>(array of string): Canales a través de los cuales se puede enviar la notificación.</p>\n</li>\n<li><p><code>priority_level</code>(integer): Nivel de prioridad de la notificación.</p>\n</li>\n<li><p><code>expiration_days</code>(integer): Días de validez de la notificación.</p>\n</li>\n</ul>\n</li>\n<li><p><code>active</code>(bool): Indica si el tipo de notificación está activo.</p>\n</li>\n<li><p><code>internal_only</code>(bool): Indica si el tipo de notificación es solo para uso interno.</p>\n</li>\n</ul>\n</li>\n<li><p><code>count</code>(integer): Número total de tipos de notificación disponibles.</p>\n</li>\n</ul>\n<h4 id=\"response-format\">Response Format</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"id\": {\n      \"type\": \"string\",\n      \"format\": \"uuid\"\n    },\n    \"created_at\": {\n      \"type\": \"string\",\n      \"format\": \"date-time\"\n    },\n    \"updated_at\": {\n      \"type\": \"string\",\n      \"format\": \"date-time\"\n    },\n    \"name\": {\n      \"type\": \"string\"\n    },\n    \"description\": {\n      \"type\": \"string\"\n    },\n    \"notification_category\": {\n      \"type\": \"string\",\n      \"format\": \"uuid\"\n    },\n    \"metadata\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"channels\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"priority_level\": {\n          \"type\": \"integer\"\n        },\n        \"expiration_days\": {\n          \"type\": \"integer\"\n        }\n      }\n    },\n    \"active\": {\n      \"type\": \"boolean\"\n    },\n    \"internal_only\": {\n      \"type\": \"boolean\"\n    }\n  }\n}\n\n</code></pre>\n","urlObject":{"path":["api-middleware","v1","notification-api","notification-type",""],"host":["{{host_middleware}}"],"query":[{"disabled":true,"key":"paginate","value":"true"},{"disabled":true,"key":"page_size","value":"1"}],"variable":[]}},"response":[{"id":"f0cb17ee-3129-4d42-91a9-ea5be601fd11","name":"Successful Response - Paginated","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{host_middleware}}/api-middleware/v1/notification-api/notification-type/?paginate=true&page_size=1","host":["{{host_middleware}}"],"path":["api-middleware","v1","notification-api","notification-type",""],"query":[{"key":"paginate","value":"true"},{"key":"page_size","value":"1"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 13 Jun 2025 21:07:54 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"617"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"7e5fc0f4-7a40-49ea-b507-6b1d97ba6aa3"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"x-amz-apigw-id","value":"MHvunH_HIAMELEA="},{"key":"X-Amzn-Trace-Id","value":"Root=1-684c9329-2d75905e780d044234210708;Parent=2f3cd35d29015ced;Sampled=0;Lineage=1:4850f440:0"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"next\": \"/api-middleware/v1/notification-api/notification-type/?internal_only=false&page=2&page_size=1&paginate=true\",\n    \"previous\": null,\n    \"total_pages\": 9,\n    \"current_page\": 1,\n    \"offset\": 0,\n    \"results\": [\n        {\n            \"id\": \"8535b71b-595e-4be6-9e96-ffcb93fabc94\",\n            \"created_at\": \"2025-03-27T10:37:38.529000Z\",\n            \"updated_at\": \"2025-03-27T10:37:38.529000Z\",\n            \"name\": \"monthly_report_pfm\",\n            \"description\": \"Notificacion reporte mensual de PFM por usuario\",\n            \"notification_category\": \"f8a0ff35-fa0a-4ae1-b1f5-1844d9e2b648\",\n            \"metadata\": {\n                \"channels\": [\n                    \"FRONTEND\",\n                    \"BANK_MIDDLEWARE\"\n                ],\n                \"priority_level\": 5,\n                \"expiration_days\": 3\n            },\n            \"active\": true,\n            \"internal_only\": false\n        }\n    ],\n    \"count\": 9\n}"},{"id":"86389d51-6ce3-448f-9811-47bedd4e0f46","name":"Successful Response","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{host_middleware}}/api-middleware/v1/notification-api/notification-type/","host":["{{host_middleware}}"],"path":["api-middleware","v1","notification-api","notification-type",""],"query":[{"key":"paginate","value":"true","disabled":true},{"key":"page_size","value":"1","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 13 Jun 2025 21:08:38 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"3261"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"97ff1f49-dd18-4005-bff6-c0f00799a090"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"x-amz-apigw-id","value":"MHv1oEo1oAMEraQ="},{"key":"X-Amzn-Trace-Id","value":"Root=1-684c9356-074130c3195d00673375bfe5;Parent=4a7f80f6a3c72e13;Sampled=0;Lineage=1:4850f440:0"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"id\": \"8535b71b-595e-4be6-9e96-ffcb93fabc94\",\n        \"created_at\": \"2025-03-27T10:37:38.529000Z\",\n        \"updated_at\": \"2025-03-27T10:37:38.529000Z\",\n        \"name\": \"monthly_report_pfm\",\n        \"description\": \"Notificacion reporte mensual de PFM por usuario\",\n        \"notification_category\": \"f8a0ff35-fa0a-4ae1-b1f5-1844d9e2b648\",\n        \"metadata\": {\n            \"channels\": [\n                \"FRONTEND\",\n                \"BANK_MIDDLEWARE\"\n            ],\n            \"priority_level\": 5,\n            \"expiration_days\": 3\n        },\n        \"active\": true,\n        \"internal_only\": false\n    },\n    {\n        \"id\": \"4a475020-d6f2-4e22-b74f-97434f94c96c\",\n        \"created_at\": \"2025-03-14T17:08:26.911000Z\",\n        \"updated_at\": \"2025-03-14T17:08:26.911000Z\",\n        \"name\": \"weekly_report_pfm\",\n        \"description\": \"Notificacion reporte semanal de PFM por usuario\",\n        \"notification_category\": \"f8a0ff35-fa0a-4ae1-b1f5-1844d9e2b648\",\n        \"metadata\": {\n            \"channels\": [\n                \"FRONTEND\",\n                \"BANK_MIDDLEWARE\"\n            ],\n            \"priority_level\": 5,\n            \"expiration_days\": 3\n        },\n        \"active\": true,\n        \"internal_only\": false\n    },\n    {\n        \"id\": \"9b910180-5c94-4d33-861b-eea191d1068b\",\n        \"created_at\": \"2025-03-14T17:08:26.911000Z\",\n        \"updated_at\": \"2025-03-14T17:08:26.911000Z\",\n        \"name\": \"weekly_report\",\n        \"description\": \"Notificacion reporte semanal de ahorro por usuario\",\n        \"notification_category\": \"f8a0ff35-fa0a-4ae1-b1f5-1844d9e2b648\",\n        \"metadata\": {\n            \"channels\": [\n                \"FRONTEND\",\n                \"BANK_MIDDLEWARE\"\n            ],\n            \"priority_level\": 5,\n            \"expiration_days\": 3\n        },\n        \"active\": true,\n        \"internal_only\": false\n    },\n    {\n        \"id\": \"be82ee19-fb76-4b5f-aeff-df5a80a80037\",\n        \"created_at\": \"2025-01-28T20:16:02.209000Z\",\n        \"updated_at\": \"2025-01-28T20:16:02.209000Z\",\n        \"name\": \"Primer abono\",\n        \"description\": \"Primer abono\",\n        \"notification_category\": \"740c3556-2b08-4283-a170-e153d2f065a5\",\n        \"metadata\": {\n            \"priority_level\": \"2\",\n            \"expiration_days\": \"5\"\n        },\n        \"active\": true,\n        \"internal_only\": false\n    },\n    {\n        \"id\": \"e1642c13-48a2-4b35-9f3a-a2fbd1f15c61\",\n        \"created_at\": \"2025-01-20T16:41:00.543000Z\",\n        \"updated_at\": \"2025-01-20T16:41:00.543000Z\",\n        \"name\": \"Crear Meta\",\n        \"description\": \"Crear meta\",\n        \"notification_category\": \"ecb59bc4-8966-4319-bf13-4cf850ec617e\",\n        \"metadata\": {\n            \"priority_level\": \"2\",\n            \"expiration_days\": \"7\"\n        },\n        \"active\": true,\n        \"internal_only\": false\n    },\n    {\n        \"id\": \"3f30133a-cf02-4bab-838a-aceec609115b\",\n        \"created_at\": \"2025-01-16T17:40:01.807000Z\",\n        \"updated_at\": \"2025-01-16T17:40:01.807000Z\",\n        \"name\": \"Activation\",\n        \"description\": \"Activar\",\n        \"notification_category\": \"740c3556-2b08-4283-a170-e153d2f065a5\",\n        \"metadata\": {\n            \"priority_level\": \"1\",\n            \"expiration_days\": \"6\"\n        },\n        \"active\": true,\n        \"internal_only\": false\n    },\n    {\n        \"id\": \"bbedff8a-cb9e-4609-894e-f681f8eff0fc\",\n        \"created_at\": \"2025-01-10T18:21:26.137000Z\",\n        \"updated_at\": \"2025-01-10T18:21:26.137000Z\",\n        \"name\": \"no_manual_saving\",\n        \"description\": \"meta sin ahorro manual\",\n        \"notification_category\": \"d5e97c84-3769-4b32-9faa-1e115e6c8c63\",\n        \"metadata\": {},\n        \"active\": false,\n        \"internal_only\": false\n    },\n    {\n        \"id\": \"786641e8-069a-43fc-973d-e4ede7c28be5\",\n        \"created_at\": \"2025-01-09T15:25:57.681000Z\",\n        \"updated_at\": \"2025-01-09T15:25:57.681000Z\",\n        \"name\": \"no_projects_notification\",\n        \"description\": \"usuarios sin meta\",\n        \"notification_category\": \"d5e97c84-3769-4b32-9faa-1e115e6c8c63\",\n        \"metadata\": {},\n        \"active\": true,\n        \"internal_only\": false\n    },\n    {\n        \"id\": \"d77af6e6-f577-46e4-bf62-ff57e98a328e\",\n        \"created_at\": \"2024-04-02T17:08:26.911000Z\",\n        \"updated_at\": \"2024-04-02T17:08:26.911000Z\",\n        \"name\": \"weekly_report_short\",\n        \"description\": \"Notificacion reporte semanal corto de ahorro por usuario\",\n        \"notification_category\": \"f8a0ff35-fa0a-4ae1-b1f5-1844d9e2b648\",\n        \"metadata\": {\n            \"priority_level\": 5,\n            \"expiration_days\": 3\n        },\n        \"active\": true,\n        \"internal_only\": false\n    }\n]"}],"_postman_id":"1f1afaed-b831-44a7-9d59-ae807e4cfe46"},{"name":"Obtener tipo de notificacion","id":"bae9edba-2797-44c4-90f0-45d401bae27b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{host_middleware}}/api-middleware/v1/notification-api/notification-type/{{notification_type_id}}/","description":"<p>Este endpoint permite obtener información sobre un tipo de notificación específico utilizando su ID. Devuelve detalles como el nombre, la descripción, la categoría de notificación y metadatos asociados.</p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><p><strong>Método</strong>: GET</p>\n</li>\n<li><p><strong>URL</strong>: <code>{{host_middleware}}/api-middleware/v1/notification-api/notification-type/{{notification_type_id}}/</code></p>\n</li>\n<li><p><strong>Parámetros de ruta</strong>:</p>\n<ul>\n<li><code>notification_type_id</code>(string): ID del tipo de notificación que se desea consultar.</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<p>Este request de tipo <code>GET</code> no requiere cuerpo. El cuerpo de la solicitud debe enviarse vacío.</p>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><code>id</code>(string): Identificador único del tipo de notificación.</p>\n</li>\n<li><p><code>created_at</code>(string): Fecha y hora de creación del tipo de notificación.</p>\n</li>\n<li><p><code>updated_at</code>(string): Fecha y hora de la última actualización del tipo de notificación.</p>\n</li>\n<li><p><code>name</code>(string): Nombre del tipo de notificación.</p>\n</li>\n<li><p><code>description</code>(string): Descripción del tipo de notificación.</p>\n</li>\n<li><p><code>notification_category</code>(string): Categoría a la que pertenece el tipo de notificación.</p>\n</li>\n<li><p><code>metadata</code>(object): Metadatos asociados al tipo de notificación.</p>\n<ul>\n<li><p><code>priority_level</code>(integer): Nivel de prioridad de la notificación.</p>\n</li>\n<li><p><code>expiration_days</code>(integer): Días hasta la expiración de la notificación.</p>\n</li>\n</ul>\n</li>\n<li><p><code>active</code>(boolean): Indica si el tipo de notificación está activo.</p>\n</li>\n<li><p><code>internal_only</code>(boolean): Indica si la notificación es solo para uso interno.</p>\n</li>\n</ul>\n<h4 id=\"response-format\">Response Format</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"object\",\n  \"properties\": {\n    \"id\": {\n      \"type\": \"string\",\n      \"format\": \"uuid\"\n    },\n    \"created_at\": {\n      \"type\": \"string\",\n      \"format\": \"date-time\"\n    },\n    \"updated_at\": {\n      \"type\": \"string\",\n      \"format\": \"date-time\"\n    },\n    \"name\": {\n      \"type\": \"string\"\n    },\n    \"description\": {\n      \"type\": \"string\"\n    },\n    \"notification_category\": {\n      \"type\": \"string\",\n      \"format\": \"uuid\"\n    },\n    \"metadata\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"priority_level\": {\n          \"type\": \"integer\"\n        },\n        \"expiration_days\": {\n          \"type\": \"integer\"\n        }\n      }\n    },\n    \"active\": {\n      \"type\": \"boolean\"\n    },\n    \"internal_only\": {\n      \"type\": \"boolean\"\n    }\n  }\n}\n\n</code></pre>\n","urlObject":{"path":["api-middleware","v1","notification-api","notification-type","{{notification_type_id}}",""],"host":["{{host_middleware}}"],"query":[],"variable":[]}},"response":[{"id":"d55e95fe-4112-4947-8796-0d8dab679355","name":"Successful Response","originalRequest":{"method":"GET","header":[],"url":"{{host_middleware}}/api-middleware/v1/notification-api/notification-type/d77af6e6-f577-46e4-bf62-ff57e98a328e/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 24 Sep 2024 18:59:04 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"384"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"4cc17446-a8c8-4e7d-b7ce-174d5c606024"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"x-amz-apigw-id","value":"en7O3EvqoAMEOtQ="},{"key":"X-Amzn-Trace-Id","value":"Root=1-66f30bf8-7cea944b6329a7af776eb8bc;Parent=344e85daec108a77;Sampled=0;Lineage=1:4850f440:0"},{"key":"Access-Control-Allow-Credentials","value":"true"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"d77af6e6-f577-46e4-bf62-ff57e98a328e\",\n    \"created_at\": \"2024-04-02T17:08:26.911000Z\",\n    \"updated_at\": \"2024-04-02T17:08:26.911000Z\",\n    \"name\": \"weekly_report_short\",\n    \"description\": \"Notificacion reporte semanal corto de ahorro por usuario\",\n    \"notification_category\": \"f8a0ff35-fa0a-4ae1-b1f5-1844d9e2b648\",\n    \"metadata\": {\n        \"priority_level\": 5,\n        \"expiration_days\": 3\n    },\n    \"active\": true,\n    \"internal_only\": false\n}"}],"_postman_id":"bae9edba-2797-44c4-90f0-45d401bae27b"}],"id":"cf511188-4eaa-48ce-a111-a6097eb29e01","_postman_id":"cf511188-4eaa-48ce-a111-a6097eb29e01","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":true,"source":{"_postman_id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","name":"API Xerpa Middleware","type":"collection"}}},{"name":"PFM - (proxy a API PFM)","item":[],"id":"49fc3c5d-6790-43e6-a90b-b37e215a00a7","_postman_id":"49fc3c5d-6790-43e6-a90b-b37e215a00a7","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]},"isInherited":true,"source":{"_postman_id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","id":"4e622036-5dc7-4ba2-8e66-c5f3ec1321df","name":"API Xerpa Middleware","type":"collection"}}}],"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token_middleware}}"}]}},"event":[{"listen":"prerequest","script":{"id":"a10160fc-7422-4146-a92a-7ef57c4525e1","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"abab73ba-aa3f-46d4-90bf-5cbd46f408bf","type":"text/javascript","exec":[""]}}],"variable":[{"key":"baseUrl","value":"https://farming-simulator.pstmn.io"}]}