You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: obp-api/src/main/scala/code/api/util/ErrorMessages.scala
+1Lines changed: 1 addition & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -572,6 +572,7 @@ object ErrorMessages {
572
572
valAccountAccessRequestCannotBeCreated="OBP-30277: Account Access Request could not be created."
573
573
valAccountAccessRequestStatusNotInitiated="OBP-30278: Account Access Request status is not INITIATED. Only INITIATED requests can be approved or rejected."
574
574
valMakerCheckerSameUser="OBP-30279: The checker (approver/rejecter) cannot be the same user as the maker (requestor). Maker/Checker separation is required."
575
+
valMakerCheckerUnknownMaker="OBP-30283: Maker/Checker separation is required for this view but the Transaction Request has no user_id (maker) recorded. Cannot verify separation."
575
576
valBusinessJustificationRequired="OBP-30280: Business justification is required."
576
577
valCheckerCommentRequiredForRejection="OBP-30281: A comment is required when rejecting an Account Access Request."
577
578
valAccountAccessRequestCannotBeUpdated="OBP-30282: Account Access Request could not be updated."
|Berlin Group consents with status "received" that remain unfinished (e.g. the PSU never completed the SCA flow) beyond a configured time threshold are automatically rejected.
2957
2957
|
2958
2958
|* `berlin_group_outdated_consents_time_in_seconds` - Time in seconds after which an unfinished consent is considered outdated. Default: **300** (5 minutes).
2959
-
|* `berlin_group_outdated_consents_interval_in_seconds` - How often (in seconds) the scheduler checks for outdated consents. Must be set to a value greater than 0 to enable the task. **Not set by default** (task is disabled).
2959
+
|* `berlin_group_outdated_consents_interval_in_seconds` - How often (in seconds) the scheduler checks for outdated consents. Default: **599**. Set to 0 to disable.
|Berlin Group consents with status "valid" whose `validUntil` date has passed are automatically transitioned to "expired" status.
2970
+
|OBP consents with status "ACCEPTED" whose `validUntil` date has passed are automatically transitioned to "EXPIRED" status.
2970
2971
|
2971
-
|* `berlin_group_expired_consents_interval_in_seconds` - How often (in seconds) the scheduler checks for expired consents. Must be set to a value greater than 0 to enable the task. **Not set by default** (task is disabled).
2972
+
|* `berlin_group_expired_consents_interval_in_seconds` - How often (in seconds) the scheduler checks for expired Berlin Group consents. Default: **597**. Set to 0 to disable.
2973
+
|* `obp_expired_consents_interval_in_seconds` - How often (in seconds) the scheduler checks for expired OBP consents. Default: **595**. Set to 0 to disable.
|A Mandate is a formal agreement between a corporate customer and a bank that defines who can operate an account, what they can do, and under what conditions.
5266
+
|
5267
+
|In OBP, a Mandate is an entity that ties together existing authorisation constructs (Views, ABAC Rules, Challenges) into a single, auditable policy document.
5268
+
|
5269
+
|## Structure
5270
+
|
5271
+
|A Mandate has three parts:
5272
+
|
5273
+
|### 1. Mandate
5274
+
|
5275
+
|The top-level container. It is linked to a bank account and a corporate customer, and holds the legal text, status (ACTIVE, SUSPENDED, EXPIRED, DRAFT), and validity period.
5276
+
|
5277
+
|### 2. Mandate Provisions
5278
+
|
5279
+
|Each provision maps a clause of the mandate to an OBP enforcement mechanism. Provision types:
5280
+
|
5281
+
|- **SIGNATORY_RULE** — defines who can sign and in what combination (e.g., "2 from Panel A" or "1 from Panel A and 1 from Panel B")
5282
+
|- **VIEW_ASSIGNMENT** — links a Signatory Panel to a View, controlling what members of that panel can see and do
5283
+
|- **ABAC_CONDITION** — links to an ABAC rule for attribute-based conditions (e.g., department matching, amount limits)
5284
+
|- **RESTRICTION** — a negative rule that blocks certain operations (e.g., no international payments)
5285
+
|- **NOTIFICATION** — triggers a notification rather than blocking (e.g., alert CFO for payments over a threshold)
5286
+
|
5287
+
|Provisions can specify conditions (e.g., amount thresholds, currency), link to a View, an ABAC Rule, and/or a Challenge type.
5288
+
|
5289
+
|### 3. Signatory Panels
5290
+
|
5291
+
|A Signatory Panel is a named set of users who are authorised to act under the mandate. For example:
5292
+
|
5293
+
|- Panel A: Directors (user-1, user-2, user-3)
5294
+
|- Panel B: Finance team (user-4, user-5)
5295
+
|
5296
+
|Provisions reference panels by ID and specify how many signatories are required from each panel.
5297
+
|
5298
+
|## How it connects to existing OBP features
5299
+
|
5300
+
|- **Views** control what each panel member can see and do on the account (e.g., canSeeTransactionAmount, canAddTransactionRequestToBeneficiary)
5301
+
|- **ABAC Rules** provide attribute-based conditions evaluated at runtime (e.g., user department must match account business unit)
5302
+
|- **Challenges / Maker-Checker** enforce signatory requirements. A provision can require multiple challenges answered by different users from specified panels
5303
+
|- **Corporate Customers** (CORPORATE / SUBSIDIARY types with parent-child hierarchy) represent the legal entities that mandates apply to
5304
+
|
5305
+
|## Example
5306
+
|
5307
+
|ACME Corp has a mandate on their operating account:
5308
+
|
5309
+
|1. Panel A (Directors): user-1, user-2, user-3
5310
+
|2. Panel B (Finance): user-4, user-5
5311
+
|3. Provision: payments < 5,000 EUR require 1 signature from Panel A
5312
+
|4. Provision: payments 5,000-50,000 EUR require 2 signatures from Panel A
5313
+
|5. Provision: payments > 50,000 EUR require 1 from Panel A and 1 from Panel B
5314
+
|
5315
+
|## API Endpoints
5316
+
|
5317
+
|Mandates, Provisions, and Signatory Panels each have CRUD endpoints under the Mandate tag.
0 commit comments