Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 68 additions & 22 deletions openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -2531,7 +2531,7 @@
],
"get": {
"summary": "List account balances",
"description": "Returns the latest balances for the accounts granted by the consent. For one-off consents balances are reported as of authorization time; for recurring consents they reflect the retrieval time.",
"description": "Returns the latest balances for the accounts granted by the consent. Each item contains fixed metadata plus dynamic numeric fields keyed by normalized bank balance type. For one-off consents balances are reported as of authorization time; for recurring consents they reflect the retrieval time.",
"operationId": "listAisConsentBalances",
"tags": [
"AIS"
Expand Down Expand Up @@ -2592,7 +2592,7 @@
"name": "accountId",
"in": "query",
"required": false,
"description": "Filter by account identifier when the consent covers multiple accounts.",
"description": "Legacy account filter. Pass the IBAN of the account to scope the transaction list.",
"schema": {
"type": "string"
}
Expand Down Expand Up @@ -4210,10 +4210,6 @@
"AisAccount": {
"type": "object",
"properties": {
"accountId": {
"type": "string",
"description": "Identifier of the account as provided by the ASPSP."
},
"iban": {
"type": "string",
"description": "IBAN when available."
Expand All @@ -4226,10 +4222,46 @@
"type": "string",
"description": "ISO 4217 currency code.",
"example": "EUR"
},
"closingBooked": {
"type": "number",
"format": "double"
},
"interimBooked": {
"type": "number",
"format": "double"
},
"openingBooked": {
"type": "number",
"format": "double"
},
"interimAvailable": {
"type": "number",
"format": "double"
},
"forwardAvailable": {
"type": "number",
"format": "double"
},
"creditLimit": {
"type": "number",
"format": "double"
},
"expected": {
"type": "number",
"format": "double"
},
"available": {
"type": "number",
"format": "double"
},
"booked": {
"type": "number",
"format": "double"
}
},
"required": [
"accountId",
"iban",
"currency"
]
Comment on lines 4263 to 4266
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Require a stable identifier in AisAccount

The updated AisAccount schema now requires only currency, while iban remains explicitly optional ("IBAN when available."). This allows account records with no stable identifier at all, which makes downstream account selection and correlation impossible whenever a provider does not return IBANs. Please require at least one identifier (iban or a fallback such as the previous accountId) so clients can always reference a specific account.

Useful? React with 👍 / 👎.

},
Expand Down Expand Up @@ -4261,35 +4293,49 @@
},
"AisBalance": {
"type": "object",
"description": "AIS balance payload. Fixed metadata fields are always present; numeric balance fields depend on what the bank exposes and may vary by provider.",
"properties": {
"accountId": {
"iban": {
"type": "string"
},
"asOf": {
"date": {
"type": "string",
"format": "date-time"
},
"current": {
"currency": {
"type": "string",
"description": "ISO 4217 currency code.",
"example": "EUR"
},
"closingBooked": {
"type": "number",
"format": "double"
},
"available": {
"interimAvailable": {
"type": "number",
"format": "double"
},
"creditLimit": {
"expected": {
"type": "number",
"format": "double"
},
"currency": {
"type": "string",
"description": "ISO 4217 currency code.",
"example": "EUR"
}
},
"additionalProperties": {
"type": "number",
"format": "double",
"description": "Balance amount keyed by normalized bank balance type (for example closingBooked or interimAvailable)."
},
"example": {
"iban": "IT60X0542811101000000123456",
"date": "2026-03-12T14:15:22Z",
"currency": "EUR",
"closingBooked": 5174.72,
"interimAvailable": 5200,
"expected": -262.01
},
"required": [
"accountId",
"asOf",
"iban",
"date",
"currency"
]
Comment on lines 4336 to 4340
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Require account identifier on AisBalance rows

AisBalance.required now includes only date and currency, and iban is optional, so balance entries can be emitted without any account key. In multi-account consents (or providers that omit IBAN), consumers cannot map a returned balance to an account, which breaks per-account balance views and reconciliation. Keep an always-present identifier (iban or legacy accountId) in the required set.

Useful? React with 👍 / 👎.

},
Expand Down Expand Up @@ -4353,7 +4399,7 @@
"type": "string",
"description": "Stable identifier of the transaction."
},
"accountId": {
"iban": {
"type": "string"
},
"bookingDate": {
Expand Down Expand Up @@ -4384,7 +4430,7 @@
},
"required": [
"transactionId",
"accountId",
"iban",
"bookingDate",
"amount",
"currency"
Comment on lines 4431 to 4436
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Require account identifier on AisTransaction entries

After replacing accountId with optional iban, the AisTransaction required list no longer guarantees any account identifier. For transaction listings that include multiple consented accounts, entries without IBAN become unattributable, so clients cannot reliably group or filter transactions per account. Require iban or retain a mandatory fallback identifier.

Useful? React with 👍 / 👎.

Expand Down Expand Up @@ -4422,4 +4468,4 @@
}
}
}
}
}
Loading