API Explorer 1 endpoints

Create Consent (IMPLICIT)

POST /obp/v7.0.0/my/consents/IMPLICIT

OBPv6.0.0-createConsent No role required ConsentAccount Information Service (AIS)PSD2

This endpoint starts the process of creating a Consent.

The Consent is created in an INITIATED state.

A One Time Password (OTP) (AKA security challenge) is sent Out of Band (OOB) to the User via the transport defined in SCA_METHOD SCA_METHOD is typically "SMS","EMAIL" or "IMPLICIT". "EMAIL" is used for testing purposes. OBP mapped mode "IMPLICIT" is "EMAIL". Other mode, bank can decide it in the connector method 'getConsentImplicitSCA'.

When the Consent is created, OBP (or a backend system) stores the challenge so it can be checked later against the value supplied by the User with the Answer Consent Challenge endpoint.

An OBP Consent allows the holder of the Consent to call one or more endpoints.

Consents must be created and authorisied using SCA (Strong Customer Authentication).

That is, Consents can be created by an authorised User via the OBP REST API but they must be confirmed via an out of band (OOB) mechanism such as a code sent to a mobile phone.

Each Consent has one of the following states: INITIATED, ACCEPTED, REJECTED, rejected, REVOKED, EXPIRED, received, valid, revokedByPsu, expired, terminatedByTpp, AUTHORISED, AWAITINGAUTHORISATION.

Each Consent is bound to a consumer i.e. you need to identify yourself over request header value Consumer-Key.

Examples:

For example: GET /obp/v4.0.0/users/current HTTP/1.1 Host: 127.0.0.1:8080 Consent-JWT: eyJhbGciOiJIUzI1NiJ9.eyJlbnRpdGxlbWVudHMiOlt7InJvbGVfbmFtZSI6IkNhbkdldEFueVVzZXIiLCJiYW5rX2lkIjoiIn 1dLCJjcmVhdGVkQnlVc2VySWQiOiJhYjY1MzlhOS1iMTA1LTQ0ODktYTg4My0wYWQ4ZDZjNjE2NTciLCJzdWIiOiIzNDc1MDEzZi03YmY5LTQyNj EtOWUxYy0xZTdlNWZjZTJlN2UiLCJhdWQiOiI4MTVhMGVmMS00YjZhLTQyMDUtYjExMi1lNDVmZDZmNGQzYWQiLCJuYmYiOjE1ODA3NDE2NjcsIml zcyI6Imh0dHA6XC9cLzEyNy4wLjAuMTo4MDgwIiwiZXhwIjoxNTgwNzQ1MjY3LCJpYXQiOjE1ODA3NDE2NjcsImp0aSI6ImJkYzVjZTk5LTE2ZTY tNDM4Yi1hNjllLTU3MTAzN2RhMTg3OCIsInZpZXdzIjpbXX0.L3fEEEhdCVr3qnmyRKBBUaIQ7dk1VjiFaEBW8hUNjfg

Consumer-Key: ejznk505d132ryomnhbx1qmtohurbsbb0kijajsk cache-control: no-cache

Maximum time to live of the token is specified over props value consents.max_time_to_live. In case isn't defined default value is 7776000 seconds (90 days).

Example of POST JSON: { "everything": false, "views": [ { "bank_id": "GENODEM1GLS", "account_id": "8ca8a7e4-6d02-40e3-a129-0b2bf89de9f0", "view_id": "owner" } ], "entitlements": [ { "bank_id": "GENODEM1GLS", "role_name": "CanGetCustomersAtOneBank" } ], "consumer_id": "7uy8a7e4-6d02-40e3-a129-0b2bf89de8uh", "email": "eveline@example.com", "valid_from": "2020-02-07T08:43:34Z", "time_to_live": 3600 } Please note that only optional fields are: consumer_id, valid_from and time_to_live. In case you omit they the default values are used: consumer_id = the Consumer making this call valid_from = current time time_to_live = consents.max_time_to_live

Every Consent is pinned to one Consumer, and only that Consumer can present the resulting Consent JWT -- any other gets ConsentNotFound. Set consumer_id when the Consent is for a different application than the caller, for example a portal creating a Consent for an agent to use. Omit it when the Consent is for the caller. A Consent that names no Consumer is refused.

User Authentication is Required. The User must be logged in. The Application must also be authenticated.

Example 1: { "everything": true, "views": [], "entitlements": [], "consumer_id": "7uy8a7e4-6d02-40e3-a129-0b2bf89de8uh", }

Please note that consumer_id is an optional field. It names the Consumer the Consent is for -- set it when the Consent is for a different application than the caller (for example a portal creating a Consent for an agent to use), omit it when the Consent is for the caller. Either way the resulting Consent is pinned to exactly one Consumer, and only that Consumer can present it. Example 2: { "everything": true, "views": [], "entitlements": [], }

Please note if everything=false you need to explicitly specify views and entitlements Example 3: { "everything": false, "views": [ { "bank_id": "GENODEM1GLS", "account_id": "8ca8a7e4-6d02-40e3-a129-0b2bf89de9f0", "view_id": "owner" } ], "entitlements": [ { "bank_id": "GENODEM1GLS", "role_name": "CanGetCustomersAtOneBank" } ], "consumer_id": "7uy8a7e4-6d02-40e3-a129-0b2bf89de8uh", }

URL Parameters:

IMPLICIT: IMPLICIT

