models.py•213 kB
# generated by fastapi-codegen:
# filename: openapi.yaml
# timestamp: 2025-06-29T07:53:33+00:00
from __future__ import annotations
from datetime import datetime
from enum import Enum
from typing import List, Optional
from pydantic import AnyUrl, BaseModel, ConfigDict, Field, RootModel, constr
class AccountId(RootModel[constr(min_length=1, max_length=40)]):
root: constr(min_length=1, max_length=40) = Field(
...,
description='A unique and immutable identifier used to identify the account resource. This identifier has no meaning to the account owner.',
)
class ActiveOrHistoricCurrencyCode0(RootModel[constr(pattern=r'^[A-Z]{3,3}$')]):
root: constr(pattern=r'^[A-Z]{3,3}$') = Field(
...,
description='Identification of the currency in which the account is held. \nUsage: Currency should only be used in case one and the same account number covers several currencies\nand the initiating party needs to identify which currency needs to be used for settlement on the account.',
)
class ActiveOrHistoricCurrencyCode1(RootModel[constr(pattern=r'^[A-Z]{3,3}$')]):
root: constr(pattern=r'^[A-Z]{3,3}$') = Field(
...,
description='A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 "Codes for the representation of currencies and funds".',
)
class AddressLine(RootModel[constr(min_length=1, max_length=70)]):
root: constr(min_length=1, max_length=70) = Field(
...,
description='Information that locates and identifies a specific address for a transaction entry, that is presented in free format text.',
)
class BeneficiaryId(RootModel[constr(min_length=1, max_length=40)]):
root: constr(min_length=1, max_length=40) = Field(
...,
description='A unique and immutable identifier used to identify the beneficiary resource. This identifier has no meaning to the account owner.',
)
class BookingDateTime(RootModel[datetime]):
root: datetime = Field(
...,
description="Date and time when a transaction entry is posted to an account on the account servicer's books.\nUsage: Booking date is the expected booking date, unless the status is booked, in which case it is the actual booking date.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",
)
class BuildingNumber(RootModel[constr(min_length=1, max_length=16)]):
root: constr(min_length=1, max_length=16) = Field(
...,
description='Number that identifies the position of a building on a street.',
)
class CountryCode(RootModel[constr(pattern=r'^[A-Z]{2,2}$')]):
root: constr(pattern=r'^[A-Z]{2,2}$') = Field(
...,
description='Nation with its own government, occupying a particular territory.',
)
class CountrySubDivision(RootModel[constr(min_length=1, max_length=35)]):
root: constr(min_length=1, max_length=35) = Field(
...,
description='Identifies a subdivision of a country eg, state, region, county.',
)
class CreationDateTime(RootModel[datetime]):
root: datetime = Field(
...,
description='Date and time at which the resource was created.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',
)
class DateTime(RootModel[datetime]):
root: datetime = Field(
...,
description='Date and time associated with the date time type.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',
)
class DebtorReference(RootModel[constr(min_length=1, max_length=35)]):
root: constr(min_length=1, max_length=35) = Field(
...,
description='A reference value provided by the PSU to the PISP while setting up the scheduled payment.',
)
class Description0(RootModel[constr(min_length=1, max_length=35)]):
root: constr(min_length=1, max_length=35) = Field(
..., description='Specifies the description of the account type.'
)
class Description1(RootModel[constr(min_length=1, max_length=128)]):
root: constr(min_length=1, max_length=128) = Field(
..., description='Description that may be available for the statement fee.'
)
class Description2(RootModel[constr(min_length=1, max_length=128)]):
root: constr(min_length=1, max_length=128) = Field(
..., description='Description that may be available for the statement interest.'
)
class Description3(RootModel[constr(min_length=1, max_length=350)]):
root: constr(min_length=1, max_length=350) = Field(
..., description='Description to describe the purpose of the code'
)
class DirectDebitId(RootModel[constr(min_length=1, max_length=40)]):
root: constr(min_length=1, max_length=40) = Field(
...,
description='A unique and immutable identifier used to identify the direct debit resource. This identifier has no meaning to the account owner.',
)
class EmailAddress(RootModel[constr(min_length=1, max_length=256)]):
root: constr(min_length=1, max_length=256) = Field(
..., description='Address for electronic mail (e-mail).'
)
class EndDateTime(RootModel[datetime]):
root: datetime = Field(
...,
description='Date and time at which the statement period ends.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',
)
class File(BaseModel):
pass
class FinalPaymentDateTime(RootModel[datetime]):
root: datetime = Field(
...,
description='The date on which the final payment for a Standing Order schedule will be made.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',
)
class FirstPaymentDateTime(RootModel[datetime]):
root: datetime = Field(
...,
description='The date on which the first payment for a Standing Order schedule will be made.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',
)
class Frequency0(
RootModel[
constr(
pattern=r'^(EvryDay)$|^(EvryWorkgDay)$|^(IntrvlWkDay:0[1-9]:0[1-7])$|^(WkInMnthDay:0[1-5]:0[1-7])$|^(IntrvlMnthDay:(0[1-6]|12|24):(-0[1-5]|0[1-9]|[12][0-9]|3[01]))$|^(QtrDay:(ENGLISH|SCOTTISH|RECEIVED))$'
)
]
):
root: constr(
pattern=r'^(EvryDay)$|^(EvryWorkgDay)$|^(IntrvlWkDay:0[1-9]:0[1-7])$|^(WkInMnthDay:0[1-5]:0[1-7])$|^(IntrvlMnthDay:(0[1-6]|12|24):(-0[1-5]|0[1-9]|[12][0-9]|3[01]))$|^(QtrDay:(ENGLISH|SCOTTISH|RECEIVED))$'
) = Field(
...,
description='Individual Definitions:\nEvryDay - Every day\nEvryWorkgDay - Every working day\nIntrvlWkDay - An interval specified in weeks (01 to 09), and the day within the week (01 to 07)\nWkInMnthDay - A monthly interval, specifying the week of the month (01 to 05) and day within the week (01 to 07)\nIntrvlMnthDay - An interval specified in months (between 01 to 06, 12, 24), specifying the day within the month (-5 to -1, 1 to 31)\nQtrDay - Quarterly (either ENGLISH, SCOTTISH, or RECEIVED)\nENGLISH = Paid on the 25th March, 24th June, 29th September and 25th December. \nSCOTTISH = Paid on the 2nd February, 15th May, 1st August and 11th November.\nRECEIVED = Paid on the 20th March, 19th June, 24th September and 20th December. \nIndividual Patterns:\nEvryDay (ScheduleCode)\nEvryWorkgDay (ScheduleCode)\nIntrvlWkDay:IntervalInWeeks:DayInWeek (ScheduleCode + IntervalInWeeks + DayInWeek)\nWkInMnthDay:WeekInMonth:DayInWeek (ScheduleCode + WeekInMonth + DayInWeek)\nIntrvlMnthDay:IntervalInMonths:DayInMonth (ScheduleCode + IntervalInMonths + DayInMonth)\nQtrDay: + either (ENGLISH, SCOTTISH or RECEIVED) ScheduleCode + QuarterDay\nThe regular expression for this element combines five smaller versions for each permitted pattern. To aid legibility - the components are presented individually here:\nEvryDay\nEvryWorkgDay\nIntrvlWkDay:0[1-9]:0[1-7]\nWkInMnthDay:0[1-5]:0[1-7]\nIntrvlMnthDay:(0[1-6]|12|24):(-0[1-5]|0[1-9]|[12][0-9]|3[01])\nQtrDay:(ENGLISH|SCOTTISH|RECEIVED)\nFull Regular Expression:\n^(EvryDay)$|^(EvryWorkgDay)$|^(IntrvlWkDay:0[1-9]:0[1-7])$|^(WkInMnthDay:0[1-5]:0[1-7])$|^(IntrvlMnthDay:(0[1-6]|12|24):(-0[1-5]|0[1-9]|[12][0-9]|3[01]))$|^(QtrDay:(ENGLISH|SCOTTISH|RECEIVED))$',
)
class Frequency1(
RootModel[
constr(
pattern=r'^(NotKnown)$|^(EvryDay)$|^(EvryWorkgDay)$|^(IntrvlDay:((0[2-9])|([1-2][0-9])|3[0-1]))$|^(IntrvlWkDay:0[1-9]:0[1-7])$|^(WkInMnthDay:0[1-5]:0[1-7])$|^(IntrvlMnthDay:(0[1-6]|12|24):(-0[1-5]|0[1-9]|[12][0-9]|3[01]))$|^(QtrDay:(ENGLISH|SCOTTISH|RECEIVED))$'
)
]
):
root: constr(
pattern=r'^(NotKnown)$|^(EvryDay)$|^(EvryWorkgDay)$|^(IntrvlDay:((0[2-9])|([1-2][0-9])|3[0-1]))$|^(IntrvlWkDay:0[1-9]:0[1-7])$|^(WkInMnthDay:0[1-5]:0[1-7])$|^(IntrvlMnthDay:(0[1-6]|12|24):(-0[1-5]|0[1-9]|[12][0-9]|3[01]))$|^(QtrDay:(ENGLISH|SCOTTISH|RECEIVED))$'
) = Field(
...,
description='Individual Definitions:\nNotKnown - Not Known\nEvryDay - Every day\nEvryWorkgDay - Every working day\nIntrvlDay - An interval specified in number of calendar days (02 to 31)\nIntrvlWkDay - An interval specified in weeks (01 to 09), and the day within the week (01 to 07)\nWkInMnthDay - A monthly interval, specifying the week of the month (01 to 05) and day within the week (01 to 07)\nIntrvlMnthDay - An interval specified in months (between 01 to 06, 12, 24), specifying the day within the month (-05 to -01, 01 to 31)\nQtrDay - Quarterly (either ENGLISH, SCOTTISH, or RECEIVED)\nENGLISH = Paid on the 25th March, 24th June, 29th September and 25th December.\nSCOTTISH = Paid on the 2nd February, 15th May, 1st August and 11th November.\nRECEIVED = Paid on the 20th March, 19th June, 24th September and 20th December.\nIndividual Patterns:\nNotKnown (ScheduleCode)\nEvryDay (ScheduleCode)\nEvryWorkgDay (ScheduleCode)\nIntrvlDay:NoOfDay (ScheduleCode + NoOfDay)\nIntrvlWkDay:IntervalInWeeks:DayInWeek (ScheduleCode + IntervalInWeeks + DayInWeek)\nWkInMnthDay:WeekInMonth:DayInWeek (ScheduleCode + WeekInMonth + DayInWeek)\nIntrvlMnthDay:IntervalInMonths:DayInMonth (ScheduleCode + IntervalInMonths + DayInMonth)\nQtrDay: + either (ENGLISH, SCOTTISH or RECEIVED) ScheduleCode + QuarterDay\nThe regular expression for this element combines five smaller versions for each permitted pattern. To aid legibility - the components are presented individually here:\nNotKnown\nEvryDay\nEvryWorkgDay\nIntrvlDay:((0[2-9])|([1-2][0-9])|3[0-1])\nIntrvlWkDay:0[1-9]:0[1-7]\nWkInMnthDay:0[1-5]:0[1-7]\nIntrvlMnthDay:(0[1-6]|12|24):(-0[1-5]|0[1-9]|[12][0-9]|3[01])\nQtrDay:(ENGLISH|SCOTTISH|RECEIVED)\nFull Regular Expression:\n^(NotKnown)$|^(EvryDay)$|^(EvryWorkgDay)$|^(IntrvlDay:((0[2-9])|([1-2][0-9])|3[0-1]))$|^(IntrvlWkDay:0[1-9]:0[1-7])$|^(WkInMnthDay:0[1-5]:0[1-7])$|^(IntrvlMnthDay:(0[1-6]|12|24):(-0[1-5]|0[1-9]|[12][0-9]|3[01]))$|^(QtrDay:(ENGLISH|SCOTTISH|RECEIVED))$',
)
class FullLegalName(RootModel[constr(min_length=1, max_length=350)]):
root: constr(min_length=1, max_length=350) = Field(
...,
description='Specifies a character string with a maximum length of 350 characters.',
)
class ISODateTime(RootModel[datetime]):
root: datetime = Field(
...,
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',
)
class Identification0(RootModel[constr(min_length=1, max_length=256)]):
root: constr(min_length=1, max_length=256) = Field(
...,
description='Identification assigned by an institution to identify an account. This identification is known by the account owner.',
)
class Identification1(RootModel[constr(min_length=1, max_length=35)]):
root: constr(min_length=1, max_length=35) = Field(
...,
description='Unique and unambiguous identification of the servicing institution.',
)
class Identification2(RootModel[constr(min_length=1, max_length=35)]):
root: constr(min_length=1, max_length=35) = Field(
...,
description='Unique and unambiguous identification of a financial institution or a branch of a financial institution.',
)
class LastPaymentDateTime(RootModel[datetime]):
root: datetime = Field(
...,
description='The date on which the last (most recent) payment for a Standing Order schedule was made.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',
)
class Links(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
First: Optional[AnyUrl] = None
Last: Optional[AnyUrl] = None
Next: Optional[AnyUrl] = None
Prev: Optional[AnyUrl] = None
Self: AnyUrl
class MandateIdentification(RootModel[constr(min_length=1, max_length=35)]):
root: constr(min_length=1, max_length=35) = Field(
...,
description='Direct Debit reference. For AUDDIS service users provide Core Reference. For non AUDDIS service users provide Core reference if possible or last used reference.',
)
class MaturityDate(RootModel[datetime]):
root: datetime = Field(
...,
description='Maturity date of the account.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',
)
class Meta(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
FirstAvailableDateTime: Optional[ISODateTime] = None
LastAvailableDateTime: Optional[ISODateTime] = None
TotalPages: Optional[int] = None
class Model(BaseModel):
id: Optional[int] = None
class Name0(RootModel[constr(min_length=1, max_length=350)]):
root: constr(min_length=1, max_length=350) = Field(
...,
description="The account name is the name or names of the account owner(s) represented at an account level, as displayed by the ASPSP's online channels.\nNote, the account name is not the product name or the nickname of the account.",
)
class Name1(RootModel[constr(min_length=1, max_length=140)]):
root: constr(min_length=1, max_length=140) = Field(
...,
description='Name by which an agent is known and which is usually used to identify that agent.',
)
class Name2(RootModel[constr(min_length=1, max_length=70)]):
root: constr(min_length=1, max_length=70) = Field(
..., description='Name of Service User.'
)
class Name3(RootModel[constr(min_length=1, max_length=350)]):
root: constr(min_length=1, max_length=350) = Field(
...,
description='Name by which a party is known and which is usually used to identify that party.',
)
class Name4(RootModel[constr(min_length=1, max_length=70)]):
root: constr(min_length=1, max_length=70) = Field(
..., description='Long name associated with the code'
)
class NextPaymentDateTime(RootModel[datetime]):
root: datetime = Field(
...,
description='The date on which the next payment for a Standing Order schedule will be made.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',
)
class Nickname(RootModel[constr(min_length=1, max_length=70)]):
root: constr(min_length=1, max_length=70) = Field(
...,
description='The nickname of the account, assigned by the account owner in order to provide an additional means of identification of the account.',
)
class NumberOfPayments(RootModel[constr(min_length=1, max_length=35)]):
root: constr(min_length=1, max_length=35) = Field(
...,
description='Number of the payments that will be made in completing this frequency sequence including any executed since the sequence start date.',
)
class Number0(RootModel[int]):
root: int = Field(
...,
description='Indicates whether the advertised overdraft rate is guaranteed to be offered to a borrower by the bank e.g. if it�s part of a government scheme, or whether the rate may vary dependent on the applicant�s circumstances.',
)
class Number1(RootModel[int]):
root: int = Field(
...,
description='fee/charges are captured dependent on the number of occurrences rather than capped at a particular amount',
)
class OBAccountStatus1Code(Enum):
Deleted = 'Deleted'
Disabled = 'Disabled'
Enabled = 'Enabled'
Pending = 'Pending'
ProForma = 'ProForma'
class OBActiveCurrencyAndAmountSimpleType(
RootModel[constr(pattern=r'^\d{1,13}$|^\d{1,13}\.\d{1,5}$')]
):
root: constr(pattern=r'^\d{1,13}$|^\d{1,13}\.\d{1,5}$') = Field(
...,
description='A number of monetary units specified in an active currency where the unit of currency is explicit and compliant with ISO 4217.',
)
class OBActiveOrHistoricCurrencyAndAmount0(BaseModel):
Amount: OBActiveCurrencyAndAmountSimpleType
Currency: ActiveOrHistoricCurrencyCode1
class OBActiveOrHistoricCurrencyAndAmount1(BaseModel):
Amount: OBActiveCurrencyAndAmountSimpleType
Currency: ActiveOrHistoricCurrencyCode1
class OBActiveOrHistoricCurrencyAndAmount10(BaseModel):
Amount: OBActiveCurrencyAndAmountSimpleType
Currency: ActiveOrHistoricCurrencyCode1
class OBActiveOrHistoricCurrencyAndAmount11(BaseModel):
Amount: OBActiveCurrencyAndAmountSimpleType
Currency: ActiveOrHistoricCurrencyCode1
class OBActiveOrHistoricCurrencyAndAmount2(BaseModel):
Amount: OBActiveCurrencyAndAmountSimpleType
Currency: ActiveOrHistoricCurrencyCode1
class OBActiveOrHistoricCurrencyAndAmount3(BaseModel):
Amount: OBActiveCurrencyAndAmountSimpleType
Currency: ActiveOrHistoricCurrencyCode1
class OBActiveOrHistoricCurrencyAndAmount4(BaseModel):
Amount: OBActiveCurrencyAndAmountSimpleType
Currency: ActiveOrHistoricCurrencyCode1
class OBActiveOrHistoricCurrencyAndAmount5(BaseModel):
Amount: OBActiveCurrencyAndAmountSimpleType
Currency: ActiveOrHistoricCurrencyCode1
class OBActiveOrHistoricCurrencyAndAmount6(BaseModel):
Amount: OBActiveCurrencyAndAmountSimpleType
Currency: ActiveOrHistoricCurrencyCode1
class OBActiveOrHistoricCurrencyAndAmount7(BaseModel):
Amount: OBActiveCurrencyAndAmountSimpleType
Currency: ActiveOrHistoricCurrencyCode1
class OBActiveOrHistoricCurrencyAndAmount8(BaseModel):
Amount: OBActiveCurrencyAndAmountSimpleType
Currency: ActiveOrHistoricCurrencyCode1
class OBActiveOrHistoricCurrencyAndAmount9(BaseModel):
Amount: OBActiveCurrencyAndAmountSimpleType
Currency: ActiveOrHistoricCurrencyCode1
class OBAddressTypeCode(Enum):
Business = 'Business'
Correspondence = 'Correspondence'
DeliveryTo = 'DeliveryTo'
MailTo = 'MailTo'
POBox = 'POBox'
Postal = 'Postal'
Residential = 'Residential'
Statement = 'Statement'
class CalculationMethod(Enum):
Compound = 'Compound'
SimpleInterest = 'SimpleInterest'
class Destination(Enum):
PayAway = 'PayAway'
SelfCredit = 'SelfCredit'
class ApplicationFrequency(Enum):
Daily = 'Daily'
HalfYearly = 'HalfYearly'
Monthly = 'Monthly'
Other = 'Other'
Quarterly = 'Quarterly'
PerStatementDate = 'PerStatementDate'
Weekly = 'Weekly'
Yearly = 'Yearly'
class BankInterestRateType(Enum):
Gross = 'Gross'
Other = 'Other'
class CalculationFrequency(Enum):
Daily = 'Daily'
HalfYearly = 'HalfYearly'
Monthly = 'Monthly'
Other = 'Other'
Quarterly = 'Quarterly'
PerStatementDate = 'PerStatementDate'
Weekly = 'Weekly'
Yearly = 'Yearly'
class DepositInterestAppliedCoverage(Enum):
Banded = 'Banded'
Tiered = 'Tiered'
Whole = 'Whole'
class FixedVariableInterestRateType(Enum):
Fixed = 'Fixed'
Variable = 'Variable'
class OtherApplicationFrequency(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Code: Optional[constr(pattern=r'^\w{0,4}$', min_length=0, max_length=4)] = Field(
None,
description='The four letter Mnemonic used within an XML file to identify a code',
title='Code',
)
Description: constr(min_length=1, max_length=350) = Field(
...,
description='Description to describe the purpose of the code',
title='Description',
)
Name: constr(min_length=1, max_length=70) = Field(
..., description='Long name associated with the code', title='Name'
)
class OtherBankInterestType(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Code: Optional[constr(pattern=r'^\w{0,4}$', min_length=0, max_length=4)] = Field(
None,
description='The four letter Mnemonic used within an XML file to identify a code',
title='Code',
)
Description: constr(min_length=1, max_length=350) = Field(
...,
description='Description to describe the purpose of the code',
title='Description',
)
Name: constr(min_length=1, max_length=70) = Field(
..., description='Long name associated with the code', title='Name'
)
class OtherCalculationFrequency(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Code: Optional[constr(pattern=r'^\w{0,4}$', min_length=0, max_length=4)] = Field(
None,
description='The four letter Mnemonic used within an XML file to identify a code',
title='Code',
)
Description: constr(min_length=1, max_length=350) = Field(
...,
description='Description to describe the purpose of the code',
title='Description',
)
Name: constr(min_length=1, max_length=70) = Field(
..., description='Long name associated with the code', title='Name'
)
class TierBandItem(BaseModel):
AER: constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$') = Field(
...,
description='The annual equivalent rate (AER) is interest that is calculated under the assumption that any interest paid is combined with the original balance and the next interest payment will be based on the slightly higher account balance. Overall, this means that interest can be compounded several times in a year depending on the number of times that interest payments are made. \n\nRead more: Annual Equivalent Rate (AER) http://www.investopedia.com/terms/a/aer.asp#ixzz4gfR7IO1A',
title='AER',
)
ApplicationFrequency_1: ApplicationFrequency = Field(
...,
alias='ApplicationFrequency',
description="How often is interest applied to the BCA for this tier/band i.e. how often the financial institution pays accumulated interest to the customer's BCA.",
title='ApplicationFrequency',
)
BankInterestRate: Optional[constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='Bank Interest for the BCA product',
title='BankInterestRate',
)
)
BankInterestRateType_1: Optional[BankInterestRateType] = Field(
None,
alias='BankInterestRateType',
description='Interest rate types, other than AER, which financial institutions may use to describe the annual interest rate payable to the BCA.',
title='BankInterestRateType',
)
CalculationFrequency_1: Optional[CalculationFrequency] = Field(
None,
alias='CalculationFrequency',
description='How often is credit interest calculated for the account.',
title='CalculationFrequency',
)
DepositInterestAppliedCoverage_1: Optional[DepositInterestAppliedCoverage] = Field(
None,
alias='DepositInterestAppliedCoverage',
description='Amount on which Interest applied.',
title='DepositInterestAppliedCoverage',
)
FixedVariableInterestRateType_1: FixedVariableInterestRateType = Field(
...,
alias='FixedVariableInterestRateType',
description='Type of interest rate, Fixed or Variable',
title='FixedVariableInterestRateType',
)
Identification: Optional[constr(min_length=1, max_length=35)] = Field(
None,
description='Unique and unambiguous identification of a Tier Band for a BCA.',
title='Identification',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None,
description='Optional additional notes to supplement the Tier Band details',
title='Notes',
)
OtherApplicationFrequency_1: Optional[OtherApplicationFrequency] = Field(
None,
alias='OtherApplicationFrequency',
description='Other application frequencies that are not available in the standard code list',
title='OtherApplicationFrequency',
)
OtherBankInterestType_1: Optional[OtherBankInterestType] = Field(
None,
alias='OtherBankInterestType',
description='Other interest rate types which are not available in the standard code list',
title='OtherBankInterestType',
)
OtherCalculationFrequency_1: Optional[OtherCalculationFrequency] = Field(
None,
alias='OtherCalculationFrequency',
description='Other calculation frequency which is not available in the standard code set.',
title='OtherCalculationFrequency',
)
TierValueMaximum: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='Maximum deposit value for which the credit interest tier applies.',
title='TierValueMaximum',
)
)
TierValueMinimum: constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$') = Field(
...,
description='Minimum deposit value for which the credit interest tier applies.',
title='TierValueMinimum',
)
class TierBandMethod(Enum):
Banded = 'Banded'
Tiered = 'Tiered'
Whole = 'Whole'
class TierBandSetItem(BaseModel):
CalculationMethod_1: Optional[CalculationMethod] = Field(
None,
alias='CalculationMethod',
description='Methods of calculating interest',
title='CalculationMethod',
)
Destination_1: Destination = Field(
...,
alias='Destination',
description='Describes whether accrued interest is payable only to the BCA or to another bank account',
title='Destination',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None,
description='Optional additional notes to supplement the Tier Band Set details',
title='Notes',
)
TierBand: List[TierBandItem] = Field(
..., description='Tier Band Details', min_length=1, title='TierBand'
)
TierBandMethod_1: TierBandMethod = Field(
...,
alias='TierBandMethod',
description='The methodology of how credit interest is paid/applied. It can be:-\n\n1. Banded\nInterest rates are banded. i.e. Increasing rate on whole balance as balance increases.\n\n2. Tiered\nInterest rates are tiered. i.e. increasing rate for each tier as balance increases, but interest paid on tier fixed for that tier and not on whole balance.\n\n3. Whole\nThe same interest rate is applied irrespective of the BCA balance',
title='TierBandMethod',
)
class CreditInterest(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
TierBandSet: List[TierBandSetItem] = Field(
...,
description='The group of tiers or bands for which credit interest can be applied.',
min_length=1,
title='TierBandSet',
)
class CappingPeriod(Enum):
Day = 'Day'
Half_Year = 'Half Year'
Month = 'Month'
Quarter = 'Quarter'
Week = 'Week'
Year = 'Year'
class FeeTypeEnum(Enum):
Other = 'Other'
ServiceCAccountFee = 'ServiceCAccountFee'
ServiceCAccountFeeMonthly = 'ServiceCAccountFeeMonthly'
ServiceCAccountFeeQuarterly = 'ServiceCAccountFeeQuarterly'
ServiceCFixedTariff = 'ServiceCFixedTariff'
ServiceCBusiDepAccBreakage = 'ServiceCBusiDepAccBreakage'
ServiceCMinimumMonthlyFee = 'ServiceCMinimumMonthlyFee'
ServiceCOther = 'ServiceCOther'
class MinMaxType(Enum):
Minimum = 'Minimum'
Maximum = 'Maximum'
class OtherFeeTypeItem(BaseModel):
Code: Optional[constr(pattern=r'^\w{0,4}$', min_length=0, max_length=4)] = Field(
None,
description='The four letter Mnemonic used within an XML file to identify a code',
title='Code',
)
Description: constr(min_length=1, max_length=350) = Field(
...,
description='Description to describe the purpose of the code',
title='Description',
)
Name: constr(min_length=1, max_length=70) = Field(
..., description='Long name associated with the code', title='Name'
)
class FeeChargeCapItem(BaseModel):
CappingPeriod_1: Optional[CappingPeriod] = Field(
None,
alias='CappingPeriod',
description='Period e.g. day, week, month etc. for which the fee/charge is capped',
title='CappingPeriod',
)
FeeCapAmount: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='Cap amount charged for a fee/charge (where it is charged in terms of an amount rather than a rate)',
title='FeeCapAmount',
)
)
FeeCapOccurrence: Optional[float] = Field(
None,
description='fee/charges are captured dependent on the number of occurrences rather than capped at a particular amount',
title='FeeCapOccurrence',
)
FeeType: List[FeeTypeEnum] = Field(
...,
description='Fee/charge type which is being capped',
min_length=1,
title='FeeType',
)
MinMaxType_1: MinMaxType = Field(
..., alias='MinMaxType', description='Min Max type', title='MinMaxType'
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None,
description='Free text for adding extra details for fee charge cap',
title='Notes',
)
OtherFeeType: Optional[List[OtherFeeTypeItem]] = Field(
None,
description='Other fee type code which is not available in the standard code set',
title='OtherFeeType',
)
class ApplicationFrequency1(Enum):
OnClosing = 'OnClosing'
OnOpening = 'OnOpening'
ChargingPeriod = 'ChargingPeriod'
Daily = 'Daily'
PerItem = 'PerItem'
Monthly = 'Monthly'
OnAnniversary = 'OnAnniversary'
Other = 'Other'
PerHundredPounds = 'PerHundredPounds'
PerHour = 'PerHour'
PerOccurrence = 'PerOccurrence'
PerSheet = 'PerSheet'
PerTransaction = 'PerTransaction'
PerTransactionAmount = 'PerTransactionAmount'
PerTransactionPercentage = 'PerTransactionPercentage'
Quarterly = 'Quarterly'
SixMonthly = 'SixMonthly'
StatementMonthly = 'StatementMonthly'
Weekly = 'Weekly'
Yearly = 'Yearly'
class CalculationFrequency1(Enum):
OnClosing = 'OnClosing'
OnOpening = 'OnOpening'
ChargingPeriod = 'ChargingPeriod'
Daily = 'Daily'
PerItem = 'PerItem'
Monthly = 'Monthly'
OnAnniversary = 'OnAnniversary'
Other = 'Other'
PerHundredPounds = 'PerHundredPounds'
PerHour = 'PerHour'
PerOccurrence = 'PerOccurrence'
PerSheet = 'PerSheet'
PerTransaction = 'PerTransaction'
PerTransactionAmount = 'PerTransactionAmount'
PerTransactionPercentage = 'PerTransactionPercentage'
Quarterly = 'Quarterly'
SixMonthly = 'SixMonthly'
StatementMonthly = 'StatementMonthly'
Weekly = 'Weekly'
Yearly = 'Yearly'
class FeeApplicableRange(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
MaximumAmount: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='Maximum Amount on which fee is applicable (where it is expressed as an amount)',
title='MaximumAmount',
)
)
MaximumRate: Optional[constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$')] = Field(
None,
description='Maximum rate on which fee/charge is applicable(where it is expressed as an rate)',
title='MaximumRate',
)
MinimumAmount: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='Minimum Amount on which fee/charge is applicable (where it is expressed as an amount)',
title='MinimumAmount',
)
)
MinimumRate: Optional[constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$')] = Field(
None,
description='Minimum rate on which fee/charge is applicable(where it is expressed as an rate)',
title='MinimumRate',
)
class FeeCategory(Enum):
Other = 'Other'
Servicing = 'Servicing'
class FeeChargeCapItem1(BaseModel):
CappingPeriod_1: Optional[CappingPeriod] = Field(
None,
alias='CappingPeriod',
description='Period e.g. day, week, month etc. for which the fee/charge is capped',
title='CappingPeriod',
)
FeeCapAmount: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='Cap amount charged for a fee/charge (where it is charged in terms of an amount rather than a rate)',
title='FeeCapAmount',
)
)
FeeCapOccurrence: Optional[float] = Field(
None,
description='fee/charges are captured dependent on the number of occurrences rather than capped at a particular amount',
title='FeeCapOccurrence',
)
FeeType: List[FeeTypeEnum] = Field(
...,
description='Fee/charge type which is being capped',
min_length=1,
title='FeeType',
)
MinMaxType_1: MinMaxType = Field(
..., alias='MinMaxType', description='Min Max type', title='MinMaxType'
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None,
description='Free text for adding extra details for fee charge cap',
title='Notes',
)
OtherFeeType: Optional[List[OtherFeeTypeItem]] = Field(
None,
description='Other fee type code which is not available in the standard code set',
title='OtherFeeType',
)
class FeeRateType(Enum):
Gross = 'Gross'
Other = 'Other'
class FeeType(Enum):
Other = 'Other'
ServiceCAccountFee = 'ServiceCAccountFee'
ServiceCAccountFeeMonthly = 'ServiceCAccountFeeMonthly'
ServiceCAccountFeeQuarterly = 'ServiceCAccountFeeQuarterly'
ServiceCFixedTariff = 'ServiceCFixedTariff'
ServiceCBusiDepAccBreakage = 'ServiceCBusiDepAccBreakage'
ServiceCMinimumMonthlyFee = 'ServiceCMinimumMonthlyFee'
ServiceCOther = 'ServiceCOther'
class OtherFeeCategoryType(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Code: Optional[constr(pattern=r'^\w{0,4}$', min_length=0, max_length=4)] = Field(
None,
description='The four letter Mnemonic used within an XML file to identify a code',
title='Code',
)
Description: constr(min_length=1, max_length=350) = Field(
...,
description='Description to describe the purpose of the code',
title='Description',
)
Name: constr(min_length=1, max_length=70) = Field(
..., description='Long name associated with the code', title='Name'
)
class OtherFeeRateType(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Code: Optional[constr(pattern=r'^\w{0,4}$', min_length=0, max_length=4)] = Field(
None,
description='The four letter Mnemonic used within an XML file to identify a code',
title='Code',
)
Description: constr(min_length=1, max_length=350) = Field(
...,
description='Description to describe the purpose of the code',
title='Description',
)
Name: constr(min_length=1, max_length=70) = Field(
..., description='Long name associated with the code', title='Name'
)
class OtherFeeType(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Code: Optional[constr(pattern=r'^\w{0,4}$', min_length=0, max_length=4)] = Field(
None,
description='The four letter Mnemonic used within an XML file to identify a code',
title='Code',
)
Description: constr(min_length=1, max_length=350) = Field(
...,
description='Description to describe the purpose of the code',
title='Description',
)
FeeCategory_1: FeeCategory = Field(
...,
alias='FeeCategory',
description='Categorisation of fees and charges into standard categories.',
title='FeeCategory',
)
Name: constr(min_length=1, max_length=70) = Field(
..., description='Long name associated with the code', title='Name'
)
class FeeChargeDetailItem(BaseModel):
ApplicationFrequency: ApplicationFrequency1 = Field(
...,
description='How frequently the fee/charge is applied to the account',
title='ApplicationFrequency',
)
CalculationFrequency: Optional[CalculationFrequency1] = Field(
None,
description='How frequently the fee/charge is calculated',
title='CalculationFrequency',
)
FeeAmount: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = Field(
None,
description='Fee Amount charged for a fee/charge (where it is charged in terms of an amount rather than a rate)',
title='FeeAmount',
)
FeeApplicableRange_1: Optional[FeeApplicableRange] = Field(
None,
alias='FeeApplicableRange',
description='Range or amounts or rates for which the fee/charge applies',
title='FeeApplicableRange',
)
FeeCategory_1: FeeCategory = Field(
...,
alias='FeeCategory',
description='Categorisation of fees and charges into standard categories.',
title='FeeCategory',
)
FeeChargeCap: Optional[List[FeeChargeCapItem1]] = Field(
None,
description='Details about any caps (maximum charges) that apply to a particular or group of fee/charge',
title='FeeChargeCap',
)
FeeRate: Optional[constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$')] = Field(
None,
description='Rate charged for Fee/Charge (where it is charged in terms of a rate rather than an amount)',
title='FeeRate',
)
FeeRateType_1: Optional[FeeRateType] = Field(
None,
alias='FeeRateType',
description='Rate type for Fee/Charge (where it is charged in terms of a rate rather than an amount)',
title='FeeRateType',
)
FeeType_1: FeeType = Field(
..., alias='FeeType', description='Fee/Charge Type', title='FeeType'
)
NegotiableIndicator: Optional[bool] = Field(
None,
description='Fee/charge which is usually negotiable rather than a fixed amount',
title='NegotiableIndicator',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None,
description='Optional additional notes to supplement the fee/charge details.',
title='Notes',
)
OtherApplicationFrequency_1: Optional[OtherApplicationFrequency] = Field(
None,
alias='OtherApplicationFrequency',
description='Other application frequencies not covered in the standard code list',
title='OtherApplicationFrequency',
)
OtherCalculationFrequency_1: Optional[OtherCalculationFrequency] = Field(
None,
alias='OtherCalculationFrequency',
description='Other calculation frequency which is not available in standard code set.',
title='OtherCalculationFrequency',
)
OtherFeeCategoryType_1: Optional[OtherFeeCategoryType] = Field(
None, alias='OtherFeeCategoryType', title='OtherFeeCategoryType'
)
OtherFeeRateType_1: Optional[OtherFeeRateType] = Field(
None,
alias='OtherFeeRateType',
description='Other fee rate type which is not available in the standard code set',
title='OtherFeeRateType',
)
OtherFeeType_1: Optional[OtherFeeType] = Field(
None,
alias='OtherFeeType',
description='Other Fee/charge type which is not available in the standard code set',
title='OtherFeeType',
)
class OtherTariffType(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Code: Optional[constr(pattern=r'^\w{0,4}$', min_length=0, max_length=4)] = Field(
None,
description='The four letter Mnemonic used within an XML file to identify a code',
title='Code',
)
Description: constr(min_length=1, max_length=350) = Field(
...,
description='Description to describe the purpose of the code',
title='Description',
)
Name: constr(min_length=1, max_length=70) = Field(
..., description='Long name associated with the code', title='Name'
)
class TariffType(Enum):
Electronic = 'Electronic'
Mixed = 'Mixed'
Other = 'Other'
class OtherFeesCharge(BaseModel):
FeeChargeCap: Optional[List[FeeChargeCapItem]] = Field(
None,
description='Details about any caps (maximum charges) that apply to a particular or group of fee/charge',
title='FeeChargeCap',
)
FeeChargeDetail: List[FeeChargeDetailItem] = Field(
...,
description='Other fees/charges details',
min_length=1,
title='FeeChargeDetail',
)
OtherTariffType_1: Optional[OtherTariffType] = Field(
None,
alias='OtherTariffType',
description='Other tariff type which is not in the standard list.',
title='OtherTariffType',
)
TariffName: Optional[constr(min_length=1, max_length=350)] = Field(
None, description='Name of the tariff', title='TariffName'
)
TariffType_1: Optional[TariffType] = Field(
None,
alias='TariffType',
description='TariffType which defines the fee and charges.',
title='TariffType',
)
class FeeTypeEnum2(Enum):
ArrangedOverdraft = 'ArrangedOverdraft'
AnnualReview = 'AnnualReview'
EmergencyBorrowing = 'EmergencyBorrowing'
BorrowingItem = 'BorrowingItem'
OverdraftRenewal = 'OverdraftRenewal'
OverdraftSetup = 'OverdraftSetup'
Surcharge = 'Surcharge'
TempOverdraft = 'TempOverdraft'
UnauthorisedBorrowing = 'UnauthorisedBorrowing'
UnauthorisedPaidTrans = 'UnauthorisedPaidTrans'
Other = 'Other'
UnauthorisedUnpaidTrans = 'UnauthorisedUnpaidTrans'
class OverdraftFeeChargeCapItem(BaseModel):
CappingPeriod_1: Optional[CappingPeriod] = Field(
None,
alias='CappingPeriod',
description='Period e.g. day, week, month etc. for which the fee/charge is capped',
title='CappingPeriod',
)
FeeCapAmount: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='Cap amount charged for a fee/charge',
title='FeeCapAmount',
)
)
FeeCapOccurrence: Optional[float] = Field(
None,
description='Indicates whether the advertised overdraft rate is guaranteed to be offered to a borrower by the bank e.g. if it’s part of a government scheme, or whether the rate may vary dependent on the applicant’s circumstances.',
title='FeeCapOccurrence',
)
FeeType: List[FeeTypeEnum2] = Field(
...,
description='Fee/charge type which is being capped',
min_length=1,
title='FeeType',
)
MinMaxType_1: MinMaxType = Field(
..., alias='MinMaxType', description='Min Max type', title='MinMaxType'
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None, description='Notes related to Overdraft fee charge cap', title='Notes'
)
OtherFeeType: Optional[List[OtherFeeTypeItem]] = Field(
None,
description='Other fee type code which is not available in the standard code set',
title='OtherFeeType',
)
class FeeType1(Enum):
ArrangedOverdraft = 'ArrangedOverdraft'
AnnualReview = 'AnnualReview'
EmergencyBorrowing = 'EmergencyBorrowing'
BorrowingItem = 'BorrowingItem'
OverdraftRenewal = 'OverdraftRenewal'
OverdraftSetup = 'OverdraftSetup'
Surcharge = 'Surcharge'
TempOverdraft = 'TempOverdraft'
UnauthorisedBorrowing = 'UnauthorisedBorrowing'
UnauthorisedPaidTrans = 'UnauthorisedPaidTrans'
Other = 'Other'
UnauthorisedUnpaidTrans = 'UnauthorisedUnpaidTrans'
class OtherFeeType1(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Code: Optional[constr(pattern=r'^\w{0,4}$', min_length=0, max_length=4)] = Field(
None,
description='The four letter Mnemonic used within an XML file to identify a code',
title='Code',
)
Description: constr(min_length=1, max_length=350) = Field(
...,
description='Description to describe the purpose of the code',
title='Description',
)
Name: constr(min_length=1, max_length=70) = Field(
..., description='Long name associated with the code', title='Name'
)
class OverdraftFeeChargeCapItem1(BaseModel):
CappingPeriod_1: Optional[CappingPeriod] = Field(
None,
alias='CappingPeriod',
description='Period e.g. day, week, month etc. for which the fee/charge is capped',
title='CappingPeriod',
)
FeeCapAmount: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='Cap amount charged for a fee/charge',
title='FeeCapAmount',
)
)
FeeCapOccurrence: Optional[float] = Field(
None,
description='Indicates whether the advertised overdraft rate is guaranteed to be offered to a borrower by the bank e.g. if it’s part of a government scheme, or whether the rate may vary dependent on the applicant’s circumstances.',
title='FeeCapOccurrence',
)
FeeType: List[FeeTypeEnum2] = Field(
...,
description='Fee/charge type which is being capped',
min_length=1,
title='FeeType',
)
MinMaxType_1: MinMaxType = Field(
..., alias='MinMaxType', description='Min Max type', title='MinMaxType'
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None, description='Notes related to Overdraft fee charge cap', title='Notes'
)
OtherFeeType: Optional[List[OtherFeeTypeItem]] = Field(
None,
description='Other fee type code which is not available in the standard code set',
title='OtherFeeType',
)
class OverdraftFeeChargeDetailItem(BaseModel):
ApplicationFrequency: ApplicationFrequency1 = Field(
...,
description='Frequency at which the overdraft charge is applied to the account',
title='ApplicationFrequency',
)
CalculationFrequency: Optional[CalculationFrequency1] = Field(
None,
description='How often is the overdraft fee/charge calculated for the account.',
title='CalculationFrequency',
)
FeeAmount: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = Field(
None,
description='Amount charged for an overdraft fee/charge (where it is charged in terms of an amount rather than a rate)',
title='FeeAmount',
)
FeeRate: Optional[constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$')] = Field(
None,
description='Rate charged for overdraft fee/charge (where it is charged in terms of a rate rather than an amount)',
title='FeeRate',
)
FeeRateType_1: Optional[FeeRateType] = Field(
None,
alias='FeeRateType',
description='Rate type for overdraft fee/charge (where it is charged in terms of a rate rather than an amount)',
title='FeeRateType',
)
FeeType: FeeType1 = Field(..., description='Overdraft fee type', title='FeeType')
IncrementalBorrowingAmount: Optional[
constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')
] = Field(
None,
description='Every additional tranche of an overdraft balance to which an overdraft fee is applied',
title='IncrementalBorrowingAmount',
)
NegotiableIndicator: Optional[bool] = Field(
None,
description='Indicates whether fee and charges are negotiable',
title='NegotiableIndicator',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None,
description='Free text for capturing any other info related to Overdraft Fees Charge Details',
title='Notes',
)
OtherApplicationFrequency_1: Optional[OtherApplicationFrequency] = Field(
None,
alias='OtherApplicationFrequency',
description='Other application frequencies that are not available in the standard code list',
title='OtherApplicationFrequency',
)
OtherCalculationFrequency_1: Optional[OtherCalculationFrequency] = Field(
None,
alias='OtherCalculationFrequency',
description='Other calculation frequency which is not available in the standard code set.',
title='OtherCalculationFrequency',
)
OtherFeeRateType_1: Optional[OtherFeeRateType] = Field(
None,
alias='OtherFeeRateType',
description='Other fee rate type code which is not available in the standard code set',
title='OtherFeeRateType',
)
OtherFeeType: Optional[OtherFeeType1] = Field(
None,
description='Other Fee type which is not available in the standard code set',
title='OtherFeeType',
)
OverdraftControlIndicator: Optional[bool] = Field(
None,
description="Indicates if the fee/charge is already covered by an 'Overdraft Control' fee or not.",
title='OverdraftControlIndicator',
)
OverdraftFeeChargeCap: Optional[List[OverdraftFeeChargeCapItem1]] = Field(
None,
description='Details about any caps (maximum charges) that apply to a particular fee/charge. Capping can either be based on an amount (in gbp), an amount (in items) or a rate.',
title='OverdraftFeeChargeCap',
)
class OverdraftFeesCharge(BaseModel):
OverdraftFeeChargeCap: Optional[List[OverdraftFeeChargeCapItem]] = Field(
None,
description='Details about any caps (maximum charges) that apply to a particular fee/charge. Capping can either be based on an amount (in gbp), an amount (in items) or a rate.',
title='OverdraftFeeChargeCap',
)
OverdraftFeeChargeDetail: List[OverdraftFeeChargeDetailItem] = Field(
...,
description='Details about the fees/charges',
min_length=1,
title='OverdraftFeeChargeDetail',
)
class AgreementPeriod(Enum):
Day = 'Day'
Half_Year = 'Half Year'
Month = 'Month'
Quarter = 'Quarter'
Week = 'Week'
Year = 'Year'
class OverdraftFeeChargeCapItem2(BaseModel):
CappingPeriod_1: Optional[CappingPeriod] = Field(
None,
alias='CappingPeriod',
description='Period e.g. day, week, month etc. for which the fee/charge is capped',
title='CappingPeriod',
)
FeeCapAmount: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='Cap amount charged for a fee/charge',
title='FeeCapAmount',
)
)
FeeCapOccurrence: Optional[float] = Field(
None,
description='Indicates whether the advertised overdraft rate is guaranteed to be offered to a borrower by the bank e.g. if it’s part of a government scheme, or whether the rate may vary dependent on the applicant’s circumstances.',
title='FeeCapOccurrence',
)
FeeType: List[FeeTypeEnum2] = Field(
...,
description='Fee/charge type which is being capped',
min_length=1,
title='FeeType',
)
MinMaxType_1: MinMaxType = Field(
..., alias='MinMaxType', description='Min Max type', title='MinMaxType'
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None, description='Notes related to Overdraft fee charge cap', title='Notes'
)
OtherFeeType: Optional[List[OtherFeeTypeItem]] = Field(
None,
description='Other fee type code which is not available in the standard code set',
title='OtherFeeType',
)
class OverdraftFeeChargeCapItem3(BaseModel):
CappingPeriod_1: Optional[CappingPeriod] = Field(
None,
alias='CappingPeriod',
description='Period e.g. day, week, month etc. for which the fee/charge is capped',
title='CappingPeriod',
)
FeeCapAmount: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='Cap amount charged for a fee/charge',
title='FeeCapAmount',
)
)
FeeCapOccurrence: Optional[float] = Field(
None,
description='Indicates whether the advertised overdraft rate is guaranteed to be offered to a borrower by the bank e.g. if it’s part of a government scheme, or whether the rate may vary dependent on the applicant’s circumstances.',
title='FeeCapOccurrence',
)
FeeType: List[FeeTypeEnum2] = Field(
...,
description='Fee/charge type which is being capped',
min_length=1,
title='FeeType',
)
MinMaxType_1: MinMaxType = Field(
..., alias='MinMaxType', description='Min Max type', title='MinMaxType'
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None, description='Notes related to Overdraft fee charge cap', title='Notes'
)
OtherFeeType: Optional[List[OtherFeeTypeItem]] = Field(
None,
description='Other fee type code which is not available in the standard code set',
title='OtherFeeType',
)
class OverdraftFeeChargeDetailItem1(BaseModel):
ApplicationFrequency: ApplicationFrequency1 = Field(
...,
description='Frequency at which the overdraft charge is applied to the account',
title='ApplicationFrequency',
)
CalculationFrequency: Optional[CalculationFrequency1] = Field(
None,
description='How often is the overdraft fee/charge calculated for the account.',
title='CalculationFrequency',
)
FeeAmount: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = Field(
None,
description='Amount charged for an overdraft fee/charge (where it is charged in terms of an amount rather than a rate)',
title='FeeAmount',
)
FeeRate: Optional[constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$')] = Field(
None,
description='Rate charged for overdraft fee/charge (where it is charged in terms of a rate rather than an amount)',
title='FeeRate',
)
FeeRateType_1: Optional[FeeRateType] = Field(
None,
alias='FeeRateType',
description='Rate type for overdraft fee/charge (where it is charged in terms of a rate rather than an amount)',
title='FeeRateType',
)
FeeType: FeeType1 = Field(..., description='Overdraft fee type', title='FeeType')
IncrementalBorrowingAmount: Optional[
constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')
] = Field(
None,
description='Every additional tranche of an overdraft balance to which an overdraft fee is applied',
title='IncrementalBorrowingAmount',
)
NegotiableIndicator: Optional[bool] = Field(
None,
description='Indicates whether fee and charges are negotiable',
title='NegotiableIndicator',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None,
description='Free text for capturing any other info related to Overdraft Fees Charge Details',
title='Notes',
)
OtherApplicationFrequency_1: Optional[OtherApplicationFrequency] = Field(
None,
alias='OtherApplicationFrequency',
description='Other application frequencies that are not available in the standard code list',
title='OtherApplicationFrequency',
)
OtherCalculationFrequency_1: Optional[OtherCalculationFrequency] = Field(
None,
alias='OtherCalculationFrequency',
description='Other calculation frequency which is not available in the standard code set.',
title='OtherCalculationFrequency',
)
OtherFeeRateType_1: Optional[OtherFeeRateType] = Field(
None,
alias='OtherFeeRateType',
description='Other fee rate type code which is not available in the standard code set',
title='OtherFeeRateType',
)
OtherFeeType: Optional[OtherFeeType1] = Field(
None,
description='Other Fee type which is not available in the standard code set',
title='OtherFeeType',
)
OverdraftControlIndicator: Optional[bool] = Field(
None,
description="Indicates if the fee/charge is already covered by an 'Overdraft Control' fee or not.",
title='OverdraftControlIndicator',
)
OverdraftFeeChargeCap: Optional[List[OverdraftFeeChargeCapItem3]] = Field(
None,
description='Details about any caps (maximum charges) that apply to a particular fee/charge. Capping can either be based on an amount (in gbp), an amount (in items) or a rate.',
title='OverdraftFeeChargeCap',
)
class OverdraftFeesCharge1(BaseModel):
OverdraftFeeChargeCap: Optional[List[OverdraftFeeChargeCapItem2]] = Field(
None,
description='Details about any caps (maximum charges) that apply to a particular fee/charge. Capping can either be based on an amount (in gbp), an amount (in items) or a rate.',
title='OverdraftFeeChargeCap',
)
OverdraftFeeChargeDetail: List[OverdraftFeeChargeDetailItem1] = Field(
...,
description='Details about the fees/charges',
min_length=1,
title='OverdraftFeeChargeDetail',
)
class OverdraftInterestChargingCoverage(Enum):
Banded = 'Banded'
Tiered = 'Tiered'
Whole = 'Whole'
class OverdraftTierBandItem(BaseModel):
AgreementLengthMax: Optional[float] = Field(
None,
description='Specifies the maximum length of a band for a fixed overdraft agreement',
title='AgreementLengthMax',
)
AgreementLengthMin: Optional[float] = Field(
None,
description='Specifies the minimum length of a band for a fixed overdraft agreement',
title='AgreementLengthMin',
)
AgreementPeriod_1: Optional[AgreementPeriod] = Field(
None,
alias='AgreementPeriod',
description='Specifies the period of a fixed length overdraft agreement',
title='AgreementPeriod',
)
BankGuaranteedIndicator: Optional[bool] = Field(
None,
description='Indicates whether the advertised overdraft rate is guaranteed to be offered to a borrower by the bank e.g. if it’s part of a government scheme, or whether the rate may vary dependent on the applicant’s circumstances.',
title='BankGuaranteedIndicator',
)
EAR: Optional[constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$')] = Field(
None,
description='EAR means Effective Annual Rate and/or Equivalent Annual Rate (frequently\nused interchangeably), being the actual annual interest rate of an Overdraft.',
title='EAR',
)
Identification: Optional[constr(min_length=1, max_length=35)] = Field(
None,
description='Unique and unambiguous identification of a Tier Band for a overdraft.',
title='Identification',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None,
description='Optional additional notes to supplement the Tier/band details',
title='Notes',
)
OverdraftFeesCharges: Optional[List[OverdraftFeesCharge1]] = Field(
None, description='Overdraft fees and charges', title='OverdraftFeesCharges'
)
OverdraftInterestChargingCoverage_1: Optional[OverdraftInterestChargingCoverage] = (
Field(
None,
alias='OverdraftInterestChargingCoverage',
description='Refers to which interest rate is applied when interests are tiered. For example, if an overdraft balance is £2k and the interest tiers are:- 0-£500 0.1%, 500-1000 0.2%, 1000-10000 0.5%, then the applicable interest rate could either be 0.5% of the entire balance (since the account balance sits in the top interest tier) or (0.1%*500)+(0.2%*500)+(0.5%*1000). In the 1st situation, we say the interest is applied to the ‘Whole’ of the account balance, and in the 2nd that it is ‘Tiered’.',
title='OverdraftInterestChargingCoverage',
)
)
RepresentativeAPR: Optional[constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='An annual percentage rate (APR) is the annual rate charged for borrowing or earned through an investment. APR is expressed as a percentage that represents the actual yearly cost of funds over the term of a loan. This includes any fees or additional costs associated with the transaction but does not take compounding into account.',
title='RepresentativeAPR',
)
)
TierValueMax: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='Maximum value of Overdraft Tier/Band',
title='TierValueMax',
)
)
TierValueMin: constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$') = Field(
..., description='Minimum value of Overdraft Tier/Band', title='TierValueMin'
)
class OverdraftType(Enum):
Committed = 'Committed'
OnDemand = 'OnDemand'
class OverdraftTierBandSetItem(BaseModel):
AuthorisedIndicator: Optional[bool] = Field(
None,
description='Indicates if the Overdraft is authorised (Y) or unauthorised (N)',
title='AuthorisedIndicator',
)
BufferAmount: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='When a customer exceeds their credit limit, a financial institution will not charge the customer unauthorised overdraft charges if they do not exceed by more than the buffer amount. Note: Authorised overdraft charges may still apply.',
title='BufferAmount',
)
)
Identification: Optional[constr(min_length=1, max_length=35)] = Field(
None,
description='Unique and unambiguous identification of a Tier Band for a overdraft product.',
title='Identification',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None,
description='Optional additional notes to supplement the overdraft Tier Band Set details',
title='Notes',
)
OverdraftFeesCharges: Optional[List[OverdraftFeesCharge]] = Field(
None,
description='Overdraft fees and charges details',
title='OverdraftFeesCharges',
)
OverdraftTierBand: List[OverdraftTierBandItem] = Field(
...,
description='Provides overdraft details for a specific tier or band',
min_length=1,
title='OverdraftTierBand',
)
OverdraftType_1: Optional[OverdraftType] = Field(
None,
alias='OverdraftType',
description="An overdraft can either be 'committed' which means that the facility cannot be withdrawn without reasonable notification before it's agreed end date, or 'on demand' which means that the financial institution can demand repayment at any point in time.",
title='OverdraftType',
)
TierBandMethod_1: TierBandMethod = Field(
...,
alias='TierBandMethod',
description="The methodology of how overdraft is charged. It can be:\n'Whole' Where the same charge/rate is applied to the entirety of the overdraft balance (where charges are applicable). \n'Tiered' Where different charges/rates are applied dependent on overdraft maximum and minimum balance amount tiers defined by the lending financial organisation\n'Banded' Where different charges/rates are applied dependent on overdraft maximum and minimum balance amount bands defined by a government organisation.",
title='TierBandMethod',
)
class Overdraft(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None, description='Associated Notes about the overdraft rates', title='Notes'
)
OverdraftTierBandSet: List[OverdraftTierBandSetItem] = Field(
...,
description='Tier band set details',
min_length=1,
title='OverdraftTierBandSet',
)
class FeeFreeLengthPeriod(Enum):
Day = 'Day'
Half_Year = 'Half Year'
Month = 'Month'
Quarter = 'Quarter'
Week = 'Week'
Year = 'Year'
class SegmentEnum(Enum):
ClientAccount = 'ClientAccount'
Standard = 'Standard'
NonCommercialChaitiesClbSoc = 'NonCommercialChaitiesClbSoc'
NonCommercialPublicAuthGovt = 'NonCommercialPublicAuthGovt'
Religious = 'Religious'
SectorSpecific = 'SectorSpecific'
Startup = 'Startup'
Switcher = 'Switcher'
class ProductDetails(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
FeeFreeLength: Optional[float] = Field(
None,
description='The length/duration of the fee free period',
title='FeeFreeLength',
)
FeeFreeLengthPeriod_1: Optional[FeeFreeLengthPeriod] = Field(
None,
alias='FeeFreeLengthPeriod',
description='The unit of period (days, weeks, months etc.) of the promotional length',
title='FeeFreeLengthPeriod',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None,
description='Optional additional notes to supplement the Core product details',
title='Notes',
)
Segment: Optional[List[SegmentEnum]] = Field(
None,
description='Market segmentation is a marketing term referring to the aggregating of prospective buyers into groups, or segments, that have common needs and respond similarly to a marketing action. Market segmentation enables companies to target different categories of consumers who perceive the full value of certain products and services differently from one another.\n\nRead more: Market Segmentation http://www.investopedia.com/terms/m/marketsegmentation.asp#ixzz4gfEEalTd \nWith respect to BCA products, they are segmented in relation to different markets that they wish to focus on. ',
title='Segment',
)
class OBBCAData1(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
CreditInterest_1: Optional[CreditInterest] = Field(
None,
alias='CreditInterest',
description='Details about the interest that may be payable to the BCA account holders',
title='CreditInterest',
)
OtherFeesCharges: Optional[List[OtherFeesCharge]] = Field(
None,
description='Contains details of fees and charges which are not associated with either Overdraft or features/benefits',
title='OtherFeesCharges',
)
Overdraft_1: Optional[Overdraft] = Field(
None, alias='Overdraft', description='Borrowing details', title='Overdraft'
)
ProductDetails_1: Optional[ProductDetails] = Field(
None, alias='ProductDetails', title='ProductDetails'
)
class OBBalanceType1Code(Enum):
ClosingAvailable = 'ClosingAvailable'
ClosingBooked = 'ClosingBooked'
ClosingCleared = 'ClosingCleared'
Expected = 'Expected'
ForwardAvailable = 'ForwardAvailable'
Information = 'Information'
InterimAvailable = 'InterimAvailable'
InterimBooked = 'InterimBooked'
InterimCleared = 'InterimCleared'
OpeningAvailable = 'OpeningAvailable'
OpeningBooked = 'OpeningBooked'
OpeningCleared = 'OpeningCleared'
PreviouslyClosedBooked = 'PreviouslyClosedBooked'
class OBBankTransactionCodeStructure1(BaseModel):
Code: str = Field(..., description='Specifies the family within a domain.')
SubCode: str = Field(
..., description='Specifies the sub-product family within a specific family.'
)
class OBBeneficiaryType1Code(Enum):
Trusted = 'Trusted'
Ordinary = 'Ordinary'
class OBCreditDebitCode0(Enum):
Credit = 'Credit'
Debit = 'Debit'
class OBCreditDebitCode1(Enum):
Credit = 'Credit'
Debit = 'Debit'
class OBCreditDebitCode2(Enum):
Credit = 'Credit'
Debit = 'Debit'
class InstructedAmount(BaseModel):
Amount: OBActiveCurrencyAndAmountSimpleType
Currency: ActiveOrHistoricCurrencyCode1
class OBCurrencyExchange5(BaseModel):
ContractIdentification: Optional[constr(min_length=1, max_length=35)] = Field(
None,
description='Unique identification to unambiguously identify the foreign exchange contract.',
)
ExchangeRate: float = Field(
...,
description='Factor used to convert an amount from one currency into another. This reflects the price at which one currency was bought with another currency.\nUsage: ExchangeRate expresses the ratio between UnitCurrency and QuotedCurrency (ExchangeRate = UnitCurrency/QuotedCurrency).',
)
InstructedAmount_1: Optional[InstructedAmount] = Field(
None,
alias='InstructedAmount',
description='Amount of money to be moved between the debtor and creditor, before deduction of charges, expressed in the currency as ordered by the initiating party.',
)
QuotationDate: Optional[datetime] = Field(
None,
description='Date and time at which an exchange rate is quoted.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',
)
SourceCurrency: constr(pattern=r'^[A-Z]{3,3}$') = Field(
...,
description='Currency from which an amount is to be converted in a currency conversion.',
)
TargetCurrency: Optional[constr(pattern=r'^[A-Z]{3,3}$')] = Field(
None,
description='Currency into which an amount is to be converted in a currency conversion.',
)
UnitCurrency: Optional[constr(pattern=r'^[A-Z]{3,3}$')] = Field(
None,
description='Currency in which the rate of exchange is expressed in a currency exchange. In the example 1GBP = xxxCUR, the unit currency is GBP.',
)
class OBEntryStatus1Code(Enum):
Booked = 'Booked'
Pending = 'Pending'
class OBError1(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
ErrorCode: str = Field(
..., description='Low level textual error code, e.g., UK.OBIE.Field.Missing'
)
Message: constr(min_length=1, max_length=500) = Field(
...,
description="A description of the error that occurred. e.g., 'A mandatory field isn't supplied' or 'RequestedExecutionDateTime must be in future'\nOBIE doesn't standardise this field",
)
Path: Optional[constr(min_length=1, max_length=500)] = Field(
None,
description='Recommended but optional reference to the JSON Path of the field with error, e.g., Data.Initiation.InstructedAmount.Currency',
)
Url: Optional[str] = Field(
None,
description='URL to help remediate the problem, or provide more information, or to API Reference, or help etc',
)
class OBErrorResponse1(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Code: constr(min_length=1, max_length=40) = Field(
..., description='High level textual error code, to help categorize the errors.'
)
Errors: List[OBError1] = Field(..., min_length=1)
Id: Optional[constr(min_length=1, max_length=40)] = Field(
None,
description='A unique reference for the error instance, for audit purposes, in case of unknown/unclassified errors.',
)
Message: constr(min_length=1, max_length=500) = Field(
...,
description="Brief Error message, e.g., 'There is something wrong with the request parameters provided'",
)
class OBExternalAccountIdentification4Code(RootModel[str]):
root: str = Field(
...,
description='Name of the identification scheme, in a coded form as published in an external list.',
)
class OBExternalAccountRole1Code(RootModel[str]):
root: str = Field(
..., description='A party’s role with respect to the related account.'
)
class OBExternalAccountSubType1Code(Enum):
ChargeCard = 'ChargeCard'
CreditCard = 'CreditCard'
CurrentAccount = 'CurrentAccount'
EMoney = 'EMoney'
Loan = 'Loan'
Mortgage = 'Mortgage'
PrePaidCard = 'PrePaidCard'
Savings = 'Savings'
class OBExternalAccountType1Code(Enum):
Business = 'Business'
Personal = 'Personal'
class OBExternalDirectDebitStatus1Code(Enum):
Active = 'Active'
Inactive = 'Inactive'
class OBExternalFinancialInstitutionIdentification4Code(RootModel[str]):
root: str = Field(
...,
description='Name of the identification scheme, in a coded form as published in an external list.',
)
class OBExternalLegalStructureType1Code(RootModel[str]):
root: str = Field(..., description='Legal standing of the party.')
class OBExternalPartyType1Code(Enum):
Delegate = 'Delegate'
Joint = 'Joint'
Sole = 'Sole'
class OBExternalScheduleType1Code(Enum):
Arrival = 'Arrival'
Execution = 'Execution'
class OBExternalStandingOrderStatus1Code(Enum):
Active = 'Active'
Inactive = 'Inactive'
class OBExternalStatementAmountType1Code(RootModel[str]):
root: str = Field(..., description='Amount type, in a coded form.')
class OBExternalStatementBenefitType1Code(RootModel[str]):
root: str = Field(..., description='Benefit type, in a coded form.')
class OBExternalStatementDateTimeType1Code(RootModel[str]):
root: str = Field(..., description='Date time type, in a coded form.')
class OBExternalStatementFeeFrequency1Code(RootModel[str]):
root: str = Field(
..., description='How frequently the fee is applied to the Account.'
)
class OBExternalStatementFeeRateType1Code(RootModel[str]):
root: str = Field(
...,
description='Description that may be available for the statement fee rate type.',
)
class OBExternalStatementFeeType1Code(RootModel[str]):
root: str = Field(..., description='Fee type, in a coded form.')
class OBExternalStatementInterestFrequency1Code(RootModel[str]):
root: str = Field(..., description='Specifies the statement fee type requested')
class OBExternalStatementInterestRateType1Code(RootModel[str]):
root: str = Field(
...,
description='Description that may be available for the statement Interest rate type.',
)
class OBExternalStatementInterestType1Code(RootModel[str]):
root: str = Field(..., description='Interest amount type, in a coded form.')
class OBExternalStatementRateType1Code(RootModel[str]):
root: str = Field(..., description='Statement rate type, in a coded form.')
class OBExternalStatementType1Code(Enum):
AccountClosure = 'AccountClosure'
AccountOpening = 'AccountOpening'
Annual = 'Annual'
Interim = 'Interim'
RegularPeriodic = 'RegularPeriodic'
class OBExternalStatementValueType1Code(RootModel[str]):
root: str = Field(..., description='Statement value type, in a coded form.')
class OBExternalSwitchStatusCode(RootModel[str]):
root: str = Field(
..., description='Specifies the switch status for the account, in a coded form.'
)
class OBMerchantDetails1(BaseModel):
MerchantCategoryCode: Optional[constr(min_length=3, max_length=4)] = Field(
None,
description='Category code conform to ISO 18245, related to the type of services or goods the merchant provides for the transaction.',
)
MerchantName: Optional[constr(min_length=1, max_length=350)] = Field(
None, description='Name by which the merchant is known.'
)
class ApplicationFrequency4(Enum):
PerAcademicTerm = 'PerAcademicTerm'
Daily = 'Daily'
HalfYearly = 'HalfYearly'
Monthly = 'Monthly'
Other = 'Other'
Quarterly = 'Quarterly'
PerStatementDate = 'PerStatementDate'
Weekly = 'Weekly'
Yearly = 'Yearly'
class BankInterestRateType1(Enum):
LinkedBaseRate = 'LinkedBaseRate'
Gross = 'Gross'
Net = 'Net'
Other = 'Other'
class CalculationFrequency4(Enum):
PerAcademicTerm = 'PerAcademicTerm'
Daily = 'Daily'
HalfYearly = 'HalfYearly'
Monthly = 'Monthly'
Other = 'Other'
Quarterly = 'Quarterly'
PerStatementDate = 'PerStatementDate'
Weekly = 'Weekly'
Yearly = 'Yearly'
class DepositInterestAppliedCoverage1(Enum):
Tiered = 'Tiered'
Whole = 'Whole'
class TierBandItem1(BaseModel):
AER: constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$') = Field(
...,
description='The annual equivalent rate (AER) is interest that is calculated under the assumption that any interest paid is combined with the original balance and the next interest payment will be based on the slightly higher account balance. Overall, this means that interest can be compounded several times in a year depending on the number of times that interest payments are made. \n\nRead more: Annual Equivalent Rate (AER) http://www.investopedia.com/terms/a/aer.asp#ixzz4gfR7IO1A',
title='AER',
)
ApplicationFrequency: ApplicationFrequency4 = Field(
...,
description="How often is interest applied to the PCA for this tier/band i.e. how often the financial institution pays accumulated interest to the customer's PCA.",
title='ApplicationFrequency',
)
BankInterestRate: Optional[constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='Bank Interest for the PCA product',
title='BankInterestRate',
)
)
BankInterestRateType: Optional[BankInterestRateType1] = Field(
None,
description='Interest rate types, other than AER, which financial institutions may use to describe the annual interest rate payable to the PCA.',
title='BankInterestRateType',
)
CalculationFrequency: Optional[CalculationFrequency4] = Field(
None,
description='How often is credit interest calculated for the account.',
title='CalculationFrequency',
)
DepositInterestAppliedCoverage: Optional[DepositInterestAppliedCoverage1] = Field(
None,
description='Amount on which Interest applied.',
title='DepositInterestAppliedCoverage',
)
FixedVariableInterestRateType_1: FixedVariableInterestRateType = Field(
...,
alias='FixedVariableInterestRateType',
description='Type of interest rate, Fixed or Variable',
title='FixedVariableInterestRateType',
)
Identification: Optional[constr(min_length=1, max_length=35)] = Field(
None,
description='Unique and unambiguous identification of a Tier Band for a PCA.',
title='Identification',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None,
description='Optional additional notes to supplement the Tier Band details',
title='Notes',
)
OtherApplicationFrequency_1: Optional[OtherApplicationFrequency] = Field(
None,
alias='OtherApplicationFrequency',
description='Other application frequencies that are not available in the standard code list',
title='OtherApplicationFrequency',
)
OtherBankInterestType_1: Optional[OtherBankInterestType] = Field(
None,
alias='OtherBankInterestType',
description='Other interest rate types which are not available in the standard code list',
title='OtherBankInterestType',
)
OtherCalculationFrequency_1: Optional[OtherCalculationFrequency] = Field(
None,
alias='OtherCalculationFrequency',
description='Other calculation frequency which is not available in the standard code set.',
title='OtherCalculationFrequency',
)
TierValueMaximum: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='Maximum deposit value for which the credit interest tier applies.',
title='TierValueMaximum',
)
)
TierValueMinimum: constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$') = Field(
...,
description='Minimum deposit value for which the credit interest tier applies.',
title='TierValueMinimum',
)
class TierBandMethod2(Enum):
Tiered = 'Tiered'
Whole = 'Whole'
class TierBandSetItem1(BaseModel):
CalculationMethod_1: Optional[CalculationMethod] = Field(
None,
alias='CalculationMethod',
description='Methods of calculating interest',
title='CalculationMethod',
)
Destination_1: Optional[Destination] = Field(
None,
alias='Destination',
description='Describes whether accrued interest is payable only to the PCA or to another bank account',
title='Destination',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None,
description='Optional additional notes to supplement the Tier Band Set details',
title='Notes',
)
TierBand: List[TierBandItem1] = Field(
..., description='Tier Band Details', min_length=1, title='TierBand'
)
TierBandMethod: TierBandMethod2 = Field(
...,
description='The methodology of how credit interest is charged. It can be:-\n\n1. Banded\nInterest rates are banded. i.e. Increasing rate on whole balance as balance increases.\n\n2. Tiered\nInterest rates are tiered. i.e. increasing rate for each tier as balance increases, but interest paid on tier fixed for that tier and not on whole balance.\n\n3. Whole\nThe same interest rate is applied irrespective of the PCA balance',
title='TierBandMethod',
)
class CreditInterest1(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
TierBandSet: List[TierBandSetItem1] = Field(
...,
description='The group of tiers or bands for which credit interest can be applied.',
min_length=1,
title='TierBandSet',
)
class CappingPeriod6(Enum):
AcademicTerm = 'AcademicTerm'
Day = 'Day'
Half_Year = 'Half Year'
Month = 'Month'
Quarter = 'Quarter'
Week = 'Week'
Year = 'Year'
class FeeTypeEnum6(Enum):
ServiceCAccountFee = 'ServiceCAccountFee'
ServiceCAccountFeeMonthly = 'ServiceCAccountFeeMonthly'
ServiceCOther = 'ServiceCOther'
Other = 'Other'
class FeeChargeCapItem2(BaseModel):
CappingPeriod: Optional[CappingPeriod6] = Field(
None,
description='Period e.g. day, week, month etc. for which the fee/charge is capped',
title='CappingPeriod',
)
FeeCapAmount: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='Cap amount charged for a fee/charge (where it is charged in terms of an amount rather than a rate)',
title='FeeCapAmount',
)
)
FeeCapOccurrence: Optional[float] = Field(
None,
description='fee/charges are captured dependent on the number of occurrences rather than capped at a particular amount',
title='FeeCapOccurrence',
)
FeeType: List[FeeTypeEnum6] = Field(
...,
description='Fee/charge type which is being capped',
min_length=1,
title='FeeType',
)
MinMaxType_1: MinMaxType = Field(
...,
alias='MinMaxType',
description='Indicates that this is the minimum/ maximum fee/charge that can be applied by the financial institution',
title='MinMaxType',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None,
description='Free text for adding extra details for fee charge cap',
title='Notes',
)
OtherFeeType: Optional[List[OtherFeeTypeItem]] = Field(
None,
description='Other fee type code which is not available in the standard code set',
title='OtherFeeType',
)
class ApplicationFrequency5(Enum):
AccountClosing = 'AccountClosing'
AccountOpening = 'AccountOpening'
AcademicTerm = 'AcademicTerm'
ChargingPeriod = 'ChargingPeriod'
Daily = 'Daily'
PerItem = 'PerItem'
Monthly = 'Monthly'
OnAccountAnniversary = 'OnAccountAnniversary'
Other = 'Other'
PerHour = 'PerHour'
PerOccurrence = 'PerOccurrence'
PerSheet = 'PerSheet'
PerTransaction = 'PerTransaction'
PerTransactionAmount = 'PerTransactionAmount'
PerTransactionPercentage = 'PerTransactionPercentage'
Quarterly = 'Quarterly'
SixMonthly = 'SixMonthly'
StatementMonthly = 'StatementMonthly'
Weekly = 'Weekly'
Yearly = 'Yearly'
class CalculationFrequency5(Enum):
AccountClosing = 'AccountClosing'
AccountOpening = 'AccountOpening'
AcademicTerm = 'AcademicTerm'
ChargingPeriod = 'ChargingPeriod'
Daily = 'Daily'
PerItem = 'PerItem'
Monthly = 'Monthly'
OnAccountAnniversary = 'OnAccountAnniversary'
Other = 'Other'
PerHour = 'PerHour'
PerOccurrence = 'PerOccurrence'
PerSheet = 'PerSheet'
PerTransaction = 'PerTransaction'
PerTransactionAmount = 'PerTransactionAmount'
PerTransactionPercentage = 'PerTransactionPercentage'
Quarterly = 'Quarterly'
SixMonthly = 'SixMonthly'
StatementMonthly = 'StatementMonthly'
Weekly = 'Weekly'
Yearly = 'Yearly'
class FeeChargeCapItem3(BaseModel):
CappingPeriod: Optional[CappingPeriod6] = Field(
None,
description='Period e.g. day, week, month etc. for which the fee/charge is capped',
title='CappingPeriod',
)
FeeCapAmount: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='Cap amount charged for a fee/charge (where it is charged in terms of an amount rather than a rate)',
title='FeeCapAmount',
)
)
FeeCapOccurrence: Optional[float] = Field(
None,
description='fee/charges are captured dependent on the number of occurrences rather than capped at a particular amount',
title='FeeCapOccurrence',
)
FeeType: List[FeeTypeEnum6] = Field(
...,
description='Fee/charge type which is being capped',
min_length=1,
title='FeeType',
)
MinMaxType_1: MinMaxType = Field(
...,
alias='MinMaxType',
description='Indicates that this is the minimum/ maximum fee/charge that can be applied by the financial institution',
title='MinMaxType',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None,
description='Free text for adding extra details for fee charge cap',
title='Notes',
)
OtherFeeType: Optional[List[OtherFeeTypeItem]] = Field(
None,
description='Other fee type code which is not available in the standard code set',
title='OtherFeeType',
)
class FeeRateType3(Enum):
LinkedBaseRate = 'LinkedBaseRate'
Gross = 'Gross'
Net = 'Net'
Other = 'Other'
class FeeType3(Enum):
ServiceCAccountFee = 'ServiceCAccountFee'
ServiceCAccountFeeMonthly = 'ServiceCAccountFeeMonthly'
ServiceCOther = 'ServiceCOther'
Other = 'Other'
class OtherFeeType3(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Code: Optional[constr(pattern=r'^\w{0,4}$', min_length=0, max_length=4)] = Field(
None,
description='The four letter Mnemonic used within an XML file to identify a code',
title='Code',
)
Description: constr(min_length=1, max_length=350) = Field(
...,
description='Description to describe the purpose of the code',
title='Description',
)
FeeCategory_1: FeeCategory = Field(
...,
alias='FeeCategory',
description='Categorisation of fees and charges into standard categories.',
title='FeeCategory',
)
Name: constr(min_length=1, max_length=70) = Field(
..., description='Long name associated with the code', title='Name'
)
class FeeChargeDetailItem1(BaseModel):
ApplicationFrequency: ApplicationFrequency5 = Field(
...,
description='How frequently the fee/charge is applied to the account',
title='ApplicationFrequency',
)
CalculationFrequency: Optional[CalculationFrequency5] = Field(
None,
description='How frequently the fee/charge is calculated',
title='CalculationFrequency',
)
FeeAmount: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = Field(
None,
description='Fee Amount charged for a fee/charge (where it is charged in terms of an amount rather than a rate)',
title='FeeAmount',
)
FeeApplicableRange_1: Optional[FeeApplicableRange] = Field(
None,
alias='FeeApplicableRange',
description='Range or amounts or rates for which the fee/charge applies',
title='FeeApplicableRange',
)
FeeCategory_1: FeeCategory = Field(
...,
alias='FeeCategory',
description='Categorisation of fees and charges into standard categories.',
title='FeeCategory',
)
FeeChargeCap: Optional[List[FeeChargeCapItem3]] = Field(
None,
description='Details about any caps (maximum charges) that apply to a particular fee/charge',
title='FeeChargeCap',
)
FeeRate: Optional[constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$')] = Field(
None,
description='Rate charged for Fee/Charge (where it is charged in terms of a rate rather than an amount)',
title='FeeRate',
)
FeeRateType: Optional[FeeRateType3] = Field(
None,
description='Rate type for Fee/Charge (where it is charged in terms of a rate rather than an amount)',
title='FeeRateType',
)
FeeType: FeeType3 = Field(..., description='Fee/Charge Type', title='FeeType')
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None,
description='Optional additional notes to supplement the fee/charge details.',
title='Notes',
)
OtherApplicationFrequency_1: Optional[OtherApplicationFrequency] = Field(
None,
alias='OtherApplicationFrequency',
description='Other application frequencies not covered in the standard code list',
title='OtherApplicationFrequency',
)
OtherCalculationFrequency_1: Optional[OtherCalculationFrequency] = Field(
None,
alias='OtherCalculationFrequency',
description='Other calculation frequency which is not available in standard code set.',
title='OtherCalculationFrequency',
)
OtherFeeCategoryType_1: Optional[OtherFeeCategoryType] = Field(
None, alias='OtherFeeCategoryType', title='OtherFeeCategoryType'
)
OtherFeeRateType_1: Optional[OtherFeeRateType] = Field(
None,
alias='OtherFeeRateType',
description='Other fee rate type which is not available in the standard code set',
title='OtherFeeRateType',
)
OtherFeeType: Optional[OtherFeeType3] = Field(
None,
description='Other Fee/charge type which is not available in the standard code set',
title='OtherFeeType',
)
class OtherFeesCharges(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
FeeChargeCap: Optional[List[FeeChargeCapItem2]] = Field(
None,
description='Details about any caps (maximum charges) that apply to a particular fee/charge',
title='FeeChargeCap',
)
FeeChargeDetail: List[FeeChargeDetailItem1] = Field(
...,
description='Other fees/charges details',
min_length=1,
title='FeeChargeDetail',
)
class FeeTypeEnum8(Enum):
ArrangedOverdraft = 'ArrangedOverdraft'
EmergencyBorrowing = 'EmergencyBorrowing'
BorrowingItem = 'BorrowingItem'
OverdraftRenewal = 'OverdraftRenewal'
AnnualReview = 'AnnualReview'
OverdraftSetup = 'OverdraftSetup'
Surcharge = 'Surcharge'
TempOverdraft = 'TempOverdraft'
UnauthorisedBorrowing = 'UnauthorisedBorrowing'
UnauthorisedPaidTrans = 'UnauthorisedPaidTrans'
Other = 'Other'
UnauthorisedUnpaidTrans = 'UnauthorisedUnpaidTrans'
class OverdraftFeeChargeCapItem4(BaseModel):
CappingPeriod: Optional[CappingPeriod6] = Field(
None,
description='Period e.g. day, week, month etc. for which the fee/charge is capped',
title='CappingPeriod',
)
FeeCapAmount: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='Cap amount charged for a fee/charge',
title='FeeCapAmount',
)
)
FeeCapOccurrence: Optional[float] = Field(
None,
description='fee/charges are captured dependent on the number of occurrences rather than capped at a particular amount',
title='FeeCapOccurrence',
)
FeeType: List[FeeTypeEnum8] = Field(
...,
description='Fee/charge type which is being capped',
min_length=1,
title='FeeType',
)
MinMaxType_1: MinMaxType = Field(
...,
alias='MinMaxType',
description='Indicates that this is the minimum/ maximum fee/charge that can be applied by the financial institution',
title='MinMaxType',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None, description='Notes related to Overdraft fee charge cap', title='Notes'
)
OtherFeeType: Optional[List[OtherFeeTypeItem]] = Field(
None,
description='Other fee type code which is not available in the standard code set',
title='OtherFeeType',
)
OverdraftControlIndicator: Optional[bool] = Field(
None,
description='Specifies for the overdraft control feature/benefit',
title='OverdraftControlIndicator',
)
class FeeType4(Enum):
ArrangedOverdraft = 'ArrangedOverdraft'
EmergencyBorrowing = 'EmergencyBorrowing'
BorrowingItem = 'BorrowingItem'
OverdraftRenewal = 'OverdraftRenewal'
AnnualReview = 'AnnualReview'
OverdraftSetup = 'OverdraftSetup'
Surcharge = 'Surcharge'
TempOverdraft = 'TempOverdraft'
UnauthorisedBorrowing = 'UnauthorisedBorrowing'
UnauthorisedPaidTrans = 'UnauthorisedPaidTrans'
Other = 'Other'
UnauthorisedUnpaidTrans = 'UnauthorisedUnpaidTrans'
class OtherFeeType4(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Code: Optional[constr(pattern=r'^\w{0,4}$', min_length=0, max_length=4)] = Field(
None,
description='The four letter Mnemonic used within an XML file to identify a code',
title='Code',
)
Description: constr(min_length=1, max_length=350) = Field(
...,
description='Description to describe the purpose of the code',
title='Description',
)
Name: constr(min_length=1, max_length=70) = Field(
..., description='Long name associated with the code', title='Name'
)
class OverdraftFeeChargeCap(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
CappingPeriod: Optional[CappingPeriod6] = Field(
None,
description='Period e.g. day, week, month etc. for which the fee/charge is capped',
title='CappingPeriod',
)
FeeCapAmount: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='Cap amount charged for a fee/charge',
title='FeeCapAmount',
)
)
FeeCapOccurrence: Optional[float] = Field(
None,
description='fee/charges are captured dependent on the number of occurrences rather than capped at a particular amount',
title='FeeCapOccurrence',
)
FeeType: List[FeeTypeEnum8] = Field(
...,
description='Fee/charge type which is being capped',
min_length=1,
title='FeeType',
)
MinMaxType_1: MinMaxType = Field(
...,
alias='MinMaxType',
description='Indicates that this is the minimum/ maximum fee/charge that can be applied by the financial institution',
title='MinMaxType',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None, description='Notes related to Overdraft fee charge cap', title='Notes'
)
OtherFeeType: Optional[List[OtherFeeTypeItem]] = Field(
None,
description='Other fee type code which is not available in the standard code set',
title='OtherFeeType',
)
OverdraftControlIndicator: Optional[bool] = Field(
None,
description='Specifies for the overdraft control feature/benefit',
title='OverdraftControlIndicator',
)
class OverdraftFeeChargeDetailItem2(BaseModel):
ApplicationFrequency: ApplicationFrequency5 = Field(
...,
description='Frequency at which the overdraft charge is applied to the account',
title='ApplicationFrequency',
)
CalculationFrequency: Optional[CalculationFrequency5] = Field(
None,
description='How often is the overdraft fee/charge calculated for the account.',
title='CalculationFrequency',
)
FeeAmount: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = Field(
None,
description='Amount charged for an overdraft fee/charge (where it is charged in terms of an amount rather than a rate)',
title='FeeAmount',
)
FeeRate: Optional[constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$')] = Field(
None,
description='Rate charged for overdraft fee/charge (where it is charged in terms of a rate rather than an amount)',
title='FeeRate',
)
FeeRateType: Optional[FeeRateType3] = Field(
None,
description='Rate type for overdraft fee/charge (where it is charged in terms of a rate rather than an amount)',
title='FeeRateType',
)
FeeType: FeeType4 = Field(..., description='Overdraft fee type', title='FeeType')
IncrementalBorrowingAmount: Optional[
constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')
] = Field(
None,
description='Every additional tranche of an overdraft balance to which an overdraft fee is applied',
title='IncrementalBorrowingAmount',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None,
description='Free text for capturing any other info related to Overdraft Fees Charge Details',
title='Notes',
)
OtherApplicationFrequency_1: Optional[OtherApplicationFrequency] = Field(
None,
alias='OtherApplicationFrequency',
description='Other application frequencies that are not available in the standard code list',
title='OtherApplicationFrequency',
)
OtherCalculationFrequency_1: Optional[OtherCalculationFrequency] = Field(
None,
alias='OtherCalculationFrequency',
description='Other calculation frequency which is not available in the standard code set.',
title='OtherCalculationFrequency',
)
OtherFeeRateType_1: Optional[OtherFeeRateType] = Field(
None,
alias='OtherFeeRateType',
description='Other fee rate type code which is not available in the standard code set',
title='OtherFeeRateType',
)
OtherFeeType: Optional[OtherFeeType4] = Field(
None,
description='Other Fee type which is not available in the standard code set',
title='OtherFeeType',
)
OverdraftControlIndicator: Optional[bool] = Field(
None,
description='Specifies for the overdraft control feature/benefit',
title='OverdraftControlIndicator',
)
OverdraftFeeChargeCap_1: Optional[OverdraftFeeChargeCap] = Field(
None,
alias='OverdraftFeeChargeCap',
description='Details about any caps (maximum charges) that apply to a particular fee/charge',
title='OverdraftFeeChargeCap',
)
class OverdraftFeesCharge2(BaseModel):
OverdraftFeeChargeCap: Optional[List[OverdraftFeeChargeCapItem4]] = Field(
None,
description='Details about any caps (maximum charges) that apply to a particular fee/charge',
title='OverdraftFeeChargeCap',
)
OverdraftFeeChargeDetail: List[OverdraftFeeChargeDetailItem2] = Field(
...,
description='Details about the fees/charges',
min_length=1,
title='OverdraftFeeChargeDetail',
)
class OverdraftFeeChargeCapItem5(BaseModel):
CappingPeriod: Optional[CappingPeriod6] = Field(
None,
description='Period e.g. day, week, month etc. for which the fee/charge is capped',
title='CappingPeriod',
)
FeeCapAmount: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='Cap amount charged for a fee/charge',
title='FeeCapAmount',
)
)
FeeCapOccurrence: Optional[float] = Field(
None,
description='fee/charges are captured dependent on the number of occurrences rather than capped at a particular amount',
title='FeeCapOccurrence',
)
FeeType: List[FeeTypeEnum8] = Field(
...,
description='Fee/charge type which is being capped',
min_length=1,
title='FeeType',
)
MinMaxType_1: MinMaxType = Field(
...,
alias='MinMaxType',
description='Indicates that this is the minimum/ maximum fee/charge that can be applied by the financial institution',
title='MinMaxType',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None, description='Notes related to Overdraft fee charge cap', title='Notes'
)
OtherFeeType: Optional[List[OtherFeeTypeItem]] = Field(
None,
description='Other fee type code which is not available in the standard code set',
title='OtherFeeType',
)
OverdraftControlIndicator: Optional[bool] = Field(
None,
description='Specifies for the overdraft control feature/benefit',
title='OverdraftControlIndicator',
)
class OverdraftFeeChargeCap1(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
CappingPeriod: Optional[CappingPeriod6] = Field(
None,
description='Period e.g. day, week, month etc. for which the fee/charge is capped',
title='CappingPeriod',
)
FeeCapAmount: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='Cap amount charged for a fee/charge',
title='FeeCapAmount',
)
)
FeeCapOccurrence: Optional[float] = Field(
None,
description='fee/charges are captured dependent on the number of occurrences rather than capped at a particular amount',
title='FeeCapOccurrence',
)
FeeType: List[FeeTypeEnum8] = Field(
...,
description='Fee/charge type which is being capped',
min_length=1,
title='FeeType',
)
MinMaxType_1: MinMaxType = Field(
...,
alias='MinMaxType',
description='Indicates that this is the minimum/ maximum fee/charge that can be applied by the financial institution',
title='MinMaxType',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None, description='Notes related to Overdraft fee charge cap', title='Notes'
)
OtherFeeType: Optional[List[OtherFeeTypeItem]] = Field(
None,
description='Other fee type code which is not available in the standard code set',
title='OtherFeeType',
)
OverdraftControlIndicator: Optional[bool] = Field(
None,
description='Specifies for the overdraft control feature/benefit',
title='OverdraftControlIndicator',
)
class OverdraftFeeChargeDetailItem3(BaseModel):
ApplicationFrequency: ApplicationFrequency5 = Field(
...,
description='Frequency at which the overdraft charge is applied to the account',
title='ApplicationFrequency',
)
CalculationFrequency: Optional[CalculationFrequency5] = Field(
None,
description='How often is the overdraft fee/charge calculated for the account.',
title='CalculationFrequency',
)
FeeAmount: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = Field(
None,
description='Amount charged for an overdraft fee/charge (where it is charged in terms of an amount rather than a rate)',
title='FeeAmount',
)
FeeRate: Optional[constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$')] = Field(
None,
description='Rate charged for overdraft fee/charge (where it is charged in terms of a rate rather than an amount)',
title='FeeRate',
)
FeeRateType: Optional[FeeRateType3] = Field(
None,
description='Rate type for overdraft fee/charge (where it is charged in terms of a rate rather than an amount)',
title='FeeRateType',
)
FeeType: FeeType4 = Field(..., description='Overdraft fee type', title='FeeType')
IncrementalBorrowingAmount: Optional[
constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')
] = Field(
None,
description='Every additional tranche of an overdraft balance to which an overdraft fee is applied',
title='IncrementalBorrowingAmount',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None,
description='Free text for capturing any other info related to Overdraft Fees Charge Details',
title='Notes',
)
OtherApplicationFrequency_1: Optional[OtherApplicationFrequency] = Field(
None,
alias='OtherApplicationFrequency',
description='Other application frequencies that are not available in the standard code list',
title='OtherApplicationFrequency',
)
OtherCalculationFrequency_1: Optional[OtherCalculationFrequency] = Field(
None,
alias='OtherCalculationFrequency',
description='Other calculation frequency which is not available in the standard code set.',
title='OtherCalculationFrequency',
)
OtherFeeRateType_1: Optional[OtherFeeRateType] = Field(
None,
alias='OtherFeeRateType',
description='Other fee rate type code which is not available in the standard code set',
title='OtherFeeRateType',
)
OtherFeeType: Optional[OtherFeeType4] = Field(
None,
description='Other Fee type which is not available in the standard code set',
title='OtherFeeType',
)
OverdraftControlIndicator: Optional[bool] = Field(
None,
description='Specifies for the overdraft control feature/benefit',
title='OverdraftControlIndicator',
)
OverdraftFeeChargeCap: Optional[OverdraftFeeChargeCap1] = Field(
None,
description='Details about any caps (maximum charges) that apply to a particular fee/charge',
title='OverdraftFeeChargeCap',
)
class OverdraftFeesCharge3(BaseModel):
OverdraftFeeChargeCap: Optional[List[OverdraftFeeChargeCapItem5]] = Field(
None,
description='Details about any caps (maximum charges) that apply to a particular fee/charge',
title='OverdraftFeeChargeCap',
)
OverdraftFeeChargeDetail: List[OverdraftFeeChargeDetailItem3] = Field(
...,
description='Details about the fees/charges',
min_length=1,
title='OverdraftFeeChargeDetail',
)
class OverdraftInterestChargingCoverage1(Enum):
Tiered = 'Tiered'
Whole = 'Whole'
class OverdraftTierBandItem1(BaseModel):
BankGuaranteedIndicator: Optional[bool] = Field(
None,
description='Indicates that a bank provides the overdraft limit up to TierValueMIn to all customers automatically',
title='BankGuaranteedIndicator',
)
EAR: Optional[constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$')] = Field(
None,
description='EAR means Effective Annual Rate and/or Equivalent Annual Rate (frequently\nused interchangeably), being the actual annual interest rate of an Overdraft.',
title='EAR',
)
Identification: Optional[constr(min_length=1, max_length=35)] = Field(
None,
description='Unique and unambiguous identification of a Tier Band for a overdraft.',
title='Identification',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None,
description='Optional additional notes to supplement the Tier/band details',
title='Notes',
)
OverdraftFeesCharges: Optional[List[OverdraftFeesCharge3]] = Field(
None, description='Overdraft fees and charges', title='OverdraftFeesCharges'
)
OverdraftInterestChargingCoverage: Optional[OverdraftInterestChargingCoverage1] = (
Field(
None,
description='Interest charged on whole amount or tiered/banded',
title='OverdraftInterestChargingCoverage',
)
)
RepresentativeAPR: Optional[constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='An annual percentage rate (APR) is the annual rate charged for borrowing or earned through an investment. APR is expressed as a percentage that represents the actual yearly cost of funds over the term of a loan. This includes any fees or additional costs associated with the transaction but does not take compounding into account.',
title='RepresentativeAPR',
)
)
TierValueMax: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='Maximum value of Overdraft Tier/Band',
title='TierValueMax',
)
)
TierValueMin: constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$') = Field(
..., description='Minimum value of Overdraft Tier/Band', title='TierValueMin'
)
class OverdraftType1(Enum):
Committed = 'Committed'
OnDemand = 'OnDemand'
Other = 'Other'
class TierBandMethod3(Enum):
Tiered = 'Tiered'
Whole = 'Whole'
Banded = 'Banded'
class OverdraftTierBandSetItem1(BaseModel):
AuthorisedIndicator: Optional[bool] = Field(
None,
description='Indicates if the Overdraft is authorised (Y) or unauthorised (N)',
title='AuthorisedIndicator',
)
BufferAmount: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='When a customer exceeds their credit limit, a financial institution will not charge the customer unauthorised overdraft charges if they do not exceed by more than the buffer amount. Note: Authorised overdraft charges may still apply.',
title='BufferAmount',
)
)
Identification: Optional[constr(min_length=1, max_length=35)] = Field(
None,
description='Unique and unambiguous identification of a Tier Band for a overdraft product.',
title='Identification',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None,
description='Optional additional notes to supplement the overdraft Tier Band Set details',
title='Notes',
)
OverdraftFeesCharges: Optional[List[OverdraftFeesCharge2]] = Field(
None,
description='Overdraft fees and charges details',
title='OverdraftFeesCharges',
)
OverdraftTierBand: List[OverdraftTierBandItem1] = Field(
...,
description='Provides overdraft details for a specific tier or band',
min_length=1,
title='OverdraftTierBand',
)
OverdraftType: Optional[OverdraftType1] = Field(
None,
description="An overdraft can either be 'committed' which means that the facility cannot be withdrawn without reasonable notification before it's agreed end date, or 'on demand' which means that the financial institution can demand repayment at any point in time.",
title='OverdraftType',
)
TierBandMethod: TierBandMethod3 = Field(
...,
description="The methodology of how overdraft is charged. It can be:\n'Whole' Where the same charge/rate is applied to the entirety of the overdraft balance (where charges are applicable). \n'Tiered' Where different charges/rates are applied dependent on overdraft maximum and minimum balance amount tiers defined by the lending financial organisation\n'Banded' Where different charges/rates are applied dependent on overdraft maximum and minimum balance amount bands defined by a government organisation.",
title='TierBandMethod',
)
class Overdraft1(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None, description='Associated Notes about the overdraft rates', title='Notes'
)
OverdraftTierBandSet: List[OverdraftTierBandSetItem1] = Field(
...,
description='Tier band set details',
min_length=1,
title='OverdraftTierBandSet',
)
class SegmentEnum1(Enum):
Basic = 'Basic'
BenefitAndReward = 'BenefitAndReward'
CreditInterest = 'CreditInterest'
Cashback = 'Cashback'
General = 'General'
Graduate = 'Graduate'
Other = 'Other'
Overdraft = 'Overdraft'
Packaged = 'Packaged'
Premium = 'Premium'
Reward = 'Reward'
Student = 'Student'
YoungAdult = 'YoungAdult'
Youth = 'Youth'
class ProductDetails1(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
MonthlyMaximumCharge: Optional[
constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')
] = Field(
None,
description='The maximum relevant charges that could accrue as defined fully in Part 7 of the CMA order',
title='MonthlyMaximumCharge',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = Field(
None,
description='Optional additional notes to supplement the Core product details',
title='Notes',
)
Segment: Optional[List[SegmentEnum1]] = Field(
None,
description='Market segmentation is a marketing term referring to the aggregating of prospective buyers into groups, or segments, that have common needs and respond similarly to a marketing action. Market segmentation enables companies to target different categories of consumers who perceive the full value of certain products and services differently from one another.\n\nRead more: Market Segmentation http://www.investopedia.com/terms/m/marketsegmentation.asp#ixzz4gfEEalTd \nWith respect to PCA products, they are segmented in relation to different markets that they wish to focus on. ',
title='Segment',
)
class OBPCAData1(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
CreditInterest: Optional[CreditInterest1] = Field(
None,
description='Details about the interest that may be payable to the PCA account holders',
title='CreditInterest',
)
OtherFeesCharges_1: Optional[OtherFeesCharges] = Field(
None,
alias='OtherFeesCharges',
description='Contains details of fees and charges which are not associated with either borrowing or features/benefits',
title='OtherFeesCharges',
)
Overdraft: Optional[Overdraft1] = Field(
None,
description='Details about Overdraft rates, fees & charges',
title='Overdraft',
)
ProductDetails: Optional[ProductDetails1] = Field(None, title='ProductDetails')
class AddressLineItem(RootModel[constr(min_length=1, max_length=70)]):
root: constr(min_length=1, max_length=70) = Field(
...,
description='Information that locates and identifies a specific address, as defined by postal services, that is presented in free format text.',
)
class Account(BaseModel):
Id: constr(min_length=1, max_length=40) = Field(
...,
description='Unique identification as assigned by the ASPSP to uniquely identify the related resource.',
)
Related: AnyUrl = Field(..., description='Absolute URI to the related resource.')
class OBPartyRelationships1(BaseModel):
Account_1: Optional[Account] = Field(
None, alias='Account', description='Relationship to the Account resource.'
)
class AddressLineItem1(RootModel[constr(min_length=1, max_length=70)]):
root: constr(min_length=1, max_length=70) = Field(
...,
description='Information that locates and identifies a specific address, as defined by postal services, presented in free format text.',
)
class OBRate10(RootModel[float]):
root: float = Field(
...,
description='Rate charged for Statement Fee (where it is charged in terms of a rate rather than an amount)',
)
class OBRate11(RootModel[float]):
root: float = Field(
...,
description='field representing a percentage (e.g. 0.05 represents 5% and 0.9525 represents 95.25%). Note the number of decimal places may vary.',
)
class Amount(BaseModel):
Amount: OBActiveCurrencyAndAmountSimpleType
Currency: ActiveOrHistoricCurrencyCode1
class Type(Enum):
Available = 'Available'
Credit = 'Credit'
Emergency = 'Emergency'
Pre_Agreed = 'Pre-Agreed'
Temporary = 'Temporary'
class CreditLineItem(BaseModel):
Amount_1: Optional[Amount] = Field(
None, alias='Amount', description='Amount of money of the credit line.'
)
Included: bool = Field(
...,
description='Indicates whether or not the credit line is included in the balance of the account.\nUsage: If not present, credit line is not included in the balance amount of the account.',
)
Type_1: Optional[Type] = Field(
None, alias='Type', description='Limit type, in a coded form.'
)
class BalanceItem(BaseModel):
AccountId_1: AccountId = Field(..., alias='AccountId')
Amount_1: Amount = Field(
..., alias='Amount', description='Amount of money of the cash balance.'
)
CreditDebitIndicator: OBCreditDebitCode2
CreditLine: Optional[List[CreditLineItem]] = None
DateTime: datetime = Field(
...,
description='Indicates the date (and time) of the balance.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: OBBalanceType1Code
class Data1(BaseModel):
Balance: List[BalanceItem] = Field(..., min_length=1)
class OBReadBalance1(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Data: Data1
Links_1: Optional[Links] = Field(None, alias='Links')
Meta_1: Optional[Meta] = Field(None, alias='Meta')
class Permission(Enum):
ReadAccountsBasic = 'ReadAccountsBasic'
ReadAccountsDetail = 'ReadAccountsDetail'
ReadBalances = 'ReadBalances'
ReadBeneficiariesBasic = 'ReadBeneficiariesBasic'
ReadBeneficiariesDetail = 'ReadBeneficiariesDetail'
ReadDirectDebits = 'ReadDirectDebits'
ReadOffers = 'ReadOffers'
ReadPAN = 'ReadPAN'
ReadParty = 'ReadParty'
ReadPartyPSU = 'ReadPartyPSU'
ReadProducts = 'ReadProducts'
ReadScheduledPaymentsBasic = 'ReadScheduledPaymentsBasic'
ReadScheduledPaymentsDetail = 'ReadScheduledPaymentsDetail'
ReadStandingOrdersBasic = 'ReadStandingOrdersBasic'
ReadStandingOrdersDetail = 'ReadStandingOrdersDetail'
ReadStatementsBasic = 'ReadStatementsBasic'
ReadStatementsDetail = 'ReadStatementsDetail'
ReadTransactionsBasic = 'ReadTransactionsBasic'
ReadTransactionsCredits = 'ReadTransactionsCredits'
ReadTransactionsDebits = 'ReadTransactionsDebits'
ReadTransactionsDetail = 'ReadTransactionsDetail'
class Data3(BaseModel):
ExpirationDateTime: Optional[datetime] = Field(
None,
description='Specified date and time the permissions will expire.\nIf this is not populated, the permissions will be open ended.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',
)
Permissions: List[Permission] = Field(..., min_length=1)
TransactionFromDateTime: Optional[datetime] = Field(
None,
description='Specified start date and time for the transaction query period.\nIf this is not populated, the start date will be open ended, and data will be returned from the earliest available transaction.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',
)
TransactionToDateTime: Optional[datetime] = Field(
None,
description='Specified end date and time for the transaction query period.\nIf this is not populated, the end date will be open ended, and data will be returned to the latest available transaction.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',
)
class Status(Enum):
Authorised = 'Authorised'
AwaitingAuthorisation = 'AwaitingAuthorisation'
Rejected = 'Rejected'
Revoked = 'Revoked'
class Fee(BaseModel):
Amount: OBActiveCurrencyAndAmountSimpleType
Currency: ActiveOrHistoricCurrencyCode1
class OfferType(Enum):
BalanceTransfer = 'BalanceTransfer'
LimitIncrease = 'LimitIncrease'
MoneyTransfer = 'MoneyTransfer'
Other = 'Other'
PromotionalRate = 'PromotionalRate'
class OfferItem(BaseModel):
AccountId_1: AccountId = Field(..., alias='AccountId')
Amount_1: Optional[Amount] = Field(
None,
alias='Amount',
description='Amount of money associated with the offer type.',
)
Description: Optional[constr(min_length=1, max_length=500)] = Field(
None, description='Further details of the offer.'
)
EndDateTime: Optional[datetime] = Field(
None,
description='Date and time at which the offer ends.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',
)
Fee_1: Optional[Fee] = Field(
None, alias='Fee', description='Fee associated with the offer type.'
)
OfferId: Optional[constr(min_length=1, max_length=40)] = Field(
None,
description='A unique and immutable identifier used to identify the offer resource. This identifier has no meaning to the account owner.',
)
OfferType_1: Optional[OfferType] = Field(
None, alias='OfferType', description='Offer type, in a coded form.'
)
Rate: Optional[constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$')] = Field(
None, description='Rate associated with the offer type.'
)
StartDateTime: Optional[datetime] = Field(
None,
description='Date and time at which the offer starts.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',
)
Term: Optional[constr(min_length=1, max_length=500)] = Field(
None, description='Further details of the term of the offer.'
)
URL: Optional[constr(min_length=1, max_length=256)] = Field(
None,
description='URL (Uniform Resource Locator) where documentation on the offer can be found',
)
Value: Optional[int] = Field(
None, description='Value associated with the offer type.'
)
class Data6(BaseModel):
Offer: Optional[List[OfferItem]] = None
class OBReadOffer1(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Data: Data6
Links_1: Optional[Links] = Field(None, alias='Links')
Meta_1: Optional[Meta] = Field(None, alias='Meta')
class Destination2(Enum):
INOT = 'INOT'
INPA = 'INPA'
INSC = 'INSC'
class ApplicationFrequency8(Enum):
FQAT = 'FQAT'
FQDY = 'FQDY'
FQHY = 'FQHY'
FQMY = 'FQMY'
FQOT = 'FQOT'
FQQY = 'FQQY'
FQSD = 'FQSD'
FQWY = 'FQWY'
FQYY = 'FQYY'
class BankInterestRateType2(Enum):
INBB = 'INBB'
INFR = 'INFR'
INGR = 'INGR'
INLR = 'INLR'
INNE = 'INNE'
INOT = 'INOT'
class CalculationFrequency8(Enum):
FQAT = 'FQAT'
FQDY = 'FQDY'
FQHY = 'FQHY'
FQMY = 'FQMY'
FQOT = 'FQOT'
FQQY = 'FQQY'
FQSD = 'FQSD'
FQWY = 'FQWY'
FQYY = 'FQYY'
class DepositInterestAppliedCoverage2(Enum):
INBA = 'INBA'
INTI = 'INTI'
INWH = 'INWH'
class TierBandMethod4(Enum):
INBA = 'INBA'
INTI = 'INTI'
INWH = 'INWH'
class FeeTypeEnum12(Enum):
FEPF = 'FEPF'
FTOT = 'FTOT'
FYAF = 'FYAF'
FYAM = 'FYAM'
FYAQ = 'FYAQ'
FYCP = 'FYCP'
FYDB = 'FYDB'
FYMI = 'FYMI'
FYXX = 'FYXX'
class LoanProviderInterestRateType(Enum):
INBB = 'INBB'
INFR = 'INFR'
INGR = 'INGR'
INLR = 'INLR'
INNE = 'INNE'
INOT = 'INOT'
class MaxTermPeriod(Enum):
PACT = 'PACT'
PDAY = 'PDAY'
PHYR = 'PHYR'
PMTH = 'PMTH'
PQTR = 'PQTR'
PWEK = 'PWEK'
PYER = 'PYER'
class MinTermPeriod(Enum):
PACT = 'PACT'
PDAY = 'PDAY'
PHYR = 'PHYR'
PMTH = 'PMTH'
PQTR = 'PQTR'
PWEK = 'PWEK'
PYER = 'PYER'
class FeeApplicableRange2(BaseModel):
MaximumAmount: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='Maximum Amount on which fee is applicable (where it is expressed as an amount)',
)
)
MaximumRate: Optional[constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$')] = Field(
None,
description='Maximum rate on which fee/charge is applicable(where it is expressed as an rate)',
)
MinimumAmount: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='Minimum Amount on which fee/charge is applicable (where it is expressed as an amount)',
)
)
MinimumRate: Optional[constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$')] = Field(
None,
description='Minimum rate on which fee/charge is applicable(where it is expressed as an rate)',
)
class TariffType1(Enum):
TTEL = 'TTEL'
TTMX = 'TTMX'
TTOT = 'TTOT'
class FeeTypeEnum16(Enum):
FBAO = 'FBAO'
FBAR = 'FBAR'
FBEB = 'FBEB'
FBIT = 'FBIT'
FBOR = 'FBOR'
FBOS = 'FBOS'
FBSC = 'FBSC'
FBTO = 'FBTO'
FBUB = 'FBUB'
FBUT = 'FBUT'
FTOT = 'FTOT'
FTUT = 'FTUT'
class AgreementPeriod1(Enum):
PACT = 'PACT'
PDAY = 'PDAY'
PHYR = 'PHYR'
PMTH = 'PMTH'
PQTR = 'PQTR'
PWEK = 'PWEK'
PYER = 'PYER'
class OverdraftInterestChargingCoverage2(Enum):
INBA = 'INBA'
INTI = 'INTI'
INWH = 'INWH'
class OverdraftType2(Enum):
OVCO = 'OVCO'
OVOD = 'OVOD'
OVOT = 'OVOT'
class FeeFreeLengthPeriod1(Enum):
PACT = 'PACT'
PDAY = 'PDAY'
PHYR = 'PHYR'
PMTH = 'PMTH'
PQTR = 'PQTR'
PWEK = 'PWEK'
PYER = 'PYER'
class SegmentEnum2(Enum):
GEAS = 'GEAS'
GEBA = 'GEBA'
GEBR = 'GEBR'
GEBU = 'GEBU'
GECI = 'GECI'
GECS = 'GECS'
GEFB = 'GEFB'
GEFG = 'GEFG'
GEG = 'GEG'
GEGR = 'GEGR'
GEGS = 'GEGS'
GEOT = 'GEOT'
GEOV = 'GEOV'
GEPA = 'GEPA'
GEPR = 'GEPR'
GERE = 'GERE'
GEST = 'GEST'
GEYA = 'GEYA'
GEYO = 'GEYO'
PSCA = 'PSCA'
PSES = 'PSES'
PSNC = 'PSNC'
PSNP = 'PSNP'
PSRG = 'PSRG'
PSSS = 'PSSS'
PSST = 'PSST'
PSSW = 'PSSW'
class AmountType(Enum):
RABD = 'RABD'
RABL = 'RABL'
RACI = 'RACI'
RAFC = 'RAFC'
RAIO = 'RAIO'
RALT = 'RALT'
USOT = 'USOT'
class FeeTypeEnum20(Enum):
FEPF = 'FEPF'
FTOT = 'FTOT'
FYAF = 'FYAF'
FYAM = 'FYAM'
FYAQ = 'FYAQ'
FYCP = 'FYCP'
FYDB = 'FYDB'
FYMI = 'FYMI'
FYXX = 'FYXX'
class RepaymentFrequency(Enum):
SMDA = 'SMDA'
SMFL = 'SMFL'
SMFO = 'SMFO'
SMHY = 'SMHY'
SMMO = 'SMMO'
SMOT = 'SMOT'
SMQU = 'SMQU'
SMWE = 'SMWE'
SMYE = 'SMYE'
class MaxHolidayPeriod(Enum):
PACT = 'PACT'
PDAY = 'PDAY'
PHYR = 'PHYR'
PMTH = 'PMTH'
PQTR = 'PQTR'
PWEK = 'PWEK'
PYER = 'PYER'
class RepaymentHolidayItem(BaseModel):
MaxHolidayLength: Optional[int] = Field(
None, description='The maximum length/duration of a Repayment Holiday'
)
MaxHolidayPeriod_1: Optional[MaxHolidayPeriod] = Field(
None,
alias='MaxHolidayPeriod',
description='The unit of period (days, weeks, months etc.) of the repayment holiday',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = None
class RepaymentType(Enum):
USBA = 'USBA'
USBU = 'USBU'
USCI = 'USCI'
USCS = 'USCS'
USER = 'USER'
USFA = 'USFA'
USFB = 'USFB'
USFI = 'USFI'
USIO = 'USIO'
USOT = 'USOT'
USPF = 'USPF'
USRW = 'USRW'
USSL = 'USSL'
class ProductType(Enum):
BusinessCurrentAccount = 'BusinessCurrentAccount'
CommercialCreditCard = 'CommercialCreditCard'
Other = 'Other'
PersonalCurrentAccount = 'PersonalCurrentAccount'
SMELoan = 'SMELoan'
class OBRisk2(BaseModel):
pass
model_config = ConfigDict(
extra='forbid',
)
class StatementAmountItem(BaseModel):
Amount: OBActiveOrHistoricCurrencyAndAmount8
CreditDebitIndicator: OBCreditDebitCode0
Type: OBExternalStatementAmountType1Code
class StatementBenefitItem(BaseModel):
Amount: OBActiveOrHistoricCurrencyAndAmount5
Type: OBExternalStatementBenefitType1Code
class StatementDateTimeItem(BaseModel):
DateTime_1: DateTime = Field(..., alias='DateTime')
Type: OBExternalStatementDateTimeType1Code
class StatementFeeItem(BaseModel):
Amount: OBActiveOrHistoricCurrencyAndAmount6
CreditDebitIndicator: OBCreditDebitCode0
Description: Optional[Description1] = None
Frequency: Optional[OBExternalStatementFeeFrequency1Code] = None
Rate: Optional[OBRate10] = None
RateType: Optional[OBExternalStatementFeeRateType1Code] = None
Type: OBExternalStatementFeeType1Code
class StatementInterestItem(BaseModel):
Amount: OBActiveOrHistoricCurrencyAndAmount7
CreditDebitIndicator: OBCreditDebitCode0
Description: Optional[Description2] = None
Frequency: Optional[OBExternalStatementInterestFrequency1Code] = None
Rate: Optional[OBRate11] = None
RateType: Optional[OBExternalStatementInterestRateType1Code] = None
Type: OBExternalStatementInterestType1Code
class OBSupplementaryData1(BaseModel):
pass
model_config = ConfigDict(
extra='allow',
)
class AuthorisationType(Enum):
ConsumerDevice = 'ConsumerDevice'
Contactless = 'Contactless'
None_ = 'None'
PIN = 'PIN'
class CardSchemeName(Enum):
AmericanExpress = 'AmericanExpress'
Diners = 'Diners'
Discover = 'Discover'
MasterCard = 'MasterCard'
VISA = 'VISA'
class OBTransactionCardInstrument1(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
AuthorisationType_1: Optional[AuthorisationType] = Field(
None, alias='AuthorisationType', description='The card authorisation type.'
)
CardSchemeName_1: CardSchemeName = Field(
..., alias='CardSchemeName', description='Name of the card scheme.'
)
Identification: Optional[constr(min_length=1, max_length=34)] = Field(
None,
description='Identification assigned by an institution to identify the card instrument used in the transaction. This identification is known by the account owner, and may be masked.',
)
Name: Optional[constr(min_length=1, max_length=70)] = Field(
None, description='Name of the cardholder using the card instrument.'
)
class OBTransactionCashBalance(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Amount_1: Amount = Field(
...,
alias='Amount',
description='Amount of money of the cash balance after a transaction entry is applied to the account..',
)
CreditDebitIndicator: OBCreditDebitCode2
Type: OBBalanceType1Code
class OBTransactionMutability1Code(Enum):
Mutable = 'Mutable'
Immutable = 'Immutable'
class OBAmount10(RootModel[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')]):
root: constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$') = Field(
..., description='Cap amount charged for a fee/charge'
)
class OBAmount11(RootModel[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')]):
root: constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$') = Field(
...,
description='Every additional tranche of an overdraft balance to which an overdraft fee is applied',
)
class OBAmount12(RootModel[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')]):
root: constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$') = Field(
...,
description='Amount charged for an overdraft fee/charge (where it is charged in terms of an amount rather than a rate)',
)
class OBAmount13(RootModel[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')]):
root: constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$') = Field(
...,
description='Fee Amount charged for a fee/charge (where it is charged in terms of an amount rather than a rate)',
)
class OBAmount14(RootModel[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')]):
root: constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$') = Field(
...,
description='Cap amount charged for a fee/charge (where it is charged in terms of an amount rather than a rate)',
)
class OBCodeMnemonic(RootModel[constr(pattern=r'^\\w{0,4}$')]):
root: constr(pattern=r'^\\w{0,4}$') = Field(
...,
description='The four letter Mnemonic used within an XML file to identify a code',
)
class OBFeeCategory1Code(Enum):
FCOT = 'FCOT'
FCRE = 'FCRE'
FCSV = 'FCSV'
class OBFeeFrequency1Code0(Enum):
FEAC = 'FEAC'
FEAO = 'FEAO'
FECP = 'FECP'
FEDA = 'FEDA'
FEHO = 'FEHO'
FEI = 'FEI'
FEMO = 'FEMO'
FEOA = 'FEOA'
FEOT = 'FEOT'
FEPC = 'FEPC'
FEPH = 'FEPH'
FEPO = 'FEPO'
FEPS = 'FEPS'
FEPT = 'FEPT'
FEPTA = 'FEPTA'
FEPTP = 'FEPTP'
FEQU = 'FEQU'
FESM = 'FESM'
FEST = 'FEST'
FEWE = 'FEWE'
FEYE = 'FEYE'
class OBFeeFrequency1Code1(Enum):
FEAC = 'FEAC'
FEAO = 'FEAO'
FECP = 'FECP'
FEDA = 'FEDA'
FEHO = 'FEHO'
FEI = 'FEI'
FEMO = 'FEMO'
FEOA = 'FEOA'
FEOT = 'FEOT'
FEPC = 'FEPC'
FEPH = 'FEPH'
FEPO = 'FEPO'
FEPS = 'FEPS'
FEPT = 'FEPT'
FEPTA = 'FEPTA'
FEPTP = 'FEPTP'
FEQU = 'FEQU'
FESM = 'FESM'
FEST = 'FEST'
FEWE = 'FEWE'
FEYE = 'FEYE'
class OBFeeFrequency1Code2(Enum):
FEAC = 'FEAC'
FEAO = 'FEAO'
FECP = 'FECP'
FEDA = 'FEDA'
FEHO = 'FEHO'
FEI = 'FEI'
FEMO = 'FEMO'
FEOA = 'FEOA'
FEOT = 'FEOT'
FEPC = 'FEPC'
FEPH = 'FEPH'
FEPO = 'FEPO'
FEPS = 'FEPS'
FEPT = 'FEPT'
FEPTA = 'FEPTA'
FEPTP = 'FEPTP'
FEQU = 'FEQU'
FESM = 'FESM'
FEST = 'FEST'
FEWE = 'FEWE'
FEYE = 'FEYE'
class OBFeeFrequency1Code3(Enum):
FEAC = 'FEAC'
FEAO = 'FEAO'
FECP = 'FECP'
FEDA = 'FEDA'
FEHO = 'FEHO'
FEI = 'FEI'
FEMO = 'FEMO'
FEOA = 'FEOA'
FEOT = 'FEOT'
FEPC = 'FEPC'
FEPH = 'FEPH'
FEPO = 'FEPO'
FEPS = 'FEPS'
FEPT = 'FEPT'
FEPTA = 'FEPTA'
FEPTP = 'FEPTP'
FEQU = 'FEQU'
FESM = 'FESM'
FEST = 'FEST'
FEWE = 'FEWE'
FEYE = 'FEYE'
class OBFeeFrequency1Code4(Enum):
FEAC = 'FEAC'
FEAO = 'FEAO'
FECP = 'FECP'
FEDA = 'FEDA'
FEHO = 'FEHO'
FEI = 'FEI'
FEMO = 'FEMO'
FEOA = 'FEOA'
FEOT = 'FEOT'
FEPC = 'FEPC'
FEPH = 'FEPH'
FEPO = 'FEPO'
FEPS = 'FEPS'
FEPT = 'FEPT'
FEPTA = 'FEPTA'
FEPTP = 'FEPTP'
FEQU = 'FEQU'
FESM = 'FESM'
FEST = 'FEST'
FEWE = 'FEWE'
FEYE = 'FEYE'
class OBFeeType1Code(Enum):
FEPF = 'FEPF'
FTOT = 'FTOT'
FYAF = 'FYAF'
FYAM = 'FYAM'
FYAQ = 'FYAQ'
FYCP = 'FYCP'
FYDB = 'FYDB'
FYMI = 'FYMI'
FYXX = 'FYXX'
class OBInterestCalculationMethod1Code(Enum):
ITCO = 'ITCO'
ITOT = 'ITOT'
ITSI = 'ITSI'
class OBInterestFixedVariableType1Code(Enum):
INFI = 'INFI'
INVA = 'INVA'
class OBInterestRateType1Code0(Enum):
INBB = 'INBB'
INFR = 'INFR'
INGR = 'INGR'
INLR = 'INLR'
INNE = 'INNE'
INOT = 'INOT'
class OBInterestRateType1Code1(Enum):
INBB = 'INBB'
INFR = 'INFR'
INGR = 'INGR'
INLR = 'INLR'
INNE = 'INNE'
INOT = 'INOT'
class OBMinMaxType1Code(Enum):
FMMN = 'FMMN'
FMMX = 'FMMX'
class OBOtherCodeType10(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Code: Optional[OBCodeMnemonic] = None
Description: Description3
Name: Name4
class OBOtherCodeType11(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Code: Optional[OBCodeMnemonic] = None
Description: Description3
Name: Name4
class OBOtherCodeType12(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Code: Optional[OBCodeMnemonic] = None
Description: Description3
Name: Name4
class OBOtherCodeType13(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Code: Optional[OBCodeMnemonic] = None
Description: Description3
Name: Name4
class OBOtherCodeType14(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Code: Optional[OBCodeMnemonic] = None
Description: Description3
Name: Name4
class OBOtherCodeType15(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Code: Optional[OBCodeMnemonic] = None
Description: Description3
Name: Name4
class OBOtherCodeType16(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Code: Optional[OBCodeMnemonic] = None
Description: Description3
Name: Name4
class OBOtherCodeType17(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Code: Optional[OBCodeMnemonic] = None
Description: Description3
Name: Name4
class OBOtherCodeType18(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Code: Optional[OBCodeMnemonic] = None
Description: Description3
Name: Name4
class OBOtherFeeChargeDetailType(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Code: Optional[OBCodeMnemonic] = None
Description: Description3
FeeCategory: OBFeeCategory1Code
Name: Name4
class OBOverdraftFeeType1Code(Enum):
FBAO = 'FBAO'
FBAR = 'FBAR'
FBEB = 'FBEB'
FBIT = 'FBIT'
FBOR = 'FBOR'
FBOS = 'FBOS'
FBSC = 'FBSC'
FBTO = 'FBTO'
FBUB = 'FBUB'
FBUT = 'FBUT'
FTOT = 'FTOT'
FTUT = 'FTUT'
class OBPeriod1Code(Enum):
PACT = 'PACT'
PDAY = 'PDAY'
PHYR = 'PHYR'
PMTH = 'PMTH'
PQTR = 'PQTR'
PWEK = 'PWEK'
PYER = 'PYER'
class OBRate10Model(RootModel[constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$')]):
root: constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$') = Field(
...,
description='Rate charged for overdraft fee/charge (where it is charged in terms of a rate rather than an amount)',
)
class OBRate11Model(RootModel[constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$')]):
root: constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$') = Field(
...,
description='Rate charged for Fee/Charge (where it is charged in terms of a rate rather than an amount)',
)
class OpeningDate(RootModel[datetime]):
root: datetime = Field(
...,
description='Date on which the account and related basic services are effectively operational for the account owner.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',
)
class PartyId(RootModel[constr(min_length=1, max_length=40)]):
root: constr(min_length=1, max_length=40) = Field(
...,
description='A unique and immutable identifier used to identify the customer resource. This identifier has no meaning to the account owner.',
)
class PartyNumber(RootModel[constr(min_length=1, max_length=35)]):
root: constr(min_length=1, max_length=35) = Field(
..., description='Number assigned by an agent to identify its customer.'
)
class PhoneNumber0(RootModel[constr(pattern=r'\+[0-9]{1,3}-[0-9()+\-]{1,30}')]):
root: constr(pattern=r'\+[0-9]{1,3}-[0-9()+\-]{1,30}') = Field(
...,
description='Collection of information that identifies a phone number, as defined by telecom services.',
)
class PhoneNumber1(RootModel[constr(pattern=r'\+[0-9]{1,3}-[0-9()+\-]{1,30}')]):
root: constr(pattern=r'\+[0-9]{1,3}-[0-9()+\-]{1,30}') = Field(
...,
description='Collection of information that identifies a mobile phone number, as defined by telecom services.',
)
class PostCode(RootModel[constr(min_length=1, max_length=16)]):
root: constr(min_length=1, max_length=16) = Field(
...,
description='Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail.',
)
class PreviousPaymentDateTime(RootModel[datetime]):
root: datetime = Field(
...,
description='Date of most recent direct debit collection.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',
)
class ProprietaryBankTransactionCodeStructure1(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Code: constr(min_length=1, max_length=35) = Field(
...,
description='Proprietary bank transaction code to identify the underlying transaction.',
)
Issuer: Optional[constr(min_length=1, max_length=35)] = Field(
None,
description='Identification of the issuer of the proprietary bank transaction code.',
)
class Rate(RootModel[constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$')]):
root: constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$') = Field(
..., description='Rate associated with the statement rate type.'
)
class Reference(RootModel[constr(min_length=1, max_length=35)]):
root: constr(min_length=1, max_length=35) = Field(
...,
description="Unique reference, as assigned by the creditor, to unambiguously refer to the payment transaction.\nUsage: If available, the initiating party should provide this reference in the structured remittance information, to enable reconciliation by the creditor upon receipt of the amount of money.\nIf the business context requires the use of a creditor reference or a payment remit identification, and only one identifier can be passed through the end-to-end chain, the creditor's reference or payment remittance identification should be quoted in the end-to-end transaction identification.",
)
class ScheduledPaymentDateTime(RootModel[datetime]):
root: datetime = Field(
...,
description='The date on which the scheduled payment will be made.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',
)
class ScheduledPaymentId(RootModel[constr(min_length=1, max_length=40)]):
root: constr(min_length=1, max_length=40) = Field(
...,
description='A unique and immutable identifier used to identify the scheduled payment resource. This identifier has no meaning to the account owner.',
)
class SecondaryIdentification(RootModel[constr(min_length=1, max_length=34)]):
root: constr(min_length=1, max_length=34) = Field(
...,
description='This is secondary identification of the account, as assigned by the account servicing institution. \nThis can be used by building societies to additionally identify accounts with a roll number (in addition to a sort code and account number combination).',
)
class StandingOrderId(RootModel[constr(min_length=1, max_length=40)]):
root: constr(min_length=1, max_length=40) = Field(
...,
description='A unique and immutable identifier used to identify the standing order resource. This identifier has no meaning to the account owner.',
)
class StartDateTime(RootModel[datetime]):
root: datetime = Field(
...,
description='Date and time at which the statement period starts.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',
)
class StatementId(RootModel[constr(min_length=1, max_length=40)]):
root: constr(min_length=1, max_length=40) = Field(
...,
description='Unique identifier for the statement resource within an servicing institution. This identifier is both unique and immutable.',
)
class StatementReference(RootModel[constr(min_length=1, max_length=35)]):
root: constr(min_length=1, max_length=35) = Field(
...,
description='Unique reference for the statement. This reference may be optionally populated if available.',
)
class StatusUpdateDateTime(RootModel[datetime]):
root: datetime = Field(
...,
description='Date and time at which the resource status was updated.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',
)
class StreetName(RootModel[constr(min_length=1, max_length=70)]):
root: constr(min_length=1, max_length=70) = Field(
..., description='Name of a street or thoroughfare.'
)
class TownName(RootModel[constr(min_length=1, max_length=35)]):
root: constr(min_length=1, max_length=35) = Field(
...,
description='Name of a built-up area, with defined boundaries, and a local government.',
)
class TransactionId(RootModel[constr(min_length=1, max_length=210)]):
root: constr(min_length=1, max_length=210) = Field(
...,
description='Unique identifier for the transaction within an servicing institution. This identifier is both unique and immutable.',
)
class TransactionInformation(RootModel[constr(min_length=1, max_length=500)]):
root: constr(min_length=1, max_length=500) = Field(
...,
description='Further details of the transaction. \nThis is the transaction narrative, which is unstructured text.',
)
class TransactionReference(RootModel[constr(min_length=1, max_length=210)]):
root: constr(min_length=1, max_length=210) = Field(
...,
description='Unique reference for the transaction. This reference is optionally populated, and may as an example be the FPID in the Faster Payments context.',
)
class Value(RootModel[constr(min_length=1, max_length=40)]):
root: constr(min_length=1, max_length=40) = Field(
..., description='Value associated with the statement value type.'
)
class ValueDateTime(RootModel[datetime]):
root: datetime = Field(
...,
description='Date and time at which assets become available to the account owner in case of a credit entry, or cease to be available to the account owner in case of a debit transaction entry.\nUsage: If transaction entry status is pending and value date is present, then the value date refers to an expected/requested value date.\nFor transaction entries subject to availability/float and for which availability information is provided, the value date must not be used. In this case the availability component identifies the number of availability days.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',
)
class AccountItem(BaseModel):
Identification: Identification0
Name: Optional[Name0] = None
SchemeName: OBExternalAccountIdentification4Code
SecondaryIdentification_1: Optional[SecondaryIdentification] = Field(
None, alias='SecondaryIdentification'
)
class OBAccount4Basic(BaseModel):
AccountId_1: AccountId = Field(..., alias='AccountId')
AccountSubType: OBExternalAccountSubType1Code
AccountType: OBExternalAccountType1Code
Currency: ActiveOrHistoricCurrencyCode0
Description: Optional[Description0] = None
Nickname_1: Optional[Nickname] = Field(None, alias='Nickname')
Status: Optional[OBAccountStatus1Code] = None
StatusUpdateDateTime_1: Optional[StatusUpdateDateTime] = Field(
None, alias='StatusUpdateDateTime'
)
class OBAccount6Basic(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
AccountId_1: AccountId = Field(..., alias='AccountId')
AccountSubType: OBExternalAccountSubType1Code
AccountType: OBExternalAccountType1Code
Currency: ActiveOrHistoricCurrencyCode0
Description: Optional[Description0] = None
MaturityDate_1: Optional[MaturityDate] = Field(None, alias='MaturityDate')
Nickname_1: Optional[Nickname] = Field(None, alias='Nickname')
OpeningDate_1: Optional[OpeningDate] = Field(None, alias='OpeningDate')
Status: Optional[OBAccountStatus1Code] = None
StatusUpdateDateTime_1: Optional[StatusUpdateDateTime] = Field(
None, alias='StatusUpdateDateTime'
)
SwitchStatus: Optional[OBExternalSwitchStatusCode] = None
class OBBeneficiary5Basic(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
AccountId_1: Optional[AccountId] = Field(None, alias='AccountId')
BeneficiaryId_1: Optional[BeneficiaryId] = Field(None, alias='BeneficiaryId')
BeneficiaryType: Optional[OBBeneficiaryType1Code] = None
Reference_1: Optional[Reference] = Field(None, alias='Reference')
SupplementaryData: Optional[OBSupplementaryData1] = None
class OBBranchAndFinancialInstitutionIdentification50(BaseModel):
Identification: Identification1
SchemeName: OBExternalFinancialInstitutionIdentification4Code
class OBBranchAndFinancialInstitutionIdentification51(BaseModel):
Identification: Identification1
SchemeName: OBExternalFinancialInstitutionIdentification4Code
class OBCashAccount50(BaseModel):
Identification: Identification0
Name: Optional[Name0] = None
SchemeName: OBExternalAccountIdentification4Code
SecondaryIdentification_1: Optional[SecondaryIdentification] = Field(
None, alias='SecondaryIdentification'
)
class OBCashAccount51(BaseModel):
Identification: constr(min_length=1, max_length=256) = Field(
..., description='Beneficiary account identification.'
)
Name: Optional[Name0] = None
SchemeName: OBExternalAccountIdentification4Code
SecondaryIdentification_1: Optional[SecondaryIdentification] = Field(
None, alias='SecondaryIdentification'
)
class OBCashAccount60(BaseModel):
Identification: Optional[Identification0] = None
Name: Optional[Name0] = None
SchemeName: Optional[OBExternalAccountIdentification4Code] = None
SecondaryIdentification_1: Optional[SecondaryIdentification] = Field(
None, alias='SecondaryIdentification'
)
class OBCashAccount61(BaseModel):
Identification: Optional[Identification0] = None
Name: Optional[Name0] = None
SchemeName: Optional[OBExternalAccountIdentification4Code] = None
SecondaryIdentification_1: Optional[SecondaryIdentification] = Field(
None, alias='SecondaryIdentification'
)
class Addres(BaseModel):
AddressLine: Optional[List[AddressLineItem]] = Field(
None, max_length=5, min_length=0
)
AddressType: Optional[OBAddressTypeCode] = None
BuildingNumber_1: Optional[BuildingNumber] = Field(None, alias='BuildingNumber')
Country: CountryCode
CountrySubDivision_1: Optional[CountrySubDivision] = Field(
None, alias='CountrySubDivision'
)
PostCode_1: Optional[PostCode] = Field(None, alias='PostCode')
StreetName_1: Optional[StreetName] = Field(None, alias='StreetName')
TownName_1: Optional[TownName] = Field(None, alias='TownName')
class OBParty2(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
AccountRole: Optional[OBExternalAccountRole1Code] = None
Address: Optional[List[Addres]] = None
BeneficialOwnership: Optional[bool] = None
EmailAddress_1: Optional[EmailAddress] = Field(None, alias='EmailAddress')
FullLegalName_1: Optional[FullLegalName] = Field(None, alias='FullLegalName')
LegalStructure: Optional[OBExternalLegalStructureType1Code] = None
Mobile: Optional[PhoneNumber1] = None
Name: Optional[Name3] = None
PartyId_1: PartyId = Field(..., alias='PartyId')
PartyNumber_1: Optional[PartyNumber] = Field(None, alias='PartyNumber')
PartyType: Optional[OBExternalPartyType1Code] = None
Phone: Optional[PhoneNumber0] = None
Relationships: Optional[OBPartyRelationships1] = None
class OBPostalAddress6(BaseModel):
AddressLine: Optional[List[AddressLineItem1]] = Field(
None, max_length=7, min_length=0
)
AddressType: Optional[OBAddressTypeCode] = None
BuildingNumber_1: Optional[BuildingNumber] = Field(None, alias='BuildingNumber')
Country: Optional[constr(pattern=r'^[A-Z]{2,2}$')] = Field(
None, description='Nation with its own government.'
)
CountrySubDivision: Optional[constr(min_length=1, max_length=35)] = Field(
None,
description='Identifies a subdivision of a country such as state, region, county.',
)
Department: Optional[constr(min_length=1, max_length=70)] = Field(
None,
description='Identification of a division of a large organisation or building.',
)
PostCode_1: Optional[PostCode] = Field(None, alias='PostCode')
StreetName_1: Optional[StreetName] = Field(None, alias='StreetName')
SubDepartment: Optional[constr(min_length=1, max_length=70)] = Field(
None,
description='Identification of a sub-division of a large organisation or building.',
)
TownName_1: Optional[TownName] = Field(None, alias='TownName')
class OBReadConsent1(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Data: Data3
Risk: OBRisk2
class Data4(BaseModel):
ConsentId: constr(min_length=1, max_length=128) = Field(
...,
description='Unique identification as assigned to identify the account access consent resource.',
)
CreationDateTime_1: CreationDateTime = Field(..., alias='CreationDateTime')
ExpirationDateTime: Optional[datetime] = Field(
None,
description='Specified date and time the permissions will expire.\nIf this is not populated, the permissions will be open ended.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',
)
Permissions: List[Permission] = Field(..., min_length=1)
Status_1: Status = Field(
...,
alias='Status',
description='Specifies the status of consent resource in code form.',
)
StatusUpdateDateTime_1: StatusUpdateDateTime = Field(
..., alias='StatusUpdateDateTime'
)
TransactionFromDateTime: Optional[datetime] = Field(
None,
description='Specified start date and time for the transaction query period.\nIf this is not populated, the start date will be open ended, and data will be returned from the earliest available transaction.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',
)
TransactionToDateTime: Optional[datetime] = Field(
None,
description='Specified end date and time for the transaction query period.\nIf this is not populated, the end date will be open ended, and data will be returned to the latest available transaction.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',
)
class OBReadConsentResponse1(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Data: Data4
Links_1: Optional[Links] = Field(None, alias='Links')
Meta_1: Optional[Meta] = Field(None, alias='Meta')
Risk: OBRisk2
class DirectDebitItem(BaseModel):
AccountId_1: AccountId = Field(..., alias='AccountId')
DirectDebitId_1: Optional[DirectDebitId] = Field(None, alias='DirectDebitId')
DirectDebitStatusCode: Optional[OBExternalDirectDebitStatus1Code] = None
Frequency: Optional[str] = Field(
None,
description='Regularity with which direct debit instructions are to be created and processed.',
)
MandateIdentification_1: MandateIdentification = Field(
..., alias='MandateIdentification'
)
Name: Name2
PreviousPaymentAmount: Optional[OBActiveOrHistoricCurrencyAndAmount0] = None
PreviousPaymentDateTime_1: Optional[PreviousPaymentDateTime] = Field(
None, alias='PreviousPaymentDateTime'
)
class Data5(BaseModel):
DirectDebit: Optional[List[DirectDebitItem]] = None
class OBReadDirectDebit2(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Data: Data5
Links_1: Optional[Links] = Field(None, alias='Links')
Meta_1: Optional[Meta] = Field(None, alias='Meta')
class Data7(BaseModel):
Party: Optional[OBParty2] = None
class OBReadParty2(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Data: Data7
Links_1: Optional[Links] = Field(None, alias='Links')
Meta_1: Optional[Meta] = Field(None, alias='Meta')
class Data8(BaseModel):
Party: Optional[List[OBParty2]] = None
class OBReadParty3(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Data: Data8
Links_1: Optional[Links] = Field(None, alias='Links')
Meta_1: Optional[Meta] = Field(None, alias='Meta')
class OtherBankInterestType2(BaseModel):
Code: Optional[OBCodeMnemonic] = None
Description: Description3
Name: Name4
class TierBandItem2(BaseModel):
AER: constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$') = Field(
...,
description='The annual equivalent rate (AER) is interest that is calculated under the assumption that any interest paid is combined with the original balance and the next interest payment will be based on the slightly higher account balance. Overall, this means that interest can be compounded several times in a year depending on the number of times that interest payments are made. \nRead more: Annual Equivalent Rate (AER) http://www.investopedia.com/terms/a/aer.asp#ixzz4gfR7IO1A',
)
ApplicationFrequency: ApplicationFrequency8 = Field(
...,
description="How often is interest applied to the Product for this tier/band i.e. how often the financial institution pays accumulated interest to the customer's account.",
)
BankInterestRate: Optional[constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$')] = (
Field(None, description='Bank Interest for the product')
)
BankInterestRateType: Optional[BankInterestRateType2] = Field(
None,
description="Interest rate types, other than AER, which financial institutions may use to describe the annual interest rate payable to the account holder's account.",
)
CalculationFrequency: Optional[CalculationFrequency8] = Field(
None, description='How often is credit interest calculated for the account.'
)
DepositInterestAppliedCoverage: Optional[DepositInterestAppliedCoverage2] = Field(
None, description='Amount on which Interest applied.'
)
FixedVariableInterestRateType: OBInterestFixedVariableType1Code
Identification: Optional[constr(min_length=1, max_length=35)] = Field(
None,
description='Unique and unambiguous identification of a Tier Band for the Product.',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = None
OtherApplicationFrequency: Optional[OBOtherCodeType11] = None
OtherBankInterestType: Optional[OtherBankInterestType2] = Field(
None,
description='Other interest rate types which are not available in the standard code list',
)
OtherCalculationFrequency: Optional[OBOtherCodeType12] = None
TierValueMaximum: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='Maximum deposit value for which the credit interest tier applies.',
)
)
TierValueMinimum: constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$') = Field(
...,
description='Minimum deposit value for which the credit interest tier applies.',
)
class TierBandSetItem2(BaseModel):
CalculationMethod: Optional[OBInterestCalculationMethod1Code] = None
Destination: Destination2 = Field(
...,
description='Describes whether accrued interest is payable only to the BCA or to another bank account',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = None
OtherCalculationMethod: Optional[OBOtherCodeType10] = None
OtherDestination: Optional[OBOtherCodeType10] = None
TierBand: List[TierBandItem2] = Field(..., min_length=1)
TierBandMethod: TierBandMethod4 = Field(
...,
description="The methodology of how credit interest is paid/applied. It can be:-\n1. Banded\nInterest rates are banded. i.e. Increasing rate on whole balance as balance increases.\n2. Tiered\nInterest rates are tiered. i.e. increasing rate for each tier as balance increases, but interest paid on tier fixed for that tier and not on whole balance.\n3. Whole\nThe same interest rate is applied irrespective of the product holder's account balance",
)
class CreditInterest2(BaseModel):
TierBandSet: List[TierBandSetItem2] = Field(..., min_length=1)
class OtherFeeTypeItem12(BaseModel):
Code: Optional[OBCodeMnemonic] = None
Description: Description3
Name: Name4
class LoanInterestFeeChargeCapItem(BaseModel):
CappingPeriod: Optional[OBFeeFrequency1Code4] = None
FeeCapAmount: Optional[OBAmount14] = None
FeeCapOccurrence: Optional[Number1] = None
FeeType: List[FeeTypeEnum12] = Field(..., min_length=1)
MinMaxType: OBMinMaxType1Code
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = None
OtherFeeType: Optional[List[OtherFeeTypeItem12]] = None
class LoanInterestFeeChargeDetailItem(BaseModel):
ApplicationFrequency: OBFeeFrequency1Code2
CalculationFrequency: OBFeeFrequency1Code3
FeeAmount: Optional[OBAmount13] = None
FeeRate: Optional[OBRate11Model] = None
FeeRateType: Optional[OBInterestRateType1Code1] = None
FeeType: OBFeeType1Code
NegotiableIndicator: Optional[bool] = Field(
None,
description='Fee/charge which is usually negotiable rather than a fixed amount',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = None
OtherApplicationFrequency: Optional[OBOtherCodeType16] = None
OtherCalculationFrequency: Optional[OBOtherCodeType17] = None
OtherFeeRateType: Optional[OBOtherCodeType15] = None
OtherFeeType: Optional[OBOtherFeeChargeDetailType] = None
class LoanInterestFeesCharge(BaseModel):
LoanInterestFeeChargeCap: Optional[List[LoanInterestFeeChargeCapItem]] = None
LoanInterestFeeChargeDetail: List[LoanInterestFeeChargeDetailItem] = Field(
..., min_length=1
)
class LoanInterestFeeChargeCapItem1(BaseModel):
CappingPeriod: Optional[OBFeeFrequency1Code4] = None
FeeCapAmount: Optional[OBAmount14] = None
FeeCapOccurrence: Optional[Number1] = None
FeeType: List[FeeTypeEnum12] = Field(..., min_length=1)
MinMaxType: OBMinMaxType1Code
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = None
OtherFeeType: Optional[List[OtherFeeTypeItem12]] = None
class LoanInterestFeesCharge1(BaseModel):
LoanInterestFeeChargeCap: Optional[List[LoanInterestFeeChargeCapItem1]] = None
LoanInterestFeeChargeDetail: List[LoanInterestFeeChargeDetailItem] = Field(
..., min_length=1
)
class OtherLoanProviderInterestRateType(BaseModel):
Code: Optional[OBCodeMnemonic] = None
Description: Description3
Name: Name4
class LoanInterestTierBandItem(BaseModel):
FixedVariableInterestRateType: OBInterestFixedVariableType1Code
Identification: Optional[constr(min_length=1, max_length=35)] = Field(
None,
description='Unique and unambiguous identification of a Tier Band for a SME Loan.',
)
LoanInterestFeesCharges: Optional[List[LoanInterestFeesCharge1]] = None
LoanProviderInterestRate: Optional[
constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$')
] = Field(None, description='Loan provider Interest for the SME Loan product')
LoanProviderInterestRateType_1: Optional[LoanProviderInterestRateType] = Field(
None,
alias='LoanProviderInterestRateType',
description='Interest rate types, other than APR, which financial institutions may use to describe the annual interest rate payable for the SME Loan.',
)
MaxTermPeriod_1: Optional[MaxTermPeriod] = Field(
None,
alias='MaxTermPeriod',
description='The unit of period (days, weeks, months etc.) of the Maximum Term',
)
MinTermPeriod_1: MinTermPeriod = Field(
...,
alias='MinTermPeriod',
description='The unit of period (days, weeks, months etc.) of the Minimum Term',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = None
OtherLoanProviderInterestRateType_1: Optional[OtherLoanProviderInterestRateType] = (
Field(
None,
alias='OtherLoanProviderInterestRateType',
description='Other loan interest rate types which are not available in the standard code list',
)
)
RepAPR: constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$') = Field(
...,
description='The annual equivalent rate (AER) is interest that is calculated under the assumption that any interest paid is combined with the original balance and the next interest payment will be based on the slightly higher account balance. Overall, this means that interest can be compounded several times in a year depending on the number of times that interest payments are made. \nFor SME Loan, this APR is the representative APR which includes any account fees.',
)
TierValueMaxTerm: Optional[int] = Field(
None, description='Maximum loan term for which the loan interest tier applies.'
)
TierValueMaximum: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='Maximum loan value for which the loan interest tier applies.',
)
)
TierValueMinTerm: int = Field(
..., description='Minimum loan term for which the loan interest tier applies.'
)
TierValueMinimum: constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$') = Field(
..., description='Minimum loan value for which the loan interest tier applies.'
)
class LoanInterestTierBandSetItem(BaseModel):
CalculationMethod: OBInterestCalculationMethod1Code
Identification: Optional[constr(min_length=1, max_length=35)] = Field(
None,
description='Loan interest tierbandset identification. Used by loan providers for internal use purpose.',
)
LoanInterestFeesCharges: Optional[List[LoanInterestFeesCharge]] = None
LoanInterestTierBand: List[LoanInterestTierBandItem] = Field(..., min_length=1)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = None
OtherCalculationMethod: Optional[OBOtherCodeType10] = None
TierBandMethod: TierBandMethod4 = Field(
...,
description='The methodology of how credit interest is charged. It can be:-\n1. Banded\nInterest rates are banded. i.e. Increasing rate on whole balance as balance increases.\n2. Tiered\nInterest rates are tiered. i.e. increasing rate for each tier as balance increases, but interest paid on tier fixed for that tier and not on whole balance.\n3. Whole\nThe same interest rate is applied irrespective of the SME Loan balance',
)
class LoanInterest(BaseModel):
LoanInterestTierBandSet: List[LoanInterestTierBandSetItem] = Field(
..., min_length=1
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = None
class FeeChargeCapItem4(BaseModel):
CappingPeriod: Optional[OBPeriod1Code] = None
FeeCapAmount: Optional[OBAmount14] = None
FeeCapOccurrence: Optional[Number1] = None
FeeType: List[FeeTypeEnum12] = Field(..., min_length=1)
MinMaxType: OBMinMaxType1Code
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = None
OtherFeeType: Optional[List[OtherFeeTypeItem12]] = None
class FeeChargeCapItem5(BaseModel):
CappingPeriod: Optional[OBPeriod1Code] = None
FeeCapAmount: Optional[OBAmount14] = None
FeeCapOccurrence: Optional[Number1] = None
FeeType: List[FeeTypeEnum12] = Field(..., min_length=1)
MinMaxType: OBMinMaxType1Code
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = None
OtherFeeType: Optional[List[OtherFeeTypeItem12]] = None
class FeeChargeDetailItem2(BaseModel):
ApplicationFrequency: OBFeeFrequency1Code2
CalculationFrequency: Optional[OBFeeFrequency1Code3] = None
FeeAmount: Optional[OBAmount13] = None
FeeApplicableRange: Optional[FeeApplicableRange2] = Field(
None, description='Range or amounts or rates for which the fee/charge applies'
)
FeeCategory: OBFeeCategory1Code
FeeChargeCap: Optional[List[FeeChargeCapItem5]] = None
FeeRate: Optional[OBRate11Model] = None
FeeRateType: Optional[OBInterestRateType1Code1] = None
FeeType: OBFeeType1Code
NegotiableIndicator: Optional[bool] = Field(
None,
description='Fee/charge which is usually negotiable rather than a fixed amount',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = None
OtherApplicationFrequency: Optional[OBOtherCodeType16] = None
OtherCalculationFrequency: Optional[OBOtherCodeType17] = None
OtherFeeCategoryType: Optional[OBOtherCodeType10] = None
OtherFeeRateType: Optional[OBOtherCodeType18] = None
OtherFeeType: Optional[OBOtherFeeChargeDetailType] = None
class OtherTariffType1(BaseModel):
Code: Optional[OBCodeMnemonic] = None
Description: Description3
Name: Name4
class OtherFeesCharge1(BaseModel):
FeeChargeCap: Optional[List[FeeChargeCapItem4]] = None
FeeChargeDetail: List[FeeChargeDetailItem2] = Field(..., min_length=1)
OtherTariffType: Optional[OtherTariffType1] = Field(
None, description='Other tariff type which is not in the standard list.'
)
TariffName: Optional[constr(min_length=1, max_length=350)] = Field(
None, description='Name of the tariff'
)
TariffType: Optional[TariffType1] = Field(
None, description='TariffType which defines the fee and charges.'
)
class OverdraftFeeChargeCapItem6(BaseModel):
CappingPeriod: Optional[OBPeriod1Code] = None
FeeCapAmount: Optional[OBAmount10] = None
FeeCapOccurrence: Optional[Number0] = None
FeeType: List[FeeTypeEnum16] = Field(..., min_length=1)
MinMaxType: OBMinMaxType1Code
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = None
OtherFeeType: Optional[List[OtherFeeTypeItem12]] = None
class OverdraftFeeChargeCapItem7(BaseModel):
CappingPeriod: Optional[OBPeriod1Code] = None
FeeCapAmount: Optional[OBAmount10] = None
FeeCapOccurrence: Optional[Number0] = None
FeeType: List[FeeTypeEnum16] = Field(..., min_length=1)
MinMaxType: OBMinMaxType1Code
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = None
OtherFeeType: Optional[List[OtherFeeTypeItem12]] = None
class OverdraftFeeChargeDetailItem4(BaseModel):
ApplicationFrequency: OBFeeFrequency1Code0
CalculationFrequency: Optional[OBFeeFrequency1Code1] = None
FeeAmount: Optional[OBAmount12] = None
FeeRate: Optional[OBRate10Model] = None
FeeRateType: Optional[OBInterestRateType1Code0] = None
FeeType: OBOverdraftFeeType1Code
IncrementalBorrowingAmount: Optional[OBAmount11] = None
NegotiableIndicator: Optional[bool] = Field(
None, description='Indicates whether fee and charges are negotiable'
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = None
OtherApplicationFrequency: Optional[OBOtherCodeType11] = None
OtherCalculationFrequency: Optional[OBOtherCodeType12] = None
OtherFeeRateType: Optional[OBOtherCodeType14] = None
OtherFeeType: Optional[OBOtherCodeType13] = None
OverdraftControlIndicator: Optional[bool] = Field(
None,
description="Indicates if the fee/charge is already covered by an 'Overdraft Control' fee or not.",
)
OverdraftFeeChargeCap: Optional[List[OverdraftFeeChargeCapItem7]] = None
class OverdraftFeesCharge4(BaseModel):
OverdraftFeeChargeCap: Optional[List[OverdraftFeeChargeCapItem6]] = None
OverdraftFeeChargeDetail: List[OverdraftFeeChargeDetailItem4] = Field(
..., min_length=1
)
class OverdraftFeeChargeCapItem8(BaseModel):
CappingPeriod: Optional[OBPeriod1Code] = None
FeeCapAmount: Optional[OBAmount10] = None
FeeCapOccurrence: Optional[Number0] = None
FeeType: List[FeeTypeEnum16] = Field(..., min_length=1)
MinMaxType: OBMinMaxType1Code
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = None
OtherFeeType: Optional[List[OtherFeeTypeItem12]] = None
class OverdraftFeeChargeCapItem9(BaseModel):
CappingPeriod: Optional[OBPeriod1Code] = None
FeeCapAmount: Optional[OBAmount10] = None
FeeCapOccurrence: Optional[Number0] = None
FeeType: List[FeeTypeEnum16] = Field(..., min_length=1)
MinMaxType: OBMinMaxType1Code
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = None
OtherFeeType: Optional[List[OtherFeeTypeItem12]] = None
class OverdraftFeeChargeDetailItem5(BaseModel):
ApplicationFrequency: OBFeeFrequency1Code0
CalculationFrequency: Optional[OBFeeFrequency1Code1] = None
FeeAmount: Optional[OBAmount12] = None
FeeRate: Optional[OBRate10Model] = None
FeeRateType: Optional[OBInterestRateType1Code0] = None
FeeType: OBOverdraftFeeType1Code
IncrementalBorrowingAmount: Optional[OBAmount11] = None
NegotiableIndicator: Optional[bool] = Field(
None, description='Indicates whether fee and charges are negotiable'
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = None
OtherApplicationFrequency: Optional[OBOtherCodeType11] = None
OtherCalculationFrequency: Optional[OBOtherCodeType12] = None
OtherFeeRateType: Optional[OBOtherCodeType14] = None
OtherFeeType: Optional[OBOtherCodeType13] = None
OverdraftControlIndicator: Optional[bool] = Field(
None,
description="Indicates if the fee/charge is already covered by an 'Overdraft Control' fee or not.",
)
OverdraftFeeChargeCap: Optional[List[OverdraftFeeChargeCapItem9]] = None
class OverdraftFeesCharge5(BaseModel):
OverdraftFeeChargeCap: Optional[List[OverdraftFeeChargeCapItem8]] = None
OverdraftFeeChargeDetail: List[OverdraftFeeChargeDetailItem5] = Field(
..., min_length=1
)
class OverdraftTierBandItem2(BaseModel):
AgreementLengthMax: Optional[int] = Field(
None,
description='Specifies the maximum length of a band for a fixed overdraft agreement',
)
AgreementLengthMin: Optional[int] = Field(
None,
description='Specifies the minimum length of a band for a fixed overdraft agreement',
)
AgreementPeriod: Optional[AgreementPeriod1] = Field(
None, description='Specifies the period of a fixed length overdraft agreement'
)
BankGuaranteedIndicator: Optional[bool] = Field(
None,
description='Indicates whether the advertised overdraft rate is guaranteed to be offered to a borrower by the bank e.g. if it�s part of a government scheme, or whether the rate may vary dependent on the applicant�s circumstances.',
)
EAR: Optional[constr(pattern=r'^(-?\d{1,3}){1}(\.\d{1,4}){0,1}$')] = Field(
None,
description='EAR means Effective Annual Rate and/or Equivalent Annual Rate (frequently\nused interchangeably), being the actual annual interest rate of an Overdraft.',
)
Identification: Optional[constr(min_length=1, max_length=35)] = Field(
None,
description='Unique and unambiguous identification of a Tier Band for a overdraft.',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = None
OverdraftFeesCharges: Optional[List[OverdraftFeesCharge5]] = None
OverdraftInterestChargingCoverage: Optional[OverdraftInterestChargingCoverage2] = (
Field(
None,
description='Refers to which interest rate is applied when interests are tiered. For example, if an overdraft balance is �2k and the interest tiers are:- 0-�500 0.1%, 500-1000 0.2%, 1000-10000 0.5%, then the applicable interest rate could either be 0.5% of the entire balance (since the account balance sits in the top interest tier) or (0.1%*500)+(0.2%*500)+(0.5%*1000). In the 1st situation, we say the interest is applied to the �Whole� of the account balance, and in the 2nd that it is �Tiered�.',
)
)
TierValueMax: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = (
Field(None, description='Maximum value of Overdraft Tier/Band')
)
TierValueMin: constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$') = Field(
..., description='Minimum value of Overdraft Tier/Band'
)
class OverdraftTierBandSetItem2(BaseModel):
AuthorisedIndicator: Optional[bool] = Field(
None,
description='Indicates if the Overdraft is authorised (Y) or unauthorised (N)',
)
BufferAmount: Optional[constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')] = (
Field(
None,
description='When a customer exceeds their credit limit, a financial institution will not charge the customer unauthorised overdraft charges if they do not exceed by more than the buffer amount. Note: Authorised overdraft charges may still apply.',
)
)
Identification: Optional[constr(min_length=1, max_length=35)] = Field(
None,
description='Unique and unambiguous identification of a Tier Band for a overdraft product.',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = None
OverdraftFeesCharges: Optional[List[OverdraftFeesCharge4]] = None
OverdraftTierBand: List[OverdraftTierBandItem2] = Field(..., min_length=1)
OverdraftType: Optional[OverdraftType2] = Field(
None,
description="An overdraft can either be 'committed' which means that the facility cannot be withdrawn without reasonable notification before it's agreed end date, or 'on demand' which means that the financial institution can demand repayment at any point in time.",
)
TierBandMethod: TierBandMethod4 = Field(
...,
description="The methodology of how overdraft is charged. It can be:\n'Whole' Where the same charge/rate is applied to the entirety of the overdraft balance (where charges are applicable). \n'Tiered' Where different charges/rates are applied dependent on overdraft maximum and minimum balance amount tiers defined by the lending financial organisation\n'Banded' Where different charges/rates are applied dependent on overdraft maximum and minimum balance amount bands defined by a government organisation.",
)
class Overdraft2(BaseModel):
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = None
OverdraftTierBandSet: List[OverdraftTierBandSetItem2] = Field(..., min_length=1)
class ProductDetails2(BaseModel):
FeeFreeLength: Optional[int] = Field(
None, description='The length/duration of the fee free period'
)
FeeFreeLengthPeriod: Optional[FeeFreeLengthPeriod1] = Field(
None,
description='The unit of period (days, weeks, months etc.) of the promotional length',
)
MonthlyMaximumCharge: Optional[
constr(pattern=r'^(-?\d{1,14}){1}(\.\d{1,4}){0,1}$')
] = Field(
None,
description='The maximum relevant charges that could accrue as defined fully in Part 7 of the CMA order',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = None
OtherSegment: Optional[OBOtherCodeType10] = None
Segment: Optional[List[SegmentEnum2]] = None
class OtherAmountType(BaseModel):
Code: Optional[OBCodeMnemonic] = None
Description: Description3
Name: Name4
class OtherRepaymentFrequency(BaseModel):
Code: Optional[OBCodeMnemonic] = None
Description: Description3
Name: Name4
class OtherRepaymentType(BaseModel):
Code: Optional[OBCodeMnemonic] = None
Description: Description3
Name: Name4
class RepaymentFeeChargeCapItem(BaseModel):
CappingPeriod: Optional[OBPeriod1Code] = None
FeeCapAmount: Optional[OBAmount14] = None
FeeCapOccurrence: Optional[Number1] = None
FeeType: List[FeeTypeEnum20] = Field(..., min_length=1)
MinMaxType: OBMinMaxType1Code
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = None
OtherFeeType: Optional[List[OtherFeeTypeItem12]] = None
class RepaymentFeeChargeDetailItem(BaseModel):
ApplicationFrequency: OBFeeFrequency1Code2
CalculationFrequency: OBFeeFrequency1Code3
FeeAmount: Optional[OBAmount13] = None
FeeRate: Optional[OBRate11Model] = None
FeeRateType: Optional[OBInterestRateType1Code1] = None
FeeType: OBFeeType1Code
NegotiableIndicator: Optional[bool] = Field(
None,
description='Fee/charge which is usually negotiable rather than a fixed amount',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = None
OtherApplicationFrequency: Optional[OBOtherCodeType16] = None
OtherCalculationFrequency: Optional[OBOtherCodeType17] = None
OtherFeeRateType: Optional[OBOtherCodeType18] = None
OtherFeeType: Optional[OBOtherFeeChargeDetailType] = None
class RepaymentFeeCharges(BaseModel):
RepaymentFeeChargeCap: Optional[List[RepaymentFeeChargeCapItem]] = None
RepaymentFeeChargeDetail: List[RepaymentFeeChargeDetailItem] = Field(
..., min_length=1
)
class Repayment(BaseModel):
AmountType_1: Optional[AmountType] = Field(
None,
alias='AmountType',
description='The repayment is for paying just the interest only or both interest and capital or bullet amount or balance to date etc',
)
Notes: Optional[List[constr(min_length=1, max_length=2000)]] = None
OtherAmountType_1: Optional[OtherAmountType] = Field(
None,
alias='OtherAmountType',
description='Other amount type which is not in the standard code list',
)
OtherRepaymentFrequency_1: Optional[OtherRepaymentFrequency] = Field(
None,
alias='OtherRepaymentFrequency',
description='Other repayment frequency which is not in the standard code list',
)
OtherRepaymentType_1: Optional[OtherRepaymentType] = Field(
None,
alias='OtherRepaymentType',
description='Other repayment type which is not in the standard code list',
)
RepaymentFeeCharges_1: Optional[RepaymentFeeCharges] = Field(
None,
alias='RepaymentFeeCharges',
description='Applicable fee/charges for repayment such as prepayment, full early repayment or non repayment.',
)
RepaymentFrequency_1: Optional[RepaymentFrequency] = Field(
None, alias='RepaymentFrequency', description='Repayment frequency'
)
RepaymentHoliday: Optional[List[RepaymentHolidayItem]] = None
RepaymentType_1: Optional[RepaymentType] = Field(
None, alias='RepaymentType', description='Repayment type'
)
class OtherProductType(BaseModel):
CreditInterest: Optional[CreditInterest2] = Field(
None,
description='Details about the interest that may be payable to the Account holders',
)
Description: constr(min_length=1, max_length=350) = Field(
..., description='Description of the Product associated with the account'
)
LoanInterest_1: Optional[LoanInterest] = Field(
None,
alias='LoanInterest',
description='Details about the interest that may be payable to the SME Loan holders',
)
Name: constr(min_length=1, max_length=350) = Field(
..., description='Long name associated with the product'
)
OtherFeesCharges: Optional[List[OtherFeesCharge1]] = None
Overdraft: Optional[Overdraft2] = Field(None, description='Borrowing details')
ProductDetails: Optional[ProductDetails2] = None
Repayment_1: Optional[Repayment] = Field(
None, alias='Repayment', description='Repayment details of the Loan product'
)
SupplementaryData: Optional[OBSupplementaryData1] = None
class ProductItem(BaseModel):
AccountId_1: AccountId = Field(..., alias='AccountId')
BCA: Optional[OBBCAData1] = None
MarketingStateId: Optional[constr(min_length=1, max_length=35)] = Field(
None,
description='Unique and unambiguous identification of a Product Marketing State.',
)
OtherProductType_1: Optional[OtherProductType] = Field(
None,
alias='OtherProductType',
description='Other product type details associated with the account.',
)
PCA: Optional[OBPCAData1] = None
ProductId: Optional[constr(min_length=1, max_length=40)] = Field(
None,
description='The unique ID that has been internally assigned by the financial institution to each of the current account banking products they market to their retail and/or small to medium enterprise (SME) customers.',
)
ProductName: Optional[constr(min_length=1, max_length=350)] = Field(
None,
description='The name of the Product used for marketing purposes from a customer perspective. I.e. what the customer would recognise.',
)
ProductType_1: ProductType = Field(
...,
alias='ProductType',
description='Product type : Personal Current Account, Business Current Account',
)
SecondaryProductId: Optional[constr(min_length=1, max_length=70)] = Field(
None,
description='Any secondary Identification which supports Product Identifier to uniquely identify the current account banking products.',
)
class Data9(BaseModel):
Product: Optional[List[ProductItem]] = None
class OBReadProduct2(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Data: Data9 = Field(
..., description='Aligning with the read write specs structure.'
)
Links_1: Optional[Links] = Field(None, alias='Links')
Meta_1: Optional[Meta] = Field(None, alias='Meta')
class OBScheduledPayment3(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
AccountId_1: AccountId = Field(..., alias='AccountId')
CreditorAccount: Optional[OBCashAccount51] = None
CreditorAgent: Optional[OBBranchAndFinancialInstitutionIdentification51] = None
DebtorReference_1: Optional[DebtorReference] = Field(None, alias='DebtorReference')
InstructedAmount: OBActiveOrHistoricCurrencyAndAmount1
Reference_1: Optional[Reference] = Field(None, alias='Reference')
ScheduledPaymentDateTime_1: ScheduledPaymentDateTime = Field(
..., alias='ScheduledPaymentDateTime'
)
ScheduledPaymentId_1: Optional[ScheduledPaymentId] = Field(
None, alias='ScheduledPaymentId'
)
ScheduledType: OBExternalScheduleType1Code
class OBScheduledPayment3Basic(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
AccountId_1: AccountId = Field(..., alias='AccountId')
DebtorReference_1: Optional[DebtorReference] = Field(None, alias='DebtorReference')
InstructedAmount: OBActiveOrHistoricCurrencyAndAmount1
Reference_1: Optional[Reference] = Field(None, alias='Reference')
ScheduledPaymentDateTime_1: ScheduledPaymentDateTime = Field(
..., alias='ScheduledPaymentDateTime'
)
ScheduledPaymentId_1: Optional[ScheduledPaymentId] = Field(
None, alias='ScheduledPaymentId'
)
ScheduledType: OBExternalScheduleType1Code
class OBScheduledPayment3Detail(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
AccountId_1: AccountId = Field(..., alias='AccountId')
CreditorAccount: OBCashAccount51
CreditorAgent: Optional[OBBranchAndFinancialInstitutionIdentification51] = None
DebtorReference_1: Optional[DebtorReference] = Field(None, alias='DebtorReference')
InstructedAmount: OBActiveOrHistoricCurrencyAndAmount1
Reference_1: Optional[Reference] = Field(None, alias='Reference')
ScheduledPaymentDateTime_1: ScheduledPaymentDateTime = Field(
..., alias='ScheduledPaymentDateTime'
)
ScheduledPaymentId_1: Optional[ScheduledPaymentId] = Field(
None, alias='ScheduledPaymentId'
)
ScheduledType: OBExternalScheduleType1Code
class OBStandingOrder6(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
AccountId_1: AccountId = Field(..., alias='AccountId')
CreditorAccount: Optional[OBCashAccount51] = None
CreditorAgent: Optional[OBBranchAndFinancialInstitutionIdentification51] = None
FinalPaymentAmount: Optional[OBActiveOrHistoricCurrencyAndAmount4] = None
FinalPaymentDateTime_1: Optional[FinalPaymentDateTime] = Field(
None, alias='FinalPaymentDateTime'
)
FirstPaymentAmount: Optional[OBActiveOrHistoricCurrencyAndAmount2] = None
FirstPaymentDateTime_1: Optional[FirstPaymentDateTime] = Field(
None, alias='FirstPaymentDateTime'
)
Frequency: Frequency1
LastPaymentAmount: Optional[OBActiveOrHistoricCurrencyAndAmount11] = None
LastPaymentDateTime_1: Optional[LastPaymentDateTime] = Field(
None, alias='LastPaymentDateTime'
)
NextPaymentAmount: Optional[OBActiveOrHistoricCurrencyAndAmount3] = None
NextPaymentDateTime_1: Optional[NextPaymentDateTime] = Field(
None, alias='NextPaymentDateTime'
)
NumberOfPayments_1: Optional[NumberOfPayments] = Field(
None, alias='NumberOfPayments'
)
Reference_1: Optional[Reference] = Field(None, alias='Reference')
StandingOrderId_1: Optional[StandingOrderId] = Field(None, alias='StandingOrderId')
StandingOrderStatusCode: Optional[OBExternalStandingOrderStatus1Code] = None
SupplementaryData: Optional[OBSupplementaryData1] = None
class OBStandingOrder6Basic(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
AccountId_1: AccountId = Field(..., alias='AccountId')
FinalPaymentAmount: Optional[OBActiveOrHistoricCurrencyAndAmount4] = None
FinalPaymentDateTime_1: Optional[FinalPaymentDateTime] = Field(
None, alias='FinalPaymentDateTime'
)
FirstPaymentAmount: Optional[OBActiveOrHistoricCurrencyAndAmount2] = None
FirstPaymentDateTime_1: Optional[FirstPaymentDateTime] = Field(
None, alias='FirstPaymentDateTime'
)
Frequency: Frequency1
LastPaymentAmount: Optional[OBActiveOrHistoricCurrencyAndAmount11] = None
LastPaymentDateTime_1: Optional[LastPaymentDateTime] = Field(
None, alias='LastPaymentDateTime'
)
NextPaymentAmount: Optional[OBActiveOrHistoricCurrencyAndAmount3] = None
NextPaymentDateTime_1: Optional[NextPaymentDateTime] = Field(
None, alias='NextPaymentDateTime'
)
NumberOfPayments_1: Optional[NumberOfPayments] = Field(
None, alias='NumberOfPayments'
)
Reference_1: Optional[Reference] = Field(None, alias='Reference')
StandingOrderId_1: Optional[StandingOrderId] = Field(None, alias='StandingOrderId')
StandingOrderStatusCode: Optional[OBExternalStandingOrderStatus1Code] = None
SupplementaryData: Optional[OBSupplementaryData1] = None
class OBStandingOrder6Detail(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
AccountId_1: AccountId = Field(..., alias='AccountId')
CreditorAccount: OBCashAccount51
CreditorAgent: Optional[OBBranchAndFinancialInstitutionIdentification51] = None
FinalPaymentAmount: Optional[OBActiveOrHistoricCurrencyAndAmount4] = None
FinalPaymentDateTime_1: Optional[FinalPaymentDateTime] = Field(
None, alias='FinalPaymentDateTime'
)
FirstPaymentAmount: Optional[OBActiveOrHistoricCurrencyAndAmount2] = None
FirstPaymentDateTime_1: Optional[FirstPaymentDateTime] = Field(
None, alias='FirstPaymentDateTime'
)
Frequency: Frequency1
LastPaymentAmount: Optional[OBActiveOrHistoricCurrencyAndAmount11] = None
LastPaymentDateTime_1: Optional[LastPaymentDateTime] = Field(
None, alias='LastPaymentDateTime'
)
NextPaymentAmount: Optional[OBActiveOrHistoricCurrencyAndAmount3] = None
NextPaymentDateTime_1: Optional[NextPaymentDateTime] = Field(
None, alias='NextPaymentDateTime'
)
NumberOfPayments_1: Optional[NumberOfPayments] = Field(
None, alias='NumberOfPayments'
)
Reference_1: Optional[Reference] = Field(None, alias='Reference')
StandingOrderId_1: Optional[StandingOrderId] = Field(None, alias='StandingOrderId')
StandingOrderStatusCode: Optional[OBExternalStandingOrderStatus1Code] = None
SupplementaryData: Optional[OBSupplementaryData1] = None
class StatementRateItem(BaseModel):
Rate_1: Rate = Field(..., alias='Rate')
Type: OBExternalStatementRateType1Code
class StatementValueItem(BaseModel):
Type: OBExternalStatementValueType1Code
Value_1: Value = Field(..., alias='Value')
class OBStatement2(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
AccountId_1: AccountId = Field(..., alias='AccountId')
CreationDateTime_1: CreationDateTime = Field(..., alias='CreationDateTime')
EndDateTime_1: EndDateTime = Field(..., alias='EndDateTime')
StartDateTime_1: StartDateTime = Field(..., alias='StartDateTime')
StatementAmount: Optional[List[StatementAmountItem]] = None
StatementBenefit: Optional[List[StatementBenefitItem]] = None
StatementDateTime: Optional[List[StatementDateTimeItem]] = None
StatementDescription: Optional[List[constr(min_length=1, max_length=500)]] = None
StatementFee: Optional[List[StatementFeeItem]] = None
StatementId_1: Optional[StatementId] = Field(None, alias='StatementId')
StatementInterest: Optional[List[StatementInterestItem]] = None
StatementRate: Optional[List[StatementRateItem]] = None
StatementReference_1: Optional[StatementReference] = Field(
None, alias='StatementReference'
)
StatementValue: Optional[List[StatementValueItem]] = None
Type: OBExternalStatementType1Code
class OBStatement2Basic(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
AccountId_1: AccountId = Field(..., alias='AccountId')
CreationDateTime_1: CreationDateTime = Field(..., alias='CreationDateTime')
EndDateTime_1: EndDateTime = Field(..., alias='EndDateTime')
StartDateTime_1: StartDateTime = Field(..., alias='StartDateTime')
StatementBenefit: Optional[List[StatementBenefitItem]] = None
StatementDateTime: Optional[List[StatementDateTimeItem]] = None
StatementDescription: Optional[List[constr(min_length=1, max_length=500)]] = None
StatementFee: Optional[List[StatementFeeItem]] = None
StatementId_1: Optional[StatementId] = Field(None, alias='StatementId')
StatementInterest: Optional[List[StatementInterestItem]] = None
StatementRate: Optional[List[StatementRateItem]] = None
StatementReference_1: Optional[StatementReference] = Field(
None, alias='StatementReference'
)
StatementValue: Optional[List[StatementValueItem]] = None
Type: OBExternalStatementType1Code
class OBStatement2Detail(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
AccountId_1: AccountId = Field(..., alias='AccountId')
CreationDateTime_1: CreationDateTime = Field(..., alias='CreationDateTime')
EndDateTime_1: EndDateTime = Field(..., alias='EndDateTime')
StartDateTime_1: StartDateTime = Field(..., alias='StartDateTime')
StatementAmount: Optional[List[StatementAmountItem]] = None
StatementBenefit: Optional[List[StatementBenefitItem]] = None
StatementDateTime: Optional[List[StatementDateTimeItem]] = None
StatementDescription: Optional[List[constr(min_length=1, max_length=500)]] = None
StatementFee: Optional[List[StatementFeeItem]] = None
StatementId_1: Optional[StatementId] = Field(None, alias='StatementId')
StatementInterest: Optional[List[StatementInterestItem]] = None
StatementRate: Optional[List[StatementRateItem]] = None
StatementReference_1: Optional[StatementReference] = Field(
None, alias='StatementReference'
)
StatementValue: Optional[List[StatementValueItem]] = None
Type: OBExternalStatementType1Code
class OBTransaction6Basic(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
AccountId_1: AccountId = Field(..., alias='AccountId')
AddressLine_1: Optional[AddressLine] = Field(None, alias='AddressLine')
Amount: OBActiveOrHistoricCurrencyAndAmount9
BankTransactionCode: Optional[OBBankTransactionCodeStructure1] = None
BookingDateTime_1: BookingDateTime = Field(..., alias='BookingDateTime')
CardInstrument: Optional[OBTransactionCardInstrument1] = None
ChargeAmount: Optional[OBActiveOrHistoricCurrencyAndAmount10] = None
CreditDebitIndicator: OBCreditDebitCode1
CurrencyExchange: Optional[OBCurrencyExchange5] = None
ProprietaryBankTransactionCode: Optional[
ProprietaryBankTransactionCodeStructure1
] = None
StatementReference_1: Optional[List[StatementReference]] = Field(
None, alias='StatementReference'
)
Status: OBEntryStatus1Code
SupplementaryData: Optional[OBSupplementaryData1] = None
TransactionId_1: Optional[TransactionId] = Field(None, alias='TransactionId')
TransactionMutability: Optional[OBTransactionMutability1Code] = None
TransactionReference_1: Optional[TransactionReference] = Field(
None, alias='TransactionReference'
)
ValueDateTime_1: Optional[ValueDateTime] = Field(None, alias='ValueDateTime')
class OBAccount4(BaseModel):
Account: Optional[List[AccountItem]] = None
AccountId_1: AccountId = Field(..., alias='AccountId')
AccountSubType: OBExternalAccountSubType1Code
AccountType: OBExternalAccountType1Code
Currency: ActiveOrHistoricCurrencyCode0
Description: Optional[Description0] = None
Nickname_1: Optional[Nickname] = Field(None, alias='Nickname')
Servicer: Optional[OBBranchAndFinancialInstitutionIdentification50] = None
Status: Optional[OBAccountStatus1Code] = None
StatusUpdateDateTime_1: Optional[StatusUpdateDateTime] = Field(
None, alias='StatusUpdateDateTime'
)
class OBAccount4Detail(BaseModel):
Account: List[AccountItem]
AccountId_1: AccountId = Field(..., alias='AccountId')
AccountSubType: OBExternalAccountSubType1Code
AccountType: OBExternalAccountType1Code
Currency: ActiveOrHistoricCurrencyCode0
Description: Optional[Description0] = None
Nickname_1: Optional[Nickname] = Field(None, alias='Nickname')
Servicer: Optional[OBBranchAndFinancialInstitutionIdentification50] = None
Status: Optional[OBAccountStatus1Code] = None
StatusUpdateDateTime_1: Optional[StatusUpdateDateTime] = Field(
None, alias='StatusUpdateDateTime'
)
class OBAccount6(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Account: Optional[List[AccountItem]] = None
AccountId_1: AccountId = Field(..., alias='AccountId')
AccountSubType: Optional[OBExternalAccountSubType1Code] = None
AccountType: Optional[OBExternalAccountType1Code] = None
Currency: Optional[ActiveOrHistoricCurrencyCode0] = None
Description: Optional[Description0] = None
MaturityDate_1: Optional[MaturityDate] = Field(None, alias='MaturityDate')
Nickname_1: Optional[Nickname] = Field(None, alias='Nickname')
OpeningDate_1: Optional[OpeningDate] = Field(None, alias='OpeningDate')
Servicer: Optional[OBBranchAndFinancialInstitutionIdentification50] = None
Status: Optional[OBAccountStatus1Code] = None
StatusUpdateDateTime_1: Optional[StatusUpdateDateTime] = Field(
None, alias='StatusUpdateDateTime'
)
SwitchStatus: Optional[OBExternalSwitchStatusCode] = None
class OBAccount6Detail(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Account: List[AccountItem]
AccountId_1: AccountId = Field(..., alias='AccountId')
AccountSubType: OBExternalAccountSubType1Code
AccountType: OBExternalAccountType1Code
Currency: ActiveOrHistoricCurrencyCode0
Description: Optional[Description0] = None
MaturityDate_1: Optional[MaturityDate] = Field(None, alias='MaturityDate')
Nickname_1: Optional[Nickname] = Field(None, alias='Nickname')
OpeningDate_1: Optional[OpeningDate] = Field(None, alias='OpeningDate')
Servicer: Optional[OBBranchAndFinancialInstitutionIdentification50] = None
Status: Optional[OBAccountStatus1Code] = None
StatusUpdateDateTime_1: Optional[StatusUpdateDateTime] = Field(
None, alias='StatusUpdateDateTime'
)
SwitchStatus: Optional[OBExternalSwitchStatusCode] = None
class OBBranchAndFinancialInstitutionIdentification60(BaseModel):
Identification: Optional[Identification1] = None
Name: Optional[Name1] = None
PostalAddress: Optional[OBPostalAddress6] = None
SchemeName: Optional[OBExternalFinancialInstitutionIdentification4Code] = None
class OBBranchAndFinancialInstitutionIdentification61(BaseModel):
Identification: Optional[Identification2] = None
Name: Optional[Name1] = None
PostalAddress: Optional[OBPostalAddress6] = None
SchemeName: Optional[OBExternalFinancialInstitutionIdentification4Code] = None
class OBBranchAndFinancialInstitutionIdentification62(BaseModel):
Identification: Optional[Identification2] = None
Name: Optional[Name1] = None
PostalAddress: Optional[OBPostalAddress6] = None
SchemeName: Optional[OBExternalFinancialInstitutionIdentification4Code] = None
class Data(BaseModel):
Account: Optional[List[OBAccount6]] = None
class OBReadAccount6(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Data_1: Data = Field(..., alias='Data')
Links_1: Optional[Links] = Field(None, alias='Links')
Meta_1: Optional[Meta] = Field(None, alias='Meta')
class OBReadDataStatement2(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Statement: Optional[List[OBStatement2]] = None
class Data10(BaseModel):
ScheduledPayment: Optional[List[OBScheduledPayment3]] = None
class OBReadScheduledPayment3(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Data: Data10
Links_1: Optional[Links] = Field(None, alias='Links')
Meta_1: Optional[Meta] = Field(None, alias='Meta')
class Data11(BaseModel):
StandingOrder: Optional[List[OBStandingOrder6]] = None
class OBReadStandingOrder6(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Data: Data11
Links_1: Optional[Links] = Field(None, alias='Links')
Meta_1: Optional[Meta] = Field(None, alias='Meta')
class OBReadStatement2(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Data: OBReadDataStatement2
Links_1: Optional[Links] = Field(None, alias='Links')
Meta_1: Optional[Meta] = Field(None, alias='Meta')
class OBTransaction6(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
AccountId_1: AccountId = Field(..., alias='AccountId')
AddressLine_1: Optional[AddressLine] = Field(None, alias='AddressLine')
Amount: OBActiveOrHistoricCurrencyAndAmount9
Balance: Optional[OBTransactionCashBalance] = None
BankTransactionCode: Optional[OBBankTransactionCodeStructure1] = None
BookingDateTime_1: BookingDateTime = Field(..., alias='BookingDateTime')
CardInstrument: Optional[OBTransactionCardInstrument1] = None
ChargeAmount: Optional[OBActiveOrHistoricCurrencyAndAmount10] = None
CreditDebitIndicator: OBCreditDebitCode1
CreditorAccount: Optional[OBCashAccount60] = None
CreditorAgent: Optional[OBBranchAndFinancialInstitutionIdentification61] = None
CurrencyExchange: Optional[OBCurrencyExchange5] = None
DebtorAccount: Optional[OBCashAccount61] = None
DebtorAgent: Optional[OBBranchAndFinancialInstitutionIdentification62] = None
MerchantDetails: Optional[OBMerchantDetails1] = None
ProprietaryBankTransactionCode: Optional[
ProprietaryBankTransactionCodeStructure1
] = None
StatementReference_1: Optional[List[StatementReference]] = Field(
None, alias='StatementReference'
)
Status: OBEntryStatus1Code
SupplementaryData: Optional[OBSupplementaryData1] = None
TransactionId_1: Optional[TransactionId] = Field(None, alias='TransactionId')
TransactionInformation_1: Optional[TransactionInformation] = Field(
None, alias='TransactionInformation'
)
TransactionMutability: Optional[OBTransactionMutability1Code] = None
TransactionReference_1: Optional[TransactionReference] = Field(
None, alias='TransactionReference'
)
ValueDateTime_1: Optional[ValueDateTime] = Field(None, alias='ValueDateTime')
class OBTransaction6Detail(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
AccountId_1: AccountId = Field(..., alias='AccountId')
AddressLine_1: Optional[AddressLine] = Field(None, alias='AddressLine')
Amount: OBActiveOrHistoricCurrencyAndAmount9
Balance: Optional[OBTransactionCashBalance] = None
BankTransactionCode: Optional[OBBankTransactionCodeStructure1] = None
BookingDateTime_1: BookingDateTime = Field(..., alias='BookingDateTime')
CardInstrument: Optional[OBTransactionCardInstrument1] = None
ChargeAmount: Optional[OBActiveOrHistoricCurrencyAndAmount10] = None
CreditDebitIndicator: OBCreditDebitCode1
CreditorAccount: Optional[OBCashAccount60] = None
CreditorAgent: Optional[OBBranchAndFinancialInstitutionIdentification61] = None
CurrencyExchange: Optional[OBCurrencyExchange5] = None
DebtorAccount: Optional[OBCashAccount61] = None
DebtorAgent: Optional[OBBranchAndFinancialInstitutionIdentification62] = None
MerchantDetails: Optional[OBMerchantDetails1] = None
ProprietaryBankTransactionCode: Optional[
ProprietaryBankTransactionCodeStructure1
] = None
StatementReference_1: Optional[List[StatementReference]] = Field(
None, alias='StatementReference'
)
Status: OBEntryStatus1Code
SupplementaryData: Optional[OBSupplementaryData1] = None
TransactionId_1: Optional[TransactionId] = Field(None, alias='TransactionId')
TransactionInformation_1: Optional[TransactionInformation] = Field(
None, alias='TransactionInformation'
)
TransactionMutability: Optional[OBTransactionMutability1Code] = None
TransactionReference_1: Optional[TransactionReference] = Field(
None, alias='TransactionReference'
)
ValueDateTime_1: Optional[ValueDateTime] = Field(None, alias='ValueDateTime')
class OBBeneficiary5(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
AccountId_1: Optional[AccountId] = Field(None, alias='AccountId')
BeneficiaryId_1: Optional[BeneficiaryId] = Field(None, alias='BeneficiaryId')
BeneficiaryType: Optional[OBBeneficiaryType1Code] = None
CreditorAccount: Optional[OBCashAccount50] = None
CreditorAgent: Optional[OBBranchAndFinancialInstitutionIdentification60] = None
Reference_1: Optional[Reference] = Field(None, alias='Reference')
SupplementaryData: Optional[OBSupplementaryData1] = None
class OBBeneficiary5Detail(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
AccountId_1: Optional[AccountId] = Field(None, alias='AccountId')
BeneficiaryId_1: Optional[BeneficiaryId] = Field(None, alias='BeneficiaryId')
BeneficiaryType: Optional[OBBeneficiaryType1Code] = None
CreditorAccount: OBCashAccount50
CreditorAgent: Optional[OBBranchAndFinancialInstitutionIdentification60] = None
Reference_1: Optional[Reference] = Field(None, alias='Reference')
SupplementaryData: Optional[OBSupplementaryData1] = None
class Data2(BaseModel):
Beneficiary: Optional[List[OBBeneficiary5]] = None
class OBReadBeneficiary5(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Data: Data2
Links_1: Optional[Links] = Field(None, alias='Links')
Meta_1: Optional[Meta] = Field(None, alias='Meta')
class OBReadDataTransaction6(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Transaction: Optional[List[OBTransaction6]] = None
class OBReadTransaction6(BaseModel):
model_config = ConfigDict(
extra='forbid',
)
Data: OBReadDataTransaction6
Links_1: Optional[Links] = Field(None, alias='Links')
Meta_1: Optional[Meta] = Field(None, alias='Meta')