Cómo la aplicación del PSBI lee los datos del titular en la institución transmisora, una vez que el consentimiento está vigente.
Terminada la jornada de consentimiento usted tiene un grantId. Ahí empieza el trabajo caro: hablar el perfil de seguridad del SFA con cada institución, cada una con su propia URL, su propio registro de cliente y su propio token.
Esta API existe para que no lo haga. Su aplicación envía JSON y recibe JSON; la plataforma se encarga del protocolo en su nombre.
| La plataforma hace | Su aplicación no necesita |
|---|---|
| Resuelve la URL de la contraparte en la réplica local del Directorio | mantener un catálogo de endpoints por institución |
| Custodia el token del grant y lo renueva cuando expira | implementar refresh_token ni conocer el token endpoint |
| Abre el canal mTLS con el certificado del participante | gestionar material criptográfico |
Presenta el token ligado al certificado (cnf, RFC 8705) | saber que el token es sender-constrained |
Emite el x-fapi-interaction-id obligatorio y lo devuelve | conocer el perfil FAPI 2.0 |
grantId y lo guarda.
grantId y pide la familia, el endpoint y la versión que necesita.
La Jornada PSBI obtiene y administra el consentimiento; ésta lo usa. Si todavía no abrió una jornada, empiece por allá: sin grantId vigente no hay dato que leer.
Una sola operación cubre los endpoints sin identificador de camino:
| Ruta | |
|---|---|
| GET | /v1/api-requests |
| GET | /v1/api-requests/params/{resourceIds} |
Tres parámetros dicen qué se pide, y son obligatorios:
| Parámetro | Qué es | Cómo se compara |
|---|---|---|
apiFamilyType | La familia, tal como la institución la publicó en el Directorio | Literal, insensible a mayúsculas |
endpoint | El sufijo del endpoint dentro de la familia | Por sufijo contra la URL publicada |
version | La versión de la API | Por prefijo; gana la más nueva que case |
El campo ApiFamilyType del Directorio es texto libre: la misma familia aparece como Cuentas, cuentas, Accounts y accounts según quién la publicó. Los ejemplos de abajo usan la grafía más común, pero el valor correcto es el que esa institución publicó. Consúltelo en el Directorio antes de fijarlo en su código.
Primero el inventario de lo que el titular tiene, después el saldo de cada cuenta.
GET /v1/api-requests?apiFamilyType=resources&endpoint=/resources&version=1.0GET /v1/api-requests?apiFamilyType=accounts&endpoint=/accounts&version=1.0GET /v1/api-requests/params/ACC-001?apiFamilyType=accounts&endpoint=/accounts/{accountID}/balance&version=1.0El identificador va en el camino y se expande posicionalmente en el marcador {accountID} que la institución declaró. No lo concatene usted a la URL.
Los movimientos de un período, paginados.
GET /v1/api-requests/params/ACC-001
?apiFamilyType=accounts
&endpoint=/accounts/{accountID}/transactions
&version=1.0
&fromDate=2026-01-01
&toDate=2026-03-31
&page=1
&pageSize=200
grant-id: 7f3c9e2a-...
Authorization: Bearer <token del Gateway>
Para la tarjeta de crédito, la misma llamada cambiando la familia y el marcador:
GET /v1/api-requests/params/CARD-77
?apiFamilyType=credit-card-accounts
&endpoint=/accounts/{creditCardAccountID}/transactions
&version=1.0
&fromDate=2026-01-01&toDate=2026-03-31
Deuda vigente y cupo comprometido, que es lo que cambia la decisión.
| Qué necesita | Familia | Endpoint |
|---|---|---|
| Créditos vigentes | loans | /loans y /loans/{loanID}/balance |
| Cupo y deuda de tarjeta | credit-card-accounts | /accounts/{creditCardAccountID}/limit |
| Ahorro e inversión | investments | /investments y /investments/{investmentID}/balance |
| Seguros contratados | insurances | /insurances |
Para el PSBI que opera sobre un comercio adquirido.
GET /v1/api-requests?apiFamilyType=payment-reports&endpoint=/payment-reports&version=1.0&fromDate=2026-03-01&toDate=2026-03-31
Son cinco, y son los que los contratos del SFA definen. No hay más.
| Parámetro | Tipo | Por omisión | Nota |
|---|---|---|---|
page | entero | 1 | La primera página es 1 |
pageSize | entero | 25 | camelCase, no page-size. Máximo 1000 |
fromDate | fecha | — | ISO-8601, UTC |
toDate | fecha | — | ISO-8601, UTC |
brand | texto | — | Cuando la institución opera más de una marca |
Cuatro límites que conviene conocer antes de diseñar encima.
data/links/meta y el significado de cada campo los define la norma, no esta API.401, 404 o 429 emitido por la contraparte llega a usted con su cuerpo y su formato de error, que es el de la API regulada y no el de ésta.| Código | HTTP | Qué pasó |
|---|---|---|
CORE-006 | 412 | Falta el encabezado grant-id |
API-REQ-002 | 422 | apiFamilyType ausente o en blanco |
API-REQ-001 | 422 | Esa familia, versión y sufijo no están en la réplica del Directorio para esa institución |
TKN-MGR-001 | 422 | No hay token guardado para ese grantId: revise si el consentimiento sigue vigente |
Es {"errors":[{"code","title","detail"}]}. No es la envoltura de los Principios de Diseño que devuelve la Jornada PSBI. Los Principios de Diseño rigen las APIs reguladas, y ésta no lo es, pero son dos contratos de plataforma hablando distinto: la alineación está pendiente. Si su integración maneja los dos, necesita dos lecturas de error. Ramifique siempre por code, nunca por el texto de detail.