JSON request body fields (15)
account_id
8ca8a7e4-6d02-40e3-a129-0b2bf89de9f0
actions
actions
bank_id
gh.29.uk
entitlements
entity_name
EXAMPLE COMPANY LTD
everything
role_name
view_id
owner
views
bank_id
gh.29.uk
consumer_id
7uy8a7e4-6d02-40e3-a129-0b2bf89de8uh
my_resources
my_resources
personal_dynamic_entities
personal_dynamic_entities
time_to_live
valid_from
2020-01-27
JSON response body fields (3)
consent_id
9d429899-24f5-42c8-8565-943ffa6a7947
jwt
eyJhbGciOiJIUzI1NiJ9.eyJlbnRpdGxlbWVudHMiOltdLCJjcmVhdGVkQnlVc2VySWQiOiJhYjY1MzlhOS1iMTA1LTQ0ODktYTg4My0wYWQ4ZDZjNjE2NTciLCJzdWIiOiIyMWUxYzhjYy1mOTE4LTRlYWMtYjhlMy01ZTVlZWM2YjNiNGIiLCJhdWQiOiJlanpuazUwNWQxMzJyeW9tbmhieDFxbXRvaHVyYnNiYjBraWphanNrIiwibmJmIjoxNTUzNTU0ODk5LCJpc3MiOiJodHRwczpcL1wvd3d3Lm9wZW5iYW5rcHJvamVjdC5jb20iLCJleHAiOjE1NTM1NTg0OTksImlhdCI6MTU1MzU1NDg5OSwianRpIjoiMDlmODhkNWYtZWNlNi00Mzk4LThlOTktNjYxMWZhMWNkYmQ1Iiwidmlld3MiOlt7ImFjY291bnRfaWQiOiJtYXJrb19wcml2aXRlXzAxIiwiYmFua19pZCI6ImdoLjI5LnVrLngiLCJ2aWV3X2lkIjoib3duZXIifSx7ImFjY291bnRfaWQiOiJtYXJrb19wcml2aXRlXzAyIiwiYmFua19pZCI6ImdoLjI5LnVrLngiLCJ2aWV3X2lkIjoib3duZXIifV19.8cc7cBEf2NyQvJoukBCmDLT7LXYcuzTcSYLqSpbxLp4
status
Example request body
{
  "everything": false,
  "views": [
    {
      "bank_id": "gh.29.uk",
      "account_id": "8ca8a7e4-6d02-40e3-a129-0b2bf89de9f0",
      "view_id": "owner"
    }
  ],
  "entitlements": [
    {
      "bank_id": "gh.29.uk",
      "role_name": "CanGetCustomersAtOneBank"
    }
  ],
  "consumer_id": "7uy8a7e4-6d02-40e3-a129-0b2bf89de8uh",
  "valid_from": "2026-10-21T01:45:41Z",
  "time_to_live": 3600,
  "my_resources": {
    "personal_dynamic_entities": [
      {
        "bank_id": "SYS",
        "entity_name": "FooBar",
        "actions": [
          "read",
          "write"
        ]
      }
    ]
  }
}
Example success response
{
  "consent_id": "9d429899-24f5-42c8-8565-943ffa6a7945",
  "jwt": "eyJhbGciOiJIUzI1NiJ9.eyJlbnRpdGxlbWVudHMiOltdLCJjcmVhdGVkQnlVc2VySWQiOiJhYjY1MzlhOS1iMTA1LTQ0ODktYTg4My0wYWQ4ZDZjNjE2NTciLCJzdWIiOiIyMWUxYzhjYy1mOTE4LTRlYWMtYjhlMy01ZTVlZWM2YjNiNGIiLCJhdWQiOiJlanpuazUwNWQxMzJyeW9tbmhieDFxbXRvaHVyYnNiYjBraWphanNrIiwibmJmIjoxNTUzNTU0ODk5LCJpc3MiOiJodHRwczpcL1wvd3d3Lm9wZW5iYW5rcHJvamVjdC5jb20iLCJleHAiOjE1NTM1NTg0OTksImlhdCI6MTU1MzU1NDg5OSwianRpIjoiMDlmODhkNWYtZWNlNi00Mzk4LThlOTktNjYxMWZhMWNkYmQ1Iiwidmlld3MiOlt7ImFjY291bnRfaWQiOiJtYXJrb19wcml2aXRlXzAxIiwiYmFua19pZCI6ImdoLjI5LnVrLngiLCJ2aWV3X2lkIjoib3duZXIifSx7ImFjY291bnRfaWQiOiJtYXJrb19wcml2aXRlXzAyIiwiYmFua19pZCI6ImdoLjI5LnVrLngiLCJ2aWV3X2lkIjoib3duZXIifV19.8cc7cBEf2NyQvJoukBCmDLT7LXYcuzTcSYLqSpbxLp4",
  "status": "INITIATED"
}
Possible errors (14)
  • OBP-20001: User not logged in. Authentication is required!
  • OBP-30001: Bank not found. Please specify a valid value for BANK_ID.
  • OBP-10001: Incorrect json format.
  • OBP-35009: Only SMS, EMAIL and IMPLICIT are supported as SCA methods.
  • OBP-35013: Consents can only contain Roles that you already have access to.
  • OBP-35033: Consents cannot contain the following Roles: CanCreateEntitlementAtAnyBank.
  • OBP-35014: Consents can only contain Views that you already have access to.
  • OBP-30019: Consumer not found. Please specify a valid value for CONSUMER_ID.
  • OBP-20058: Consumer is disabled.
  • OBP-35044: A Consent must name a Consumer. Send consumer_id in the request body naming the Consumer the Consent is for, or make the call as that Consumer.
  • OBP-00010: Missing props value at this API instance -
  • OBP-35010: SMS server is not working or SMS server can not send the message to the phone number:
  • OBP-50200: Connector cannot return the data we requested.
  • OBP-50000: Unknown Error.
Implemented by OBPv6.0.0 createConsent Originally /obp/v6.0.0/my/consents/IMPLICIT