openapi: 3.0.0
info:
title: Account and Transaction API Specification Account Access Consents Parties 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: Parties
paths:
/accounts/{AccountId}/parties:
get:
tags:
- Parties
summary: Get Parties for an AccountId
description: Enables an AISP to retrieve details about the PSU account-holder(s)/operator(s).
operationId: GetAccountsAccountIdParties
parameters:
- $ref: '#/components/parameters/AccountId'
- $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'
responses:
'200':
$ref: '#/components/responses/200AccountsAccountIdPartiesRead'
'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'
'429':
$ref: '#/components/responses/429Error'
'500':
$ref: '#/components/responses/500Error'
security:
- PSUOAuth2Security:
- accounts
/accounts/{AccountId}/party:
get:
tags:
- Parties
summary: Get Party for an AccountId
description: Enables an AISP to retrieve details about the party that gave permission to the AISP to view a specific PSU account.
operationId: GetAccountsAccountIdParty
parameters:
- $ref: '#/components/parameters/AccountId'
- $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'
responses:
'200':
$ref: '#/components/responses/200AccountsAccountIdPartyRead'
'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'
'429':
$ref: '#/components/responses/429Error'
'500':
$ref: '#/components/responses/500Error'
security:
- PSUOAuth2Security:
- accounts
/party:
get:
tags:
- Parties
summary: Get Party
description: Retrieve details about the party that gave permission to the AISP to view an account(s).
operationId: GetParty
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'
responses:
'200':
$ref: '#/components/responses/200PartyRead'
'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'
'429':
$ref: '#/components/responses/429Error'
'500':
$ref: '#/components/responses/500Error'
security:
- PSUOAuth2Security:
- accounts
components:
schemas:
TownName:
description: Name of a built-up area, with defined boundaries, and a local government.
type: string
example: London
minLength: 1
maxLength: 140
PostCode:
description: Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail.
type: string
example: EC2N 4AG
minLength: 1
maxLength: 16
PartyId:
description: A unique and immutable identifier used to identify the customer resource. This identifier has no meaning to the account owner.
type: string
example: PXSIF023
minLength: 1
maxLength: 40
Meta:
title: MetaData
type: object
description: Meta Data relevant to the payload
properties:
TotalPages:
type: integer
format: int32
FirstAvailableDateTime:
$ref: '#/components/schemas/ISODateTime'
LastAvailableDateTime:
$ref: '#/components/schemas/ISODateTime'
additionalProperties: false
LEI:
description: Legal entity identification as an alternate identification for a party. Legal Entity Identifier is a code allocated to a party as described in ISO 17442 "Financial Services - Legal Entity Identifier (LEI)".
type: string
example: IZ9Q00LZEVUKWCQY6X15
minLength: 1
maxLength: 20
pattern: ^[A-Z0-9]{18,18}[0-9]{2,2}$
Floor:
description: Number that identifies the level within a building
type: string
example: '11'
minLength: 1
maxLength: 70
PostBox:
description: Information that locates and identifies a box in a post office assigned to a person or organization, where letters for them are kept until called for.
type: string
example: PO Box 123456
minLength: 1
maxLength: 16
PhoneNumber_1:
description: Collection of information that identifies a mobile phone number, as defined by telecom services.
type: string
example: +44-7700900000
pattern: \+[0-9]{1,3}-[0-9()+\-]{1,30}
OBInternalPartyType1Code:
description: Party type, in a coded form. For a full list see `OBInternalPartyType1Code` in *OB_Internal_CodeSet* [here](https://github.com/OpenBankingUK/External_Internal_CodeSets)
type: string
example: Joint
enum:
- Delegate
- Joint
- Sole
PartyNumber:
description: Number assigned by an agent to identify its customer.
type: string
example: '20202002'
minLength: 1
maxLength: 35
UnitNumber:
description: Number that identifies the unit of a specific address .
type: string
example: A88
minLength: 1
maxLength: 16
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
CareOf:
description: The 'care of' address is used whenever sending mail to a person or organisation who does not actually live or work at the address. They will receive the mail for the individual.
type: string
example: Jane Smith
minLength: 1
maxLength: 140
OBInternalLegalStructureType1Code:
description: Legal standing of the party. For a full list refer to `OBInternalLegalStructureType1Code` in *OB_Internal_CodeSet* [here](https://github.com/OpenBankingUK/External_Internal_CodeSets)
type: string
example: UK.OBIE.Individual
x-namespaced-enum:
- UK.OBIE.CIC
- UK.OBIE.CIO
- UK.OBIE.Charity
- UK.OBIE.CoOp
- UK.OBIE.GeneralPartnership
- UK.OBIE.Individual
- UK.OBIE.LimitedLiabilityPartnership
- UK.OBIE.LimitedPartnership
- UK.OBIE.PrivateLimitedCompany
- UK.OBIE.PublicLimitedCompany
- UK.OBIE.ScottishLimitedPartnership
- UK.OBIE.Sole
FullLegalName:
description: The full legal name of the party.
type: string
example: Jane Smith
minLength: 1
maxLength: 350
OBParty2:
type: object
required:
- PartyId
properties:
PartyId:
$ref: '#/components/schemas/PartyId'
PartyNumber:
$ref: '#/components/schemas/PartyNumber'
PartyType:
$ref: '#/components/schemas/OBInternalPartyType1Code'
Name:
$ref: '#/components/schemas/Name_3'
FullLegalName:
$ref: '#/components/schemas/FullLegalName'
LegalStructure:
$ref: '#/components/schemas/OBInternalLegalStructureType1Code'
LEI:
$ref: '#/components/schemas/LEI'
BeneficialOwnership:
description: A flag to indicate a party's beneficial ownership of the related account
type: boolean
AccountRole:
$ref: '#/components/schemas/OBInternalAccountRole1Code'
EmailAddress:
$ref: '#/components/schemas/EmailAddress'
Phone:
$ref: '#/components/schemas/PhoneNumber_0'
Mobile:
$ref: '#/components/schemas/PhoneNumber_1'
Relationships:
$ref: '#/components/schemas/OBPartyRelationships1'
Address:
type: array
items:
$ref: '#/components/schemas/OBPostalAddress7'
additionalProperties: false
StreetName:
description: Name of a street or thoroughfare.
type: string
example: Bank Street
minLength: 1
maxLength: 140
Links:
type: object
description: Links relevant to the payload
properties:
Self:
type: string
format: uri
First:
type: string
format: uri
Prev:
type: string
format: uri
Next:
type: string
format: uri
Last:
type: string
format: uri
additionalProperties: false
required:
- Self
OBInternalAccountRole1Code:
description: A party’s role with respect to the related account. For a full list refer to `OBInternalAccountRole1Code` in *OB_Internal_CodeSet* [here](https://github.com/OpenBankingUK/External_Internal_CodeSets)
type: string
x-namespaced-enum:
- UK.OBIE.Administrator
- UK.OBIE.Beneficiary
- UK.OBIE.CustodianForMinor
- UK.OBIE.Granter
- UK.OBIE.LegalGuardian
- UK.OBIE.OtherParty
- UK.OBIE.PowerOfAttorney
- UK.OBIE.Principal
- UK.OBIE.Protector
- UK.OBIE.RegisteredShareholderName
- UK.OBIE.SecondaryOwner
- UK.OBIE.SeniorManagingOfficial
- UK.OBIE.Settlor
- UK.OBIE.SuccessorOnDeath
OBPostalAddress7:
type: object
description: Information that locates and identifies a specific address, as defined by postal services.
properties:
AddressType:
$ref: '#/components/schemas/OBAddressType2Code'
Department:
description: Identification of a division of a large organisation or building.
example: Finance
type: string
minLength: 1
maxLength: 70
SubDepartment:
description: Identification of a sub-division of a large organisation or building.
example: Payroll
type: string
minLength: 1
maxLength: 70
StreetName:
$ref: '#/components/schemas/StreetName'
BuildingNumber:
$ref: '#/components/schemas/BuildingNumber'
BuildingName:
$ref: '#/components/schemas/BuildingName'
Floor:
$ref: '#/components/schemas/Floor'
UnitNumber:
$ref: '#/components/schemas/UnitNumber'
Room:
$ref: '#/components/schemas/Room'
PostBox:
$ref: '#/components/schemas/PostBox'
TownLocationName:
$ref: '#/components/schemas/TownName'
DistrictName:
$ref: '#/components/schemas/DistrictName'
CareOf:
$ref: '#/components/schemas/CareOf'
PostCode:
$ref: '#/components/schemas/PostCode'
TownName:
$ref: '#/components/schemas/TownName'
CountrySubDivision:
description: Identifies a subdivision of a country such as state, region, county.
type: string
minLength: 1
maxLength: 35
Country:
description: Nation with its own government.
type: string
pattern: ^[A-Z]{2,2}$
AddressLine:
type: array
items:
description: Information that locates and identifies a specific address, as defined by postal services, presented in free format text.
type: string
minLength: 1
maxLength: 70
minItems: 0
maxItems: 7
EmailAddress:
description: Address for electronic mail (e-mail).
type: string
example: d.user@semiotec.co.jp
minLength: 1
maxLength: 256
ISODateTime:
description: "All dates in the JSON payloads are represented in ISO 8601 date-time format. \nAll date-time fields in responses must include the timezone. An example is below:\n2017-04-05T10:43:07+00:00"
type: string
format: date-time
OBAddressType2Code:
description: Identifies the nature of the postal address.
For a full set of codes see `OBAddressType2Code` in *OB_Internal_CodeSet* [here](https://github.com/OpenBankingUK/External_Internal_CodeSets).
type: string
example: BIZZ
enum:
- BIZZ
- DLVY
- MLTO
- PBOX
- ADDR
- HOME
- CORR
- STAT
PhoneNumber_0:
description: Collection of information that identifies a phone number, as defined by telecom services.
example: +44-2079460000
type: string
pattern: \+[0-9]{1,3}-[0-9()+\-]{1,30}
Room:
description: Information that locates and identifies a room to form part of an address
type: string
example: Basement 03
minLength: 1
maxLength: 70
BuildingName:
description: Name of a referenced building.
type: string
minLength: 1
maxLength: 140
Name_3:
description: Name by which a party is known and which is usually used to identify that party.
type: string
example: Mx Jane Smith
minLength: 1
maxLength: 350
OBPartyRelationships1:
type: object
description: The Party's relationships with other resources.
properties:
Account:
type: object
required:
- Related
- Id
description: Relationship to the Account resource.
properties:
Related:
description: Absolute URI to the related resource.
type: string
example: https://api.alphabank.com/open-banking/v4.0/aisp/accounts/89019
format: uri
Id:
description: Unique identification as assigned by the ASPSP to uniquely identify the related resource.
type: string
example: '89019'
minLength: 1
maxLength: 40
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
BuildingNumber:
description: Number that identifies the position of a building on a street.
type: string
example: '11'
minLength: 1
maxLength: 16
OBReadParty2:
type: object
required:
- Data
properties:
Data:
type: object
properties:
Party:
$ref: '#/components/schemas/OBParty2'
Links:
$ref: '#/components/schemas/Links'
Meta:
$ref: '#/components/schemas/Meta'
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''
OBL 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
DistrictName:
description: Number that of the regional area, known as a district, which forms part of an address
type: string
example: Greater London
minLength: 1
maxLength: 140
OBReadParty3:
type: object
required:
- Data
properties:
Data:
type: object
properties:
Party:
type: array
items:
$ref: '#/components/schemas/OBParty2'
Links:
$ref: '#/components/schemas/Links'
Meta:
$ref: '#/components/schemas/Meta'
additionalProperties: false
responses:
200AccountsAccountIdPartyRead:
description: Parties Read
headers:
x-fapi-interaction-id:
description: An RFC4122 UID used as a correlation id.
required: true
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/OBReadParty2'
application/json:
schema:
$ref: '#/components/schemas/OBReadParty2'
application/jose+jwe:
schema:
$ref: '#/components/schemas/OBReadParty2'
400Error:
description: Bad request
headers:
x-fapi-interaction-id:
description: An RFC4122 UID used as a correlation id.
required: true
schema:
type: string
content:
application/json; charset=utf-8:
schema:
$ref: '#/components/schemas/OBErrorResponse1'
application/json:
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.
required: true
schema:
type: string
404Error:
description: Not found
headers:
x-fapi-interaction-id:
description: An RFC4122 UID used as a correlation id.
required: true
schema:
type: string
405Error:
description: Method Not Allowed
headers:
x-fapi-interaction-id:
description: An RFC4122 UID used as a correlation id.
required: true
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.
required: true
schema:
type: string
content:
application/json; charset=utf-8:
schema:
$ref: '#/components/schemas/OBErrorResponse1'
application/json:
schema:
$ref: '#/components/schemas/OBErrorResponse1'
application/jose+jwe:
schema:
$ref: '#/components/schemas/OBErrorResponse1'
200PartyRead:
description: Parties Read
headers:
x-fapi-interaction-id:
description: An RFC4122 UID used as a correlation id.
required: true
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/OBReadParty2'
application/json:
schema:
$ref: '#/components/schemas/OBReadParty2'
application/jose+jwe:
schema:
$ref: '#/components/schemas/OBReadParty2'
200AccountsAccountIdPartiesRead:
description: Parties Read
headers:
x-fapi-interaction-id:
description: An RFC4122 UID used as a correlation id.
required: true
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/OBReadParty3'
application/json:
schema:
$ref: '#/components/schemas/OBReadParty3'
application/jose+jwe:
schema:
$ref: '#/components/schemas/OBReadParty3'
500Error:
description: Internal Server Error
headers:
x-fapi-interaction-id:
description: An RFC4122 UID used as a correlation id.
required: true
schema:
type: string
content:
application/json; charset=utf-8:
schema:
$ref: '#/components/schemas/OBErrorResponse1'
application/json:
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.
required: true
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)$
AccountId:
name: AccountId
in: path
description: AccountId
required: true
schema:
type: string
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
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