openapi: 3.0.0 info: title: Account and Transaction API Specification Account Access Consents Events API description: 'Swagger for Account and Transaction API Specification. **Please Note**: There are no optional fields, if a field is not marked as “Required” it is a Conditional field. ' termsOfService: https://www.openbanking.org.uk/terms contact: name: Service Desk email: ServiceDesk@openbanking.org.uk license: name: open-licence url: https://www.openbanking.org.uk/open-licence version: 4.0.1 servers: - url: /open-banking/v4.0/aisp tags: - name: Events paths: /events: post: tags: - Events summary: Create Events description: Enables a TPP to poll for, acknowledge, and receive event notifications. operationId: CreateEvents parameters: - $ref: '#/components/parameters/x-fapi-auth-date' - $ref: '#/components/parameters/x-fapi-customer-ip-address' - $ref: '#/components/parameters/x-fapi-interaction-id' - $ref: '#/components/parameters/Authorization' - $ref: '#/components/parameters/x-customer-user-agent' - $ref: '#/components/parameters/x-client-id' requestBody: content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/OBEventPolling1' application/jose+jwe: schema: $ref: '#/components/schemas/OBEventPolling1' description: Default required: true responses: '200': $ref: '#/components/responses/200EventsRead' '201': $ref: '#/components/responses/201EventsCreated' '400': $ref: '#/components/responses/400Error' '401': $ref: '#/components/responses/401Error' '403': $ref: '#/components/responses/403Error' '404': $ref: '#/components/responses/404Error' '405': $ref: '#/components/responses/405Error' '406': $ref: '#/components/responses/406Error' '415': $ref: '#/components/responses/415Error' '429': $ref: '#/components/responses/429Error' '500': $ref: '#/components/responses/500Error' security: - TPPOAuth2Security: - accounts - payments - fundsconfirmations components: responses: 200EventsRead: description: Read awaiting events headers: x-fapi-interaction-id: description: An RFC4122 UID used as a correlation id. schema: type: string RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' RateLimit: $ref: '#/components/headers/RateLimit' content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/OBEventPollingResponse1' application/jose+jwe: schema: $ref: '#/components/schemas/OBEventPollingResponse1' 400Error: description: Bad request headers: x-fapi-interaction-id: description: An RFC4122 UID used as a correlation id. schema: type: string content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/OBErrorResponse1' application/jose+jwe: schema: $ref: '#/components/schemas/OBErrorResponse1' 401Error: description: Unauthorized headers: x-fapi-interaction-id: description: An RFC4122 UID used as a correlation id. schema: type: string 201EventsCreated: description: Events Created headers: x-fapi-interaction-id: description: An RFC4122 UID used as a correlation id. schema: type: string content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/OBEventPollingResponse1' application/jose+jwe: schema: $ref: '#/components/schemas/OBEventPollingResponse1' 404Error: description: Not found headers: x-fapi-interaction-id: description: An RFC4122 UID used as a correlation id. schema: type: string 415Error: description: Unsupported Media Type headers: x-fapi-interaction-id: description: An RFC4122 UID used as a correlation id. schema: type: string 405Error: description: Method Not Allowed headers: x-fapi-interaction-id: description: An RFC4122 UID used as a correlation id. schema: type: string 429Error: description: Too Many Requests headers: Retry-After: description: Number in seconds to wait schema: type: integer x-fapi-interaction-id: description: An RFC4122 UID used as a correlation id. schema: type: string 403Error: description: Forbidden headers: x-fapi-interaction-id: description: An RFC4122 UID used as a correlation id. schema: type: string content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/OBErrorResponse1' application/jose+jwe: schema: $ref: '#/components/schemas/OBErrorResponse1' 500Error: description: Internal Server Error headers: x-fapi-interaction-id: description: An RFC4122 UID used as a correlation id. schema: type: string content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/OBErrorResponse1' application/jose+jwe: schema: $ref: '#/components/schemas/OBErrorResponse1' 406Error: description: Not Acceptable headers: x-fapi-interaction-id: description: An RFC4122 UID used as a correlation id. schema: type: string parameters: x-client-id: in: header name: x-client-id required: false description: "Only used if an ASPSP requires the client ID in order to return rate limit headers. \n\nTPPs __must__ refer to ASPSP developer portals for further information on any rate limit policies, if the headers are supported and any additional requirements.\n\nThis header __must not__ be used for client authentication\n" schema: type: string x-fapi-auth-date: in: header name: x-fapi-auth-date required: false description: "The time when the PSU last logged in with the TPP. \nAll dates in the HTTP headers are represented as RFC 7231 Full Dates. An example is below: \nSun, 10 Sep 2017 19:43:31 UTC" schema: type: string pattern: ^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} (GMT|UTC)$ Authorization: in: header name: Authorization required: true description: An Authorisation Token as per https://tools.ietf.org/html/rfc6750 schema: type: string x-fapi-interaction-id: in: header name: x-fapi-interaction-id required: false description: An RFC4122 UID used as a correlation id. schema: type: string x-fapi-customer-ip-address: in: header name: x-fapi-customer-ip-address required: false description: The PSU's IP address if the PSU is currently logged in with the TPP. schema: type: string x-customer-user-agent: in: header name: x-customer-user-agent description: Indicates the user-agent that the PSU is using. required: false schema: type: string schemas: OBExternalStatusReason1Code: description: Low level textual error code, for all enum values see `OBExternalStatusReason1Code` in *OB_Internal_CodeSet* [here](https://github.com/OpenBankingUK/External_Internal_CodeSets/) type: string minLength: 4 maxLength: 4 example: U001 OBEventPolling1: type: object properties: maxEvents: description: Maximum number of events to be returned. A value of zero indicates the ASPSP should not return events even if available type: integer returnImmediately: description: Indicates whether an ASPSP should return a response immediately or provide a long poll type: boolean ack: type: array items: description: An array of jti values indicating event notifications positively acknowledged by the TPP type: string minLength: 1 maxLength: 128 setErrs: type: object description: An object that encapsulates all negative acknowledgements transmitted by the TPP properties: {} additionalProperties: type: object required: - err - description properties: err: description: "A value from the IANA \"Security Event Token Delivery Error Codes\" registry that identifies the error as defined here \nhttps://tools.ietf.org/id/draft-ietf-secevent-http-push-03.html#error_codes" type: string minLength: 1 maxLength: 40 description: description: A human-readable string that provides additional diagnostic information type: string minLength: 1 maxLength: 256 additionalProperties: false OBEventPollingResponse1: type: object required: - moreAvailable - sets properties: moreAvailable: description: A JSON boolean value that indicates if more unacknowledged event notifications are available to be returned. type: boolean sets: type: object description: A JSON object that contains zero or more nested JSON attributes. If there are no outstanding event notifications to be transmitted, the JSON object SHALL be empty. properties: {} additionalProperties: description: 'An object named with the jti of the event notification to be delivered. The value is the event notification, expressed as a string. The payload of the event should be defined in the OBEventNotification2 format.' type: string additionalProperties: false OBErrorResponse1: description: An array of detail error codes, and messages, and URLs to documentation to help remediation. type: object properties: Id: description: A unique reference for the error instance, for audit purposes, in case of unknown/unclassified errors. type: string minLength: 1 maxLength: 40 Code: description: Deprecated
High level textual error code, to help categorise the errors. type: string minLength: 1 example: 400 BadRequest maxLength: 40 Message: description: Deprecated
Brief Error message type: string minLength: 1 example: There is something wrong with the request parameters provided maxLength: 500 Errors: items: $ref: '#/components/schemas/OBError1' type: array minItems: 1 required: - Errors additionalProperties: false OBError1: type: object properties: ErrorCode: $ref: '#/components/schemas/OBExternalStatusReason1Code' Message: description: 'A description of the error that occurred. e.g., ''A mandatory field isn''t supplied'' or ''RequestedExecutionDateTime must be in future'' OBIE doesn''t standardise this field' type: string minLength: 1 maxLength: 500 Path: description: Recommended but optional reference to the JSON Path of the field with error, e.g., Data.Initiation.InstructedAmount.Currency type: string minLength: 1 maxLength: 500 Url: description: URL to help remediate the problem, or provide more information, or to API Reference, or help etc type: string required: - ErrorCode additionalProperties: false minProperties: 1 headers: RateLimit-Policy: required: false description: 'TPPs __must__ refer to ASPSP developer portals for further information on any rate limit policies, if the headers are supported and any additional requirements. A non-empty list of Quota Policy Items. The Item value __MUST__ be a String. Example: `RateLimit-Policy: "default";q=100;w=10` The **REQUIRED** "q" parameter indicates the quota allocated by this policy measured in quota units. The **OPTIONAL** "w" parameter value conveys a time window. ' schema: type: string RateLimit: required: false description: 'TPPs __must__ refer to ASPSP developer portals for further information on any rate limit policies, if the headers are supported and any additional requirements. A server uses the "RateLimit" response header field to communicate the current service limit for a quota policy for a particular partition key. Example: `RateLimit: "default";r=50;t=30` The **REQUIRED** "r" parameter value conveys the remaining quota units for the identified policy. The **OPTIONAL** "t" parameter value conveys the time window reset time for the identified policy. ' schema: type: string securitySchemes: TPPOAuth2Security: type: oauth2 description: TPP client credential authorisation flow with the ASPSP flows: clientCredentials: tokenUrl: https://authserver.example/token scopes: accounts: Ability to read Accounts information PSUOAuth2Security: type: oauth2 description: OAuth flow, it is required when the PSU needs to perform SCA with the ASPSP when a TPP wants to access an ASPSP resource owned by the PSU flows: authorizationCode: authorizationUrl: https://authserver.example/authorization tokenUrl: https://authserver.example/token scopes: accounts: Ability to read Accounts information