openapi: 3.0.2
info:
  contact:
    email: hello@biza.io
    name: Biza.io
    url: https://biza.io/
  description: >
    This is the OpenAPI specification consumed by the HaaS Data Adapter Client
    for Authenticated endpoints  and corresponds to CDS version 1.36.0.1.

    Please consult the appropriate implementation guides to identify which ones
    must be implemented for your scenario.
  license:
    name: Commercial
    url: https://biza.io/
  title: HaaS Data Adapter API Secure (OpenAPI Client)
  version: 2.3.0
servers:
  - url: https://ods.data.holder/dio-au/v0
security:
  - APIKey: []
  - TokenBasedAuth:
      - biza:haas.adapter:read
tags:
  - name: Common
    description: >-
      This contains the APIs related to the retrieval of information related to
      the Common namespace within the Data Standards
  - name: Banking
    description: >-
      This contains the APIs related to the retrieval of information related to
      the Banking namespace within the Data Standards
  - name: Energy
    description: >-
      This contains the APIs related to the retrieval of information related to
      the Energy namespace within the Data Standards
  - name: Auth
    description: These endpoints relate to authorisation and authentication.
  - name: Admin
    description: >-
      These endpoints are related to the retrieval of information related to
      admin
  - name: Notification
    description: >-
      This contains the APIs related to the sending of notification information
      to the Data Holder
  - name: Device
    description: >-
      This contains the APIs related to the retrieval of information related to
      devices
  - name: Internal
    description: For internal Biza use only
externalDocs:
  description: Read more about the HaaS Platform by visiting the Biza.io Guides
  url: https://guides.biza.io
paths:
  /health:
    get:
      description: Retrieve health check summary
      operationId: getHealth
      x-haas-flag: SUPPORTS_V0_VERSIONING
      parameters:
        - $ref: '#/components/parameters/HeaderXFapiInteractionId'
        - $ref: '#/components/parameters/HeaderRealmName'
        - in: header
          name: x-haas-v
          schema:
            $ref: '#/components/schemas/EnumResponseGetHealthVersion'
        - $ref: '#/components/parameters/HeaderXHaaSPerformanceTier'
      responses:
        '200':
          $ref: '#/components/responses/GetHealth'
        '400':
          $ref: '#/components/responses/DioGeneric400'
      summary: Get Service Health Status
      tags:
        - Admin
  /meta/endpoints:
    get:
      description: >-
        Retrieve the endpoint metadata of the endpoints that this adapter
        supports
      operationId: getEndpointMeta
      summary: Get Endpoint Metadata
      parameters:
        - $ref: '#/components/parameters/HeaderXFapiInteractionId'
        - $ref: '#/components/parameters/HeaderRealmName'
        - in: header
          description: Supported Response Version
          name: x-haas-max-v
          required: true
          schema:
            type: string
            example: V4
      responses:
        '200':
          $ref: '#/components/responses/GetEndpointMeta'
        '400':
          $ref: '#/components/responses/DioGeneric400'
      tags:
        - Admin
  /login/user:
    post:
      description: >-
        Essentially a simplified GetCustomer call. To be used as a replacement
        for GetCustomer in the Consent Flow.

        Also used in the Consent Management Dashboard as a way of knowing about
        the Power of Attorney situations  that may exist.
      summary: Get User
      operationId: getUser
      x-haas-flag: SUPPORTS_V0_VERSIONING
      parameters:
        - $ref: '#/components/parameters/HeaderXFapiInteractionId'
        - $ref: '#/components/parameters/HeaderRealmName'
        - in: header
          name: x-haas-v
          schema:
            $ref: '#/components/schemas/EnumResponseGetUserVersion'
        - $ref: '#/components/parameters/HeaderXHaaSPerformanceTier'
      requestBody:
        $ref: '#/components/requestBodies/GetUserRequest'
      responses:
        '200':
          $ref: '#/components/responses/GetUser'
        '400':
          $ref: '#/components/responses/DioGeneric400'
        '404':
          $ref: '#/components/responses/DioGeneric404'
        '422':
          $ref: '#/components/responses/DioGeneric422'
        '429':
          $ref: '#/components/responses/DioGeneric429'
        '451':
          $ref: '#/components/responses/DioGeneric451'
      tags:
        - Common
  /login/init:
    post:
      description: >-
        Initiate OTP Login using a supplied username and receive a request
        identifier to present the supplied OTP back with. This call should not
        fail if the username doesn't exist, but instead return a request ID that
        has no possibility of succeeding. This is to avoid enumeration attacks
        on usernames via this interface (i.e the only way to verify a user
        exists is to successfully pass the right OTP).
      summary: Init Login
      operationId: initLogin
      x-haas-flag: SUPPORTS_V0_VERSIONING
      parameters:
        - $ref: '#/components/parameters/HeaderXFapiInteractionId'
        - $ref: '#/components/parameters/HeaderRealmName'
        - in: header
          name: x-haas-v
          schema:
            $ref: '#/components/schemas/EnumResponseInitLoginVersion'
        - $ref: '#/components/parameters/HeaderXHaaSPerformanceTier'
        - $ref: '#/components/parameters/HeaderXFAPICustomerIPAddress'
        - $ref: '#/components/parameters/HeaderXCDSClientHeaders'
      requestBody:
        $ref: '#/components/requestBodies/InitLoginRequest'
      responses:
        '200':
          $ref: '#/components/responses/InitLogin'
        '400':
          $ref: '#/components/responses/InitLogin400'
        '422':
          $ref: '#/components/responses/InitLogin422'
        '429':
          $ref: '#/components/responses/DioGeneric429'
      tags:
        - Auth
  /login/verify:
    post:
      description: >-
        Using a supplied request identifier and a supplied OTP verify the login
        and return a set of customer identifiers it is now validated for
      operationId: verifyLogin
      x-haas-flag: SUPPORTS_V0_VERSIONING
      summary: Verify Login
      parameters:
        - $ref: '#/components/parameters/HeaderXFapiInteractionId'
        - $ref: '#/components/parameters/HeaderRealmName'
        - in: header
          name: x-haas-v
          schema:
            $ref: '#/components/schemas/EnumResponseVerifyLoginVersion'
        - $ref: '#/components/parameters/HeaderXHaaSPerformanceTier'
        - $ref: '#/components/parameters/HeaderXFAPICustomerIPAddress'
        - $ref: '#/components/parameters/HeaderXCDSClientHeaders'
      requestBody:
        $ref: '#/components/requestBodies/VerifyLoginRequest'
      responses:
        '200':
          $ref: '#/components/responses/VerifyLogin'
        '400':
          $ref: '#/components/responses/DioGeneric400'
        '422':
          $ref: '#/components/responses/VerifyLogin422'
        '429':
          $ref: '#/components/responses/DioGeneric429'
        '451':
          $ref: '#/components/responses/DioGeneric451'
      tags:
        - Auth
  /user/notification-info:
    post:
      description: >-
        Takes a userId and returns back the name and email that should be used
        when sending email notifications to that user.

        There are places where HaaS needs to obtain the name & email of a
        `userId` but we don't have a `principalId` present.
      summary: Get User Notification Information
      operationId: getUserNotificationInfo
      x-haas-flag: SUPPORTS_V0_VERSIONING
      parameters:
        - $ref: '#/components/parameters/HeaderXFapiInteractionId'
        - $ref: '#/components/parameters/HeaderRealmName'
        - $ref: '#/components/parameters/HeaderXHaaSPerformanceTier'
        - in: header
          name: x-haas-v
          schema:
            $ref: '#/components/schemas/EnumResponseGetUserNotificationInfoVersion'
      requestBody:
        $ref: '#/components/requestBodies/GetUserNotificationInfoRequest'
      responses:
        '200':
          $ref: '#/components/responses/GetUserNotificationInfo'
        '404':
          $ref: '#/components/responses/DioGeneric404'
        '429':
          $ref: '#/components/responses/DioGeneric429'
      tags:
        - Notification
  /user/attribute:
    post:
      description: >-
        Accept a digital service identifier (Username) and return relevant
        details to conduct operations without already knowing the User
        Principal.
      summary: Get Username Attributes
      operationId: getUsernameAttributes
      x-haas-flag: SUPPORTS_V0_VERSIONING
      parameters:
        - $ref: '#/components/parameters/HeaderXFapiInteractionId'
        - $ref: '#/components/parameters/HeaderRealmName'
        - in: header
          name: x-haas-v
          schema:
            $ref: '#/components/schemas/EnumResponseGetUsernameAttributesVersion'
        - $ref: '#/components/parameters/HeaderXHaaSPerformanceTier'
        - $ref: '#/components/parameters/HeaderXFAPICustomerIPAddress'
        - $ref: '#/components/parameters/HeaderXCDSClientHeaders'
      requestBody:
        $ref: '#/components/requestBodies/GetUsernameAttributesRequest'
      responses:
        '200':
          $ref: '#/components/responses/GetUsernameAttributes'
        '400':
          $ref: '#/components/responses/GetUsernameAttributes400'
        '404':
          $ref: '#/components/responses/DioGeneric404'
        '429':
          $ref: '#/components/responses/DioGeneric429'
        '451':
          $ref: '#/components/responses/DioGeneric451'
      tags:
        - Auth
  /user/principal:
    post:
      description: >-
        Accept a previously supplied user identifier and provide back a response
        containing a list of principals
      summary: Get User Principals
      operationId: getUserPrincipals
      x-haas-flag: SUPPORTS_V0_VERSIONING
      parameters:
        - $ref: '#/components/parameters/HeaderXFapiInteractionId'
        - $ref: '#/components/parameters/HeaderRealmName'
        - $ref: '#/components/parameters/HeaderXHaaSPerformanceTier'
        - $ref: '#/components/parameters/HeaderXFAPICustomerIPAddress'
        - $ref: '#/components/parameters/HeaderXCDSClientHeaders'
        - in: header
          name: x-haas-v
          schema:
            $ref: '#/components/schemas/EnumResponseGetUserPrincipalsVersion'
      requestBody:
        $ref: '#/components/requestBodies/GetUserPrincipalsRequest'
      responses:
        '200':
          $ref: '#/components/responses/GetUserPrincipals'
        '404':
          $ref: '#/components/responses/DioGeneric404'
        '429':
          $ref: '#/components/responses/DioGeneric429'
        '451':
          $ref: '#/components/responses/DioGeneric451'
      tags:
        - Auth
  /banking/bulk-transactions:
    post:
      description: Request Banking Transaction Detail List through an Asynchronous request
      operationId: requestBankingTransactionDetailList
      parameters:
        - $ref: '#/components/parameters/HeaderXFapiInteractionId'
        - $ref: '#/components/parameters/HeaderRealmName'
        - in: header
          name: x-haas-v
          required: true
          schema:
            $ref: >-
              #/components/schemas/EnumResponseRequestBankingTransactionDetailListVersion
        - $ref: '#/components/parameters/HeaderXHaaSPerformanceTier'
        - $ref: '#/components/parameters/HeaderXFAPIAuthDate'
        - $ref: '#/components/parameters/HeaderXFAPICustomerIPAddress'
        - $ref: '#/components/parameters/HeaderXCDSClientHeaders'
      requestBody:
        $ref: '#/components/requestBodies/RequestBankingTransactionDetailList'
      responses:
        '200':
          $ref: '#/components/responses/RequestBankingTransactionDetailList'
        '400':
          $ref: '#/components/responses/DioGeneric400'
        '404':
          $ref: '#/components/responses/DioGeneric404'
        '422':
          $ref: '#/components/responses/DioGeneric422'
        '429':
          $ref: '#/components/responses/DioGeneric429'
        '451':
          $ref: '#/components/responses/DioGeneric451'
      summary: Request Banking Transaction Detail List
      tags:
        - Banking
  /banking/bulk-transactions/{actionId}:
    get:
      description: Retrieve banking transaction detail action status
      operationId: getBankingTransactionDetailListStatus
      parameters:
        - $ref: '#/components/parameters/PathActionId'
        - $ref: '#/components/parameters/HeaderXFapiInteractionId'
        - $ref: '#/components/parameters/HeaderRealmName'
        - in: header
          name: x-haas-v
          required: true
          schema:
            $ref: >-
              #/components/schemas/EnumResponseGetBankingTransactionDetailListStatusVersion
        - $ref: '#/components/parameters/HeaderXHaaSPerformanceTier'
        - $ref: '#/components/parameters/HeaderXFAPIAuthDate'
        - $ref: '#/components/parameters/HeaderXFAPICustomerIPAddress'
        - $ref: '#/components/parameters/HeaderXCDSClientHeaders'
      responses:
        '200':
          $ref: '#/components/responses/GetBankingTransactionDetailListStatus'
        '400':
          $ref: '#/components/responses/DioGeneric400'
        '404':
          $ref: '#/components/responses/DioGeneric404'
        '422':
          $ref: '#/components/responses/DioGeneric422'
        '429':
          $ref: '#/components/responses/DioGeneric429'
        '451':
          $ref: '#/components/responses/DioGeneric451'
      summary: Get Banking Transaction Detail List Status
      tags:
        - Banking
  /banking/bulk-transactions/{actionId}/retrieve:
    get:
      description: Retrieve banking transaction detail records
      operationId: retrieveBankingTransactionDetailList
      parameters:
        - $ref: '#/components/parameters/PathActionId'
        - $ref: '#/components/parameters/HeaderXFapiInteractionId'
        - $ref: '#/components/parameters/HeaderRealmName'
        - in: header
          name: x-haas-v
          required: true
          schema:
            $ref: >-
              #/components/schemas/EnumResponseRetrieveBankingTransactionDetailListVersionV2
        - $ref: '#/components/parameters/HeaderXHaaSPerformanceTier'
        - $ref: '#/components/parameters/HeaderXFAPIAuthDate'
        - $ref: '#/components/parameters/HeaderXFAPICustomerIPAddress'
        - $ref: '#/components/parameters/HeaderXCDSClientHeaders'
      responses:
        '200':
          $ref: '#/components/responses/RetrieveBankingTransactionDetailList'
        '400':
          $ref: '#/components/responses/DioGeneric400'
        '404':
          $ref: '#/components/responses/DioGeneric404'
        '422':
          $ref: '#/components/responses/DioGeneric422'
        '429':
          $ref: '#/components/responses/DioGeneric429'
        '451':
          $ref: '#/components/responses/DioGeneric451'
      summary: Retrieve Banking Transaction Detail List
      tags:
        - Banking
  /banking/customer/{principalId}/payee:
    get:
      description: Retrieve a list of payees for a specific customer identifier
      operationId: listBankingPayees
      x-haas-flag: SUPPORTS_V0_VERSIONING
      parameters:
        - $ref: '#/components/parameters/PathPrincipalId'
        - $ref: '#/components/parameters/QueryUserId'
        - $ref: '#/components/parameters/HeaderXFapiInteractionId'
        - $ref: '#/components/parameters/HeaderRealmName'
        - in: header
          name: x-haas-v
          schema:
            $ref: '#/components/schemas/EnumResponseListBankingPayeesVersion'
        - $ref: '#/components/parameters/HeaderXHaaSPerformanceTier'
        - $ref: '#/components/parameters/HeaderXFAPIAuthDate'
        - $ref: '#/components/parameters/HeaderXFAPICustomerIPAddress'
        - $ref: '#/components/parameters/HeaderXCDSClientHeaders'
      responses:
        '200':
          $ref: '#/components/responses/ListBankingPayees'
        '404':
          $ref: '#/components/responses/DioGeneric404'
        '429':
          $ref: '#/components/responses/DioGeneric429'
        '451':
          $ref: '#/components/responses/DioGeneric451'
      summary: List Payees
      tags:
        - Banking
  /banking/customer/{principalId}/payment:
    get:
      description: Retrieve a list of payments for a specific customer
      operationId: listBankingPayments
      x-haas-flag: SUPPORTS_V0_VERSIONING
      parameters:
        - $ref: '#/components/parameters/PathPrincipalId'
        - $ref: '#/components/parameters/QueryUserId'
        - $ref: '#/components/parameters/HeaderXFapiInteractionId'
        - $ref: '#/components/parameters/HeaderRealmName'
        - in: header
          name: x-haas-v
          schema:
            $ref: '#/components/schemas/EnumResponseListBankingPaymentsVersion'
        - $ref: '#/components/parameters/HeaderXHaaSPerformanceTier'
        - $ref: '#/components/parameters/HeaderXFAPIAuthDate'
        - $ref: '#/components/parameters/HeaderXFAPICustomerIPAddress'
        - $ref: '#/components/parameters/HeaderXCDSClientHeaders'
      responses:
        '200':
          $ref: '#/components/responses/ListBankingPayments'
        '404':
          $ref: '#/components/responses/DioGeneric404'
        '429':
          $ref: '#/components/responses/DioGeneric429'
        '451':
          $ref: '#/components/responses/DioGeneric451'
      summary: List Payments
      tags:
        - Banking
  /banking/customer/{principalId}/account:
    get:
      description: Retrieve a list of accounts for a specific customer based on identifier
      operationId: listBankingAccounts
      x-haas-flag: SUPPORTS_V0_VERSIONING
      parameters:
        - $ref: '#/components/parameters/PathPrincipalId'
        - $ref: '#/components/parameters/QueryUserId'
        - $ref: '#/components/parameters/QueryAccountIdList'
        - $ref: '#/components/parameters/HeaderXFapiInteractionId'
        - $ref: '#/components/parameters/HeaderRealmName'
        - in: header
          name: x-haas-v
          schema:
            $ref: '#/components/schemas/EnumResponseListBankingAccountsVersionV2'
        - $ref: '#/components/parameters/HeaderXHaaSPerformanceTier'
        - $ref: '#/components/parameters/HeaderXFAPIAuthDate'
        - $ref: '#/components/parameters/HeaderXFAPICustomerIPAddress'
        - $ref: '#/components/parameters/HeaderXCDSClientHeaders'
      responses:
        '200':
          $ref: '#/components/responses/ListBankingAccounts'
        '400':
          $ref: '#/components/responses/DioGeneric400'
        '404':
          $ref: '#/components/responses/DioGeneric404'
        '429':
          $ref: '#/components/responses/DioGeneric429'
        '451':
          $ref: '#/components/responses/DioGeneric451'
      summary: List Banking Accounts
      tags:
        - Banking
  /banking/customer/{principalId}/account/{accountId}/transaction:
    get:
      description: >-
        Retrieve a list of transactions based on customer and account
        identifiers. Transactions should be ordered according

        to "effective" date in descending order.


        As the date and time for a transaction can alter depending on status and
        transaction type two separate date/times

        are included in the payload. There are still some scenarios where
        neither of these time stamps is available. For the

        purpose of filtering and ordering it is expected that the data holder
        will use the "effective" date/time which will

        be defined as:
          - Posted date/time if available, then
          - Execution date/time if available, then
          - A reasonable date/time nominated by the data holder using internal data structures
      operationId: listBankingTransactions
      x-haas-flag: SUPPORTS_V0_VERSIONING
      parameters:
        - $ref: '#/components/parameters/HeaderXFapiInteractionId'
        - $ref: '#/components/parameters/PathPrincipalId'
        - $ref: '#/components/parameters/QueryUserId'
        - $ref: '#/components/parameters/PathAccountId'
        - $ref: '#/components/parameters/QueryTransactionIdList'
        - $ref: '#/components/parameters/HeaderRealmName'
        - in: header
          name: x-haas-v
          schema:
            $ref: '#/components/schemas/EnumResponseListBankingTransactionsVersionV2'
        - $ref: '#/components/parameters/QueryOldestDateTime'
        - $ref: '#/components/parameters/QueryNewestDateTime'
        - $ref: '#/components/parameters/QueryMinAmount'
        - $ref: '#/components/parameters/QueryMaxAmount'
        - $ref: '#/components/parameters/QueryTransactionText'
        - $ref: '#/components/parameters/QueryPage'
        - $ref: '#/components/parameters/QueryPageSize'
        - $ref: '#/components/parameters/HeaderXHaaSPerformanceTier'
        - $ref: '#/components/parameters/HeaderXFAPIAuthDate'
        - $ref: '#/components/parameters/HeaderXFAPICustomerIPAddress'
        - $ref: '#/components/parameters/HeaderXCDSClientHeaders'
      responses:
        '200':
          $ref: '#/components/responses/ListBankingTransactions'
        '400':
          $ref: '#/components/responses/ListBankingTransactions400'
        '404':
          $ref: '#/components/responses/DioGeneric404'
        '422':
          $ref: '#/components/responses/ListBankingTransactions422'
        '429':
          $ref: '#/components/responses/DioGeneric429'
        '451':
          $ref: '#/components/responses/DioGeneric451'
      summary: List Banking Transactions
      tags:
        - Banking
  /notification:
    post:
      description: Send a batch of notifications.
      summary: Send Notification
      operationId: sendNotification
      x-haas-flag: SUPPORTS_V0_VERSIONING
      parameters:
        - $ref: '#/components/parameters/HeaderXFapiInteractionId'
        - $ref: '#/components/parameters/HeaderRealmName'
        - in: header
          name: x-haas-v
          schema:
            $ref: '#/components/schemas/EnumResponseSendNotificationVersion'
      requestBody:
        $ref: '#/components/requestBodies/SendNotificationRequest'
      responses:
        '200':
          $ref: '#/components/responses/SendNotification'
        '400':
          $ref: '#/components/responses/DioGeneric400'
      tags:
        - Notification
  /status/closed-principals:
    get:
      description: >-
        Retrieve a list of principalIds that have recently closed all of their
        accounts and should have sharing arrangements revoked.
      operationId: getClosedPrincipals
      x-haas-flag: SUPPORTS_V0_VERSIONING
      parameters:
        - $ref: '#/components/parameters/HeaderXFapiInteractionId'
        - $ref: '#/components/parameters/QuerySince'
        - $ref: '#/components/parameters/HeaderRealmName'
        - in: header
          name: x-haas-v
          schema:
            $ref: '#/components/schemas/EnumResponseGetClosedPrincipalsVersion'
        - $ref: '#/components/parameters/HeaderXHaaSPerformanceTier'
      responses:
        '200':
          $ref: '#/components/responses/GetClosedPrincipals'
        '400':
          $ref: '#/components/responses/DioGeneric400'
        '429':
          $ref: '#/components/responses/DioGeneric429'
      summary: Get Closed Principals (Optional)
      tags:
        - Admin
  /customer/{principalId}:
    get:
      description: Retrieve a specific customer based on identifier
      operationId: getCustomer
      x-haas-flag: SUPPORTS_V0_VERSIONING
      parameters:
        - $ref: '#/components/parameters/PathPrincipalId'
        - $ref: '#/components/parameters/QueryUserId'
        - $ref: '#/components/parameters/HeaderXFapiInteractionId'
        - $ref: '#/components/parameters/HeaderRealmName'
        - in: header
          name: x-haas-v
          schema:
            $ref: '#/components/schemas/EnumResponseGetCustomerVersion'
        - $ref: '#/components/parameters/HeaderXHaaSPerformanceTier'
        - $ref: '#/components/parameters/HeaderXFAPIAuthDate'
        - $ref: '#/components/parameters/HeaderXFAPICustomerIPAddress'
        - $ref: '#/components/parameters/HeaderXCDSClientHeaders'
      responses:
        '200':
          $ref: '#/components/responses/GetCustomer'
        '404':
          $ref: '#/components/responses/DioGeneric404'
        '429':
          $ref: '#/components/responses/DioGeneric429'
        '451':
          $ref: '#/components/responses/DioGeneric451'
      summary: Get Customer
      tags:
        - Common
  /energy/{principalId}/account:
    get:
      description: Retrieve a list of energy accounts for a specified principal
      operationId: listEnergyAccounts
      x-haas-flag: SUPPORTS_V0_VERSIONING
      parameters:
        - $ref: '#/components/parameters/PathPrincipalId'
        - $ref: '#/components/parameters/QueryUserId'
        - $ref: '#/components/parameters/QueryAccountIdList'
        - $ref: '#/components/parameters/QueryAccountStatus'
        - $ref: '#/components/parameters/HeaderXFapiInteractionId'
        - $ref: '#/components/parameters/HeaderRealmName'
        - in: header
          name: x-haas-v
          schema:
            $ref: '#/components/schemas/EnumResponseListEnergyAccountsVersionV2'
        - $ref: '#/components/parameters/HeaderXHaaSPerformanceTier'
        - $ref: '#/components/parameters/HeaderXFAPIAuthDate'
        - $ref: '#/components/parameters/HeaderXFAPICustomerIPAddress'
        - $ref: '#/components/parameters/HeaderXCDSClientHeaders'
      responses:
        '200':
          $ref: '#/components/responses/ListEnergyAccounts'
        '400':
          $ref: '#/components/responses/DioGeneric400'
        '404':
          $ref: '#/components/responses/DioGeneric404'
        '429':
          $ref: '#/components/responses/DioGeneric429'
        '451':
          $ref: '#/components/responses/DioGeneric451'
      summary: List Energy Accounts
      tags:
        - Energy
  /energy/{principalId}/account/{accountId}/payment-schedule:
    get:
      description: Retrieve a list of payment schedules for a specific account
      operationId: getEnergyPaymentSchedule
      x-haas-flag: SUPPORTS_V0_VERSIONING
      parameters:
        - $ref: '#/components/parameters/PathPrincipalId'
        - $ref: '#/components/parameters/QueryUserId'
        - $ref: '#/components/parameters/PathAccountId'
        - $ref: '#/components/parameters/HeaderXFapiInteractionId'
        - $ref: '#/components/parameters/HeaderRealmName'
        - in: header
          name: x-haas-v
          schema:
            $ref: '#/components/schemas/EnumResponseGetEnergyPaymentScheduleVersion'
        - $ref: '#/components/parameters/HeaderXHaaSPerformanceTier'
        - $ref: '#/components/parameters/HeaderXFAPIAuthDate'
        - $ref: '#/components/parameters/HeaderXFAPICustomerIPAddress'
        - $ref: '#/components/parameters/HeaderXCDSClientHeaders'
      responses:
        '200':
          $ref: '#/components/responses/GetEnergyPaymentSchedule'
        '400':
          $ref: '#/components/responses/DioGeneric400'
        '404':
          $ref: '#/components/responses/DioGeneric404'
        '429':
          $ref: '#/components/responses/DioGeneric429'
        '451':
          $ref: '#/components/responses/DioGeneric451'
      summary: Get Energy Account Agreed Payment Schedule
      tags:
        - Energy
  /energy/{principalId}/account/{accountId}/concession:
    get:
      description: Retrieve a list of concessions for a specific account
      operationId: getEnergyConcessions
      x-haas-flag: SUPPORTS_V0_VERSIONING
      parameters:
        - $ref: '#/components/parameters/PathPrincipalId'
        - $ref: '#/components/parameters/QueryUserId'
        - $ref: '#/components/parameters/PathAccountId'
        - $ref: '#/components/parameters/HeaderXFapiInteractionId'
        - $ref: '#/components/parameters/HeaderRealmName'
        - in: header
          name: x-haas-v
          schema:
            $ref: '#/components/schemas/EnumResponseGetEnergyConcessionsVersion'
        - $ref: '#/components/parameters/HeaderXHaaSPerformanceTier'
        - $ref: '#/components/parameters/HeaderXFAPIAuthDate'
        - $ref: '#/components/parameters/HeaderXFAPICustomerIPAddress'
        - $ref: '#/components/parameters/HeaderXCDSClientHeaders'
      responses:
        '200':
          $ref: '#/components/responses/GetEnergyConcessions'
        '400':
          $ref: '#/components/responses/DioGeneric400'
        '404':
          $ref: '#/components/responses/DioGeneric404'
        '429':
          $ref: '#/components/responses/DioGeneric429'
        '451':
          $ref: '#/components/responses/DioGeneric451'
      summary: List Energy Account Concessions
      tags:
        - Energy
  /energy/{principalId}/balance:
    get:
      description: Retrieve a list of balances for one or more account identifiers
      operationId: listEnergyBalances
      x-haas-flag: SUPPORTS_V0_VERSIONING
      parameters:
        - $ref: '#/components/parameters/PathPrincipalId'
        - $ref: '#/components/parameters/QueryUserId'
        - $ref: '#/components/parameters/QueryAccountIdListRequired'
        - $ref: '#/components/parameters/HeaderXFapiInteractionId'
        - $ref: '#/components/parameters/HeaderRealmName'
        - in: header
          name: x-haas-v
          schema:
            $ref: '#/components/schemas/EnumResponseListEnergyBalancesVersion'
        - $ref: '#/components/parameters/HeaderXHaaSPerformanceTier'
        - $ref: '#/components/parameters/HeaderXFAPIAuthDate'
        - $ref: '#/components/parameters/HeaderXFAPICustomerIPAddress'
        - $ref: '#/components/parameters/HeaderXCDSClientHeaders'
      responses:
        '200':
          $ref: '#/components/responses/ListEnergyBalances'
        '400':
          $ref: '#/components/responses/ListEnergyBalances400'
        '404':
          $ref: '#/components/responses/DioGeneric404'
        '429':
          $ref: '#/components/responses/DioGeneric429'
        '451':
          $ref: '#/components/responses/DioGeneric451'
      summary: List Energy Account Balances
      tags:
        - Energy
  /energy/{principalId}/invoice:
    get:
      description: Retrieve a list of invoices for one or more account identifiers
      operationId: listEnergyInvoices
      x-haas-flag: SUPPORTS_V0_VERSIONING
      parameters:
        - $ref: '#/components/parameters/PathPrincipalId'
        - $ref: '#/components/parameters/QueryUserId'
        - $ref: '#/components/parameters/QueryAccountIdListRequired'
        - $ref: '#/components/parameters/QueryOldestDateInvoices'
        - $ref: '#/components/parameters/QueryNewestDateInvoices'
        - $ref: '#/components/parameters/QueryPage'
        - $ref: '#/components/parameters/QueryPageSize'
        - $ref: '#/components/parameters/HeaderXFapiInteractionId'
        - $ref: '#/components/parameters/HeaderRealmName'
        - in: header
          name: x-haas-v
          schema:
            $ref: '#/components/schemas/EnumResponseListEnergyInvoicesVersion'
        - $ref: '#/components/parameters/HeaderXHaaSPerformanceTier'
        - $ref: '#/components/parameters/HeaderXFAPIAuthDate'
        - $ref: '#/components/parameters/HeaderXFAPICustomerIPAddress'
        - $ref: '#/components/parameters/HeaderXCDSClientHeaders'
      responses:
        '200':
          $ref: '#/components/responses/ListEnergyInvoices'
        '400':
          $ref: '#/components/responses/ListEnergyInvoices400'
        '404':
          $ref: '#/components/responses/DioGeneric404'
        '422':
          $ref: '#/components/responses/ListEnergyInvoices422'
        '429':
          $ref: '#/components/responses/DioGeneric429'
        '451':
          $ref: '#/components/responses/DioGeneric451'
      summary: List Energy Account Invoices
      tags:
        - Energy
  /energy/{principalId}/billing:
    get:
      description: >-
        Retrieve a list of billing transactions for one or more account
        identifiers
      operationId: listEnergyBillings
      x-haas-flag: SUPPORTS_V0_VERSIONING
      parameters:
        - $ref: '#/components/parameters/PathPrincipalId'
        - $ref: '#/components/parameters/QueryUserId'
        - $ref: '#/components/parameters/QueryAccountIdListRequired'
        - $ref: '#/components/parameters/QueryOldestDateTime'
        - $ref: '#/components/parameters/QueryNewestDateTime'
        - $ref: '#/components/parameters/QueryPage'
        - $ref: '#/components/parameters/QueryPageSize'
        - $ref: '#/components/parameters/HeaderXFapiInteractionId'
        - $ref: '#/components/parameters/HeaderRealmName'
        - in: header
          name: x-haas-v
          schema:
            $ref: '#/components/schemas/EnumResponseListEnergyBillingsVersionV2'
        - $ref: '#/components/parameters/HeaderXHaaSPerformanceTier'
        - $ref: '#/components/parameters/HeaderXFAPIAuthDate'
        - $ref: '#/components/parameters/HeaderXFAPICustomerIPAddress'
        - $ref: '#/components/parameters/HeaderXCDSClientHeaders'
      responses:
        '200':
          $ref: '#/components/responses/ListEnergyBillings'
        '400':
          $ref: '#/components/responses/ListEnergyBillings400'
        '404':
          $ref: '#/components/responses/DioGeneric404'
        '422':
          $ref: '#/components/responses/ListEnergyBillings422'
        '429':
          $ref: '#/components/responses/DioGeneric429'
        '451':
          $ref: '#/components/responses/DioGeneric451'
      summary: List Energy Account Billing Transactions
      tags:
        - Energy
  /devices/nmi/frmp:
    post:
      description: Retrieve a list of FRMP details for specified NMIs
      summary: Retrieve FRMP Details
      operationId: getFRMPDetails
      x-haas-flag: SUPPORTS_V0_VERSIONING
      parameters:
        - $ref: '#/components/parameters/HeaderXFapiInteractionId'
        - $ref: '#/components/parameters/HeaderRealmName'
        - in: header
          name: x-haas-v
          schema:
            $ref: '#/components/schemas/EnumResponseGetFRMPDetailsVersion'
        - $ref: '#/components/parameters/HeaderXHaaSPerformanceTier'
      requestBody:
        $ref: '#/components/requestBodies/GetFRMPDetailsRequest'
      responses:
        '200':
          $ref: '#/components/responses/GetFRMPDetails'
        '404':
          $ref: '#/components/responses/DioGeneric404'
        '429':
          $ref: '#/components/responses/DioGeneric429'
      tags:
        - Device
components:
  securitySchemes:
    APIKey:
      description: >
        Specifies the API Key to access the upstream adapter API. The header
        name can be tuned per installation.
      name: API-Key
      type: apiKey
      in: header
    TokenBasedAuth:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://adapter.holder/endpoint/token
          scopes:
            biza:haas.adapter:read: Read-only Data Adapter Access
  parameters:
    HeaderXFapiInteractionId:
      description: >-
        An [RFC4122](https://tools.ietf.org/html/rfc4122) UUID used as a
        correlation id. If provided, the data holder must play back this value
        in the _x-fapi-interaction-id_ response header. If not provided a
        [RFC4122](https://tools.ietf.org/html/rfc4122) UUID value is required to
        be provided in the response header to track the interaction.
      explode: false
      in: header
      name: x-fapi-interaction-id
      required: false
      schema:
        type: string
        format: uuid
        example: 6ba7b814-9dad-11d1-80b4-00c04fd430c8
      style: simple
    HeaderRealmName:
      description: >-
        The name of the realm that data is being requested for. Necessary for
        holders that have multiple brands that should not share data between
        them.
      in: header
      name: x-haas-realm-name
      required: true
      schema:
        type: string
        example: holder-auth
    HeaderXHaaSPerformanceTier:
      description: >-
        This indicates which performance tier according to the Data Standards
        the request originates
      explode: false
      in: header
      name: x-haas-performance-tier
      x-haas-flag: SUPPORTS_TIER_HEADER
      required: false
      schema:
        $ref: '#/components/schemas/EnumXHaaSPerformanceTierV1'
      style: simple
    HeaderXFAPICustomerIPAddress:
      description: >-
        The customer's original IP address if the customer is currently logged
        in to the Data Recipient Software Product.
      explode: false
      x-haas-flag: SUPPORTS_CONSUMER_HEADERS
      in: header
      name: x-fapi-customer-ip-address
      required: false
      schema:
        type: string
        example: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
      style: simple
    HeaderXCDSClientHeaders:
      description: >-
        The customer's original standard http headers
        [Base64](https://consumerdatastandardsaustralia.github.io/standards/#common-field-types)
        encoded, including the original User Agent header, if the customer is
        currently logged in to the Data Recipient Software Product. Mandatory
        for customer present calls. Not required for unattended or
        unauthenticated calls.
      explode: false
      in: header
      name: x-cds-client-headers
      x-haas-flag: SUPPORTS_CONSUMER_HEADERS
      required: false
      schema:
        type: string
        example: >-
          TW96aWxsYS81LjAgKFgxMTsgTGludXggeDg2XzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNzkuMC4zOTQ1Ljg4IFNhZmFyaS81MzcuMzY=
      x-cds-type: Base64
      style: simple
    HeaderXFAPIAuthDate:
      description: >-
        The time when the customer last logged in to the Data Recipient Software
        Product as described in
        [FAPI-R-Draft](https://openid.net/specs/openid-financial-api-part-1-ID2.html).
        Required for all resource calls (customer present and unattended) if the
        customer is currently logged. Otherwise optional where the customer has
        not logged in. Not to be included for unauthenticated calls.
      explode: false
      in: header
      name: x-fapi-auth-date
      required: false
      x-haas-flag: SUPPORTS_CONSUMER_HEADERS
      schema:
        type: string
        example: Thu, 16 Jan 2020 16:50:15 GMT
      style: simple
    PathActionId:
      in: path
      name: actionId
      description: Global unique identifier of an action
      required: true
      schema:
        type: string
        example: a3d7bcf7-fea4-45a4-b350-ab4c56d47f83
    PathPrincipalId:
      in: path
      name: principalId
      description: Represents the Principal being accessed
      required: true
      schema:
        description: >-
          The internal identifier of the entity being shared via CDR. It is the
          ID that will be supplied to the data sharing calls for customer
          details, listing accounts, etc.
        type: string
        maxLength: 512
        example: 552375cb-9c00-4fde-a0a0-592904a55355
    QueryUserId:
      description: >-
        The optional user to apply to the adapter call. This allows filtering of
        resources to only those accessible by the user rather than the whole set
        of resources available to the principal
      in: query
      name: userId
      required: false
      x-haas-flag: SUPPORTS_USERID_QUERY_PARAM
      schema:
        type: string
        example: f9e23fa7-bb0a-42b6-9c8c-81f235ea1f10
    QueryAccountIdList:
      in: query
      name: accountIds
      description: Filter results based on a set of account identifiers
      required: false
      schema:
        type: array
        items:
          type: string
    PathAccountId:
      description: Unique Account Identifier
      in: path
      name: accountId
      required: true
      schema:
        type: string
    QueryTransactionIdList:
      description: Filter results based on a set of transaction identifiers
      in: query
      name: transactionIds
      required: false
      schema:
        type: array
        items:
          type: string
    QueryOldestDateTime:
      description: >
        Constrain the transaction history request to transactions with effective
        time

        at or after this date/time. Format is aligned to DateTimeString common
        type.


        If absent defaults to the following dependent on call:

        - **Banking**: `newest-time` minus 90 days

        - **Energy**: `newest-time` minus 12 months
      explode: true
      in: query
      name: oldest-time
      required: false
      schema:
        type: string
        format: date-time
        x-cds-type: DateTimeString
      style: form
    QueryNewestDateTime:
      description: >-
        Constrain the transaction history request to transactions with effective
        time at or before this date/time. If absent defaults to current
        date/time. Format is aligned to DateTimeString common type.
      explode: true
      in: query
      name: newest-time
      required: false
      schema:
        type: string
        format: date-time
        x-cds-type: DateTimeString
      style: form
    QueryMinAmount:
      description: >-
        Filter transactions to only transactions with amounts higher than or
        equal to this amount.
      explode: true
      in: query
      name: min-amount
      required: false
      schema:
        type: string
      x-cds-type: AmountString
      style: form
    QueryMaxAmount:
      description: >-
        Filter transactions to only transactions with amounts less than or equal
        to this amount.
      explode: true
      in: query
      name: max-amount
      required: false
      schema:
        type: string
      x-cds-type: AmountString
      style: form
    QueryTransactionText:
      description: >-
        Filter transactions to only transactions where this string value is
        found as a substring of either the reference or description fields.
        Format is arbitrary ASCII string. This parameter is optionally
        implemented by data holders. If it is not implemented then a response
        should be provided as normal without text filtering applied and an
        additional boolean field named _isQueryParamUnsupported_ should be
        included in the meta object and set to `true` (whether the text
        parameter is supplied or not)
      explode: true
      in: query
      name: text
      required: false
      schema:
        type: string
      style: form
    QueryPage:
      description: Page of results to request (standard pagination).
      explode: true
      in: query
      name: page
      required: false
      schema:
        default: 1
        minimum: 1
        type: integer
        x-cds-type: PositiveInteger
      style: form
    QueryPageSize:
      description: Page size to request. Default is 25 (standard pagination).
      explode: true
      in: query
      name: page-size
      required: false
      schema:
        default: 25
        minimum: 1
        type: integer
        x-cds-type: PositiveInteger
      style: form
    QuerySince:
      description: Filters the list to records that are newer than the timestamp
      in: query
      name: since
      required: false
      schema:
        type: string
        format: date-time
    QueryAccountStatus:
      description: >-
        Used to filter results according to open/closed status. Values can be
        OPEN, CLOSED or ALL. If absent then ALL is assumed
      explode: true
      in: query
      name: status
      required: false
      schema:
        $ref: '#/components/schemas/EnumAccountOpenStatusWithAllV1'
      style: form
    QueryAccountIdListRequired:
      in: query
      name: accountIds
      description: Filter results based on a set of account identifiers
      required: true
      schema:
        type: array
        items:
          type: string
    QueryOldestDateInvoices:
      description: >-
        Constrain the request to records with issue date at or after this date.
        If absent defaults to newest-date minus 24 months. Format is aligned to
        DateString common type
      explode: true
      in: query
      name: oldest-date
      required: false
      schema:
        type: string
        format: date
        x-cds-type: DateString
      style: form
    QueryNewestDateInvoices:
      description: >-
        Constrain the request to records with issue date at or before this date.
        If absent defaults to current date. Format is aligned to DateString
        common type
      explode: true
      in: query
      name: newest-date
      required: false
      schema:
        type: string
        format: date
        x-cds-type: DateString
      style: form
  schemas:
    EnumResponseGetHealthVersion:
      description: Supported Response Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
      type: string
      example: V0
    EnumXHaaSPerformanceTierV1:
      description: Performance Tier
      type: string
      example: HIGH_PRIORITY
      enum:
        - UNAUTHENTICATED
        - HIGH_PRIORITY
        - LOW_PRIORITY
        - UNATTENDED
        - LARGE_PAYLOAD
        - SECONDARY_REQUEST
        - LARGE_SECONDARY_REQUEST
        - INTERNAL
    ResponseGetHealthV0:
      properties:
        version:
          type: string
          default: V0
        data:
          $ref: '#/components/schemas/AdapterHealthV1'
      required:
        - data
      type: object
    EnumAdapterHealthStatusV1:
      description: The Health Status
      enum:
        - UP
        - DOWN
      type: string
      example: UP
    AdapterHealthV1:
      properties:
        status:
          $ref: '#/components/schemas/EnumAdapterHealthStatusV1'
      type: object
      required:
        - status
    ResponseGetHealth:
      oneOf:
        - $ref: '#/components/schemas/ResponseGetHealthV0'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/ResponseGetHealthV0'
    ErrorFieldInvalidV1:
      type: object
      properties:
        code:
          description: >-
            Holds an endpoint specific error code. This MAY be a standard CDR
            error code or an application-specific error code.
          type: string
          default: urn:au-cds:error:cds-all:Field/Invalid
        title:
          description: Holds a human readable label of the error that is constant per code
          type: string
          default: Invalid Field
        detail:
          description: >-
            Holds a human readable description of this specific error. The error
            detail SHOULD be the parameter name of the invalid field. The error
            detail MAY include further details explaining the valid format.
          type: string
          example: Invalid format supplied for fieldName
        meta:
          description: Holds additional endpoint specific data relevant to the error
          properties:
            urn:
              description: Holds a standard CDR error code
              type: string
              format: uri
              x-cds-type: URIString
              default: urn:au-cds:error:cds-all:Field/Invalid
          type: object
      required:
        - code
        - title
        - detail
    ErrorGeneralExpectedV1:
      type: object
      properties:
        code:
          description: >-
            Holds an endpoint specific error code. This MAY be a standard CDR
            error code or an application-specific error code.
          type: string
          default: urn:au-cds:error:cds-all:GeneralError/Expected
        title:
          description: Holds a human readable label of the error that is constant per code
          type: string
          default: Expected Error Encountered
        detail:
          description: >-
            Holds a human readable description of this specific error. The error
            detail SHOULD be populated with a meaningful error description,
            without revealing sensitive information.
          type: string
          example: General Expected error occurred
        meta:
          description: Holds additional endpoint specific data relevant to the error
          properties:
            urn:
              description: Holds a standard CDR error code
              type: string
              format: uri
              x-cds-type: URIString
              default: urn:au-cds:error:cds-all:GeneralError/Expected
          type: object
      required:
        - code
        - title
        - detail
    ErrorHeaderInvalidV1:
      type: object
      properties:
        code:
          description: >-
            Holds an endpoint specific error code. This MAY be a standard CDR
            error code or an application-specific error code.
          type: string
          default: urn:au-cds:error:cds-all:Header/Invalid
        title:
          description: Holds a human readable label of the error that is constant per code
          type: string
          default: Invalid Header
        detail:
          description: >-
            Holds a human readable description of this specific error. The error
            detail SHOULD be the HTTP header name. The error detail MAY include
            further details explaining the valid format.
          type: string
          example: Supplied header headerName was invalid
        meta:
          description: Holds additional endpoint specific data relevant to the error
          properties:
            urn:
              description: Holds a standard CDR error code
              type: string
              format: uri
              x-cds-type: URIString
              default: urn:au-cds:error:cds-all:Header/Invalid
          type: object
      required:
        - code
        - title
        - detail
    DioGeneric400Item:
      oneOf:
        - $ref: '#/components/schemas/ErrorFieldInvalidV1'
        - $ref: '#/components/schemas/ErrorGeneralExpectedV1'
        - $ref: '#/components/schemas/ErrorHeaderInvalidV1'
      discriminator:
        propertyName: code
        mapping:
          urn:au-cds:error:cds-all:Field/Invalid: '#/components/schemas/ErrorFieldInvalidV1'
          urn:au-cds:error:cds-all:GeneralError/Expected: '#/components/schemas/ErrorGeneralExpectedV1'
          urn:au-cds:error:cds-all:Header/Invalid: '#/components/schemas/ErrorHeaderInvalidV1'
    ResponseGetEndpointMetaV3:
      type: object
      properties:
        version:
          type: string
          default: V3
        data:
          $ref: '#/components/schemas/EndpointMetaV3'
      required:
        - version
    ResponseGetEndpointMetaV4:
      type: object
      properties:
        version:
          type: string
          default: V4
        data:
          $ref: '#/components/schemas/EndpointMetaV4'
      required:
        - version
    ResponseGetEndpointMetaV5:
      type: object
      properties:
        version:
          type: string
          default: V5
        data:
          $ref: '#/components/schemas/EndpointMetaV5'
      required:
        - version
    EnumResponseGetCustomerVersion:
      description: Supported Response Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
      type: string
      example: V0
    EndpointMetaGetCustomerV2:
      type: object
      properties:
        flags:
          description: The flags supported by this endpoint
          default: []
          type: array
          items:
            type: string
            enum:
              - SUPPORTS_USERID_QUERY_PARAM
              - SUPPORTS_TIER_HEADER
              - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          description: The response versions supported by this adapter endpoint
          default:
            - V0
          type: array
          items:
            $ref: '#/components/schemas/EnumResponseGetCustomerVersion'
      required:
        - flags
        - responseVersions
      example:
        flags:
          - SUPPORTS_USERID_QUERY_PARAM
          - SUPPORTS_TIER_HEADER
          - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          - V0
    EnumRequestGetUserVersion:
      description: Supported Request Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
      type: string
      example: V0
    EnumResponseGetUserVersion:
      description: Supported Response Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
        - V1
      type: string
      example: V0
    EndpointMetaGetUserV2:
      type: object
      properties:
        flags:
          description: The flags supported by this endpoint
          default: []
          type: array
          items:
            type: string
            enum:
              - SUPPORTS_TIER_HEADER
        requestVersions:
          description: The request versions supported by this adapter endpoint
          default:
            - V0
          type: array
          items:
            $ref: '#/components/schemas/EnumRequestGetUserVersion'
        responseVersions:
          description: The response versions supported by this adapter endpoint
          default:
            - V0
          type: array
          items:
            $ref: '#/components/schemas/EnumResponseGetUserVersion'
      required:
        - flags
        - requestVersions
        - responseVersions
      example:
        flags:
          - SUPPORTS_TIER_HEADER
        requestVersions:
          - V0
        responseVersions:
          - V0
    EndpointMetaCommonV2:
      type: object
      properties:
        getCustomer:
          $ref: '#/components/schemas/EndpointMetaGetCustomerV2'
        getUser:
          $ref: '#/components/schemas/EndpointMetaGetUserV2'
      required:
        - getCustomer
        - getUser
    EnumRequestInitLoginVersion:
      description: Supported Request Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
        - V1
      type: string
      example: V0
    EnumResponseInitLoginVersion:
      description: Supported Response Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
      type: string
      example: V0
    EndpointMetaInitLoginV2:
      type: object
      properties:
        flags:
          description: The flags supported by this endpoint
          default: []
          type: array
          items:
            type: string
            enum:
              - SUPPORTS_TIER_HEADER
              - SUPPORTS_CONSUMER_HEADERS
        requestVersions:
          description: The request versions supported by this adapter endpoint
          default:
            - V0
          type: array
          items:
            $ref: '#/components/schemas/EnumRequestInitLoginVersion'
        responseVersions:
          description: The response versions supported by this adapter endpoint
          default:
            - V0
          type: array
          items:
            $ref: '#/components/schemas/EnumResponseInitLoginVersion'
      required:
        - flags
        - requestVersions
        - responseVersions
      example:
        flags:
          - SUPPORTS_TIER_HEADER
          - SUPPORTS_CONSUMER_HEADERS
        requestVersions:
          - V0
        responseVersions:
          - V0
    EnumRequestVerifyLoginVersion:
      description: Supported Request Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
        - V1
      type: string
      example: V0
    EnumResponseVerifyLoginVersion:
      description: Supported Response Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
      type: string
      example: V0
    EndpointMetaVerifyLoginV2:
      type: object
      properties:
        flags:
          description: The flags supported by this endpoint
          default: []
          type: array
          items:
            type: string
            enum:
              - SUPPORTS_TIER_HEADER
              - SUPPORTS_CONSUMER_HEADERS
        requestVersions:
          description: The request versions supported by this adapter endpoint
          default:
            - V0
          type: array
          items:
            $ref: '#/components/schemas/EnumRequestVerifyLoginVersion'
        responseVersions:
          description: The response versions supported by this adapter endpoint
          default:
            - V0
          type: array
          items:
            $ref: '#/components/schemas/EnumResponseVerifyLoginVersion'
      required:
        - flags
        - requestVersions
        - responseVersions
      example:
        flags:
          - SUPPORTS_TIER_HEADER
          - SUPPORTS_CONSUMER_HEADERS
        requestVersions:
          - V0
        responseVersions:
          - V0
    EnumRequestGetUsernameAttributesVersion:
      description: Supported Request Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
        - V1
      type: string
      example: V0
    EnumResponseGetUsernameAttributesVersion:
      description: Supported Response Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
      type: string
      example: V0
    EndpointMetaGetUsernameAttributesV2:
      type: object
      properties:
        flags:
          description: The flags supported by this endpoint
          type: array
          default: []
          items:
            type: string
            enum:
              - SUPPORTS_TIER_HEADER
              - SUPPORTS_CONSUMER_HEADERS
        requestVersions:
          description: The request versions supported by this adapter endpoint
          default:
            - V0
          type: array
          items:
            $ref: '#/components/schemas/EnumRequestGetUsernameAttributesVersion'
        responseVersions:
          description: The response versions supported by this adapter endpoint
          default:
            - V0
          type: array
          items:
            $ref: '#/components/schemas/EnumResponseGetUsernameAttributesVersion'
      required:
        - flags
        - requestVersions
        - responseVersions
      example:
        flags:
          - SUPPORTS_TIER_HEADER
        requestVersions:
          - V0
        responseVersions:
          - V0
    EnumRequestGetUserPrincipalsVersion:
      description: Supported Request Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
        - V1
      type: string
      example: V0
    EnumResponseGetUserPrincipalsVersion:
      description: Supported Response Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
      type: string
      example: V0
    EndpointMetaGetUserPrincipalsV2:
      type: object
      properties:
        flags:
          description: The flags supported by this endpoint
          type: array
          default: []
          items:
            type: string
            enum:
              - SUPPORTS_TIER_HEADER
              - SUPPORTS_CONSUMER_HEADERS
        requestVersions:
          description: The request versions supported by this adapter endpoint
          default:
            - V0
          type: array
          items:
            $ref: '#/components/schemas/EnumRequestGetUserPrincipalsVersion'
        responseVersions:
          description: The response versions supported by this adapter endpoint
          default:
            - V0
          type: array
          items:
            $ref: '#/components/schemas/EnumResponseGetUserPrincipalsVersion'
      required:
        - flags
        - requestVersions
        - responseVersions
      example:
        flags:
          - SUPPORTS_TIER_HEADER
          - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          - V0
    EndpointMetaAuthV2:
      type: object
      properties:
        initLogin:
          $ref: '#/components/schemas/EndpointMetaInitLoginV2'
        verifyLogin:
          $ref: '#/components/schemas/EndpointMetaVerifyLoginV2'
        getUsernameAttributes:
          $ref: '#/components/schemas/EndpointMetaGetUsernameAttributesV2'
        getUserPrincipals:
          $ref: '#/components/schemas/EndpointMetaGetUserPrincipalsV2'
    EndpointMetaGetHealthV2:
      type: object
      properties:
        flags:
          description: The flags supported by this endpoint
          default: []
          type: array
          items:
            type: string
            enum:
              - SUPPORTS_TIER_HEADER
        responseVersions:
          description: The response versions supported by this adapter endpoint
          default:
            - V0
          type: array
          items:
            $ref: '#/components/schemas/EnumResponseGetHealthVersion'
      required:
        - flags
        - responseVersions
      example:
        flags:
          - SUPPORTS_TIER_HEADER
        responseVersions:
          - V0
    EnumResponseGetClosedPrincipalsVersion:
      description: Supported Response Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
      type: string
      example: V0
    EndpointMetaGetClosedPrincipalsV2:
      type: object
      properties:
        flags:
          description: The flags supported by this endpoint
          default: []
          type: array
          items:
            type: string
            enum:
              - SUPPORTS_TIER_HEADER
        responseVersions:
          description: The response versions supported by this adapter endpoint
          default:
            - V0
          type: array
          items:
            $ref: '#/components/schemas/EnumResponseGetClosedPrincipalsVersion'
      required:
        - flags
        - responseVersions
      example:
        flags:
          - SUPPORTS_TIER_HEADER
        responseVersions:
          - V0
    EndpointMetaAdminV2:
      type: object
      properties:
        getHealth:
          $ref: '#/components/schemas/EndpointMetaGetHealthV2'
        getClosedPrincipals:
          $ref: '#/components/schemas/EndpointMetaGetClosedPrincipalsV2'
      required:
        - getHealth
    EnumResponseListBankingAccountsVersion:
      description: Supported Response Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
      type: string
      example: V0
    EndpointMetaListBankingAccountsV2:
      type: object
      properties:
        flags:
          description: The flags supported by this endpoint
          default: []
          type: array
          items:
            type: string
            enum:
              - SUPPORTS_USERID_QUERY_PARAM
              - SUPPORTS_TIER_HEADER
              - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          description: The response versions supported by this adapter endpoint
          default:
            - V0
          type: array
          items:
            $ref: '#/components/schemas/EnumResponseListBankingAccountsVersion'
      required:
        - flags
        - responseVersions
      example:
        flags:
          - SUPPORTS_TIER_HEADER
          - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          - V0
    EnumResponseListBankingPaymentsVersion:
      description: Supported Response Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
        - V1
      type: string
      example: V0
    EndpointMetaListBankingPaymentsV2:
      type: object
      properties:
        flags:
          description: The flags supported by this endpoint
          type: array
          default: []
          items:
            type: string
            enum:
              - SUPPORTS_USERID_QUERY_PARAM
              - SUPPORTS_TIER_HEADER
              - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          description: The response versions supported by this adapter endpoint
          type: array
          default:
            - V0
          items:
            $ref: '#/components/schemas/EnumResponseListBankingPaymentsVersion'
      required:
        - flags
        - responseVersions
      example:
        flags:
          - SUPPORTS_TIER_HEADER
          - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          - V0
    EnumResponseListBankingPayeesVersion:
      description: Supported Response Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
      type: string
      example: V0
    EndpointMetaListBankingPayeesV2:
      type: object
      properties:
        flags:
          description: The flags supported by this endpoint
          type: array
          default: []
          items:
            type: string
            enum:
              - SUPPORTS_USERID_QUERY_PARAM
              - SUPPORTS_TIER_HEADER
              - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          description: The response versions supported by this adapter endpoint
          type: array
          default:
            - V0
          items:
            $ref: '#/components/schemas/EnumResponseListBankingPayeesVersion'
      required:
        - flags
        - responseVersions
      example:
        flags:
          - SUPPORTS_TIER_HEADER
          - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          - V0
    EnumResponseListBankingTransactionsVersion:
      description: Supported Response Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
      type: string
      example: V0
    EndpointMetaListBankingTransactionsV2:
      type: object
      properties:
        flags:
          description: The flags supported by this endpoint
          type: array
          default: []
          items:
            type: string
            enum:
              - SUPPORTS_USERID_QUERY_PARAM
              - SUPPORTS_TIER_HEADER
              - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          description: The response versions supported by this adapter endpoint
          type: array
          default:
            - V0
          items:
            $ref: '#/components/schemas/EnumResponseListBankingTransactionsVersion'
      required:
        - flags
        - responseVersions
      example:
        flags:
          - SUPPORTS_TIER_HEADER
          - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          - V0
    EnumRequestRequestBankingTransactionDetailListVersion:
      description: Supported Request Version
      enum:
        - V1
      type: string
      example: V1
    EnumResponseRequestBankingTransactionDetailListVersion:
      description: Supported Response Version
      enum:
        - V1
      type: string
      example: V1
    EndpointMetaRequestBankingTransactionDetailListV1:
      type: object
      properties:
        flags:
          description: The flags supported by this endpoint
          default: []
          type: array
          items:
            type: string
            enum:
              - SUPPORTS_TIER_HEADER
              - SUPPORTS_CONSUMER_HEADERS
        requestVersions:
          description: The response versions supported by this adapter endpoint
          default:
            - V1
          type: array
          items:
            $ref: >-
              #/components/schemas/EnumRequestRequestBankingTransactionDetailListVersion
        responseVersions:
          description: The response versions supported by this adapter endpoint
          default:
            - V1
          type: array
          items:
            $ref: >-
              #/components/schemas/EnumResponseRequestBankingTransactionDetailListVersion
      required:
        - flags
        - requestVersions
        - responseVersions
      example:
        flags:
          - SUPPORTS_TIER_HEADER
          - SUPPORTS_CONSUMER_HEADERS
        requestVersions:
          - V1
        responseVersions:
          - V1
    EnumResponseGetBankingTransactionDetailListStatusVersion:
      description: Supported Response Version
      enum:
        - V1
      type: string
      example: V1
    EndpointMetaGetBankingTransactionDetailListStatusV1:
      type: object
      properties:
        flags:
          description: The flags supported by this endpoint
          default: []
          type: array
          items:
            type: string
            enum:
              - SUPPORTS_TIER_HEADER
              - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          description: The response versions supported by this adapter endpoint
          default:
            - V1
          type: array
          items:
            $ref: >-
              #/components/schemas/EnumResponseGetBankingTransactionDetailListStatusVersion
      required:
        - flags
        - responseVersions
      example:
        flags:
          - SUPPORTS_TIER_HEADER
          - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          - V1
    EnumResponseRetrieveBankingTransactionDetailListVersion:
      description: Supported Response Version
      enum:
        - V1
      type: string
      example: V1
    EndpointMetaRetrieveBankingTransactionDetailListV1:
      type: object
      properties:
        flags:
          description: The flags supported by this endpoint
          default: []
          type: array
          items:
            type: string
            enum:
              - SUPPORTS_TIER_HEADER
              - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          description: The response versions supported by this adapter endpoint
          default:
            - V1
          type: array
          items:
            $ref: >-
              #/components/schemas/EnumResponseRetrieveBankingTransactionDetailListVersion
      required:
        - flags
        - responseVersions
      example:
        flags:
          - SUPPORTS_TIER_HEADER
          - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          - V1
    EndpointMetaBankingV2:
      type: object
      properties:
        listBankingAccounts:
          $ref: '#/components/schemas/EndpointMetaListBankingAccountsV2'
        listBankingPayments:
          $ref: '#/components/schemas/EndpointMetaListBankingPaymentsV2'
        listBankingPayees:
          $ref: '#/components/schemas/EndpointMetaListBankingPayeesV2'
        listBankingTransactions:
          $ref: '#/components/schemas/EndpointMetaListBankingTransactionsV2'
        requestBankingTransactionDetailList:
          $ref: >-
            #/components/schemas/EndpointMetaRequestBankingTransactionDetailListV1
        getBankingTransactionDetailListStatus:
          $ref: >-
            #/components/schemas/EndpointMetaGetBankingTransactionDetailListStatusV1
        retrieveBankingTransactionDetailList:
          $ref: >-
            #/components/schemas/EndpointMetaRetrieveBankingTransactionDetailListV1
      required:
        - listBankingAccounts
        - listBankingPayments
        - listBankingPayees
        - listBankingTransactions
    EnumResponseListEnergyAccountsVersionV2:
      description: Supported Response Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V1
        - V2
      type: string
      example: V2
    EndpointMetaListEnergyAccountsV3:
      type: object
      properties:
        flags:
          description: The flags supported by this endpoint
          type: array
          default: []
          items:
            type: string
            enum:
              - SUPPORTS_USERID_QUERY_PARAM
              - SUPPORTS_TIER_HEADER
              - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          description: The response versions supported by this adapter endpoint
          default:
            - V2
          type: array
          items:
            $ref: '#/components/schemas/EnumResponseListEnergyAccountsVersionV2'
      required:
        - flags
        - responseVersions
      example:
        flags:
          - SUPPORTS_TIER_HEADER
          - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          - V2
    EnumResponseGetEnergyPaymentScheduleVersion:
      description: Supported Response Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
      type: string
      example: V0
    EndpointMetaGetEnergyPaymentScheduleV2:
      type: object
      properties:
        flags:
          description: The flags supported by this endpoint
          type: array
          items:
            type: string
            enum:
              - SUPPORTS_USERID_QUERY_PARAM
              - SUPPORTS_TIER_HEADER
              - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          description: The response versions supported by this adapter endpoint
          default:
            - V0
          type: array
          items:
            $ref: '#/components/schemas/EnumResponseGetEnergyPaymentScheduleVersion'
      required:
        - flags
        - responseVersions
      example:
        flags:
          - SUPPORTS_TIER_HEADER
          - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          - V0
    EnumResponseGetEnergyConcessionsVersion:
      description: Supported Response Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
      type: string
      example: V0
    EndpointMetaGetEnergyConcessionsV2:
      type: object
      properties:
        flags:
          description: The flags supported by this endpoint
          type: array
          items:
            type: string
            enum:
              - SUPPORTS_USERID_QUERY_PARAM
              - SUPPORTS_TIER_HEADER
              - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          description: The response versions supported by this adapter endpoint
          default:
            - V0
          type: array
          items:
            $ref: '#/components/schemas/EnumResponseGetEnergyConcessionsVersion'
      required:
        - flags
        - responseVersions
      example:
        flags:
          - SUPPORTS_TIER_HEADER
          - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          - V0
    EnumResponseListEnergyBalancesVersion:
      description: Supported Response Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
      type: string
      example: V0
    EndpointMetaListEnergyBalancesV2:
      type: object
      properties:
        flags:
          description: The flags supported by this endpoint
          type: array
          default: []
          items:
            type: string
            enum:
              - SUPPORTS_USERID_QUERY_PARAM
              - SUPPORTS_TIER_HEADER
              - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          description: The response versions supported by this adapter endpoint
          default:
            - V0
          type: array
          items:
            $ref: '#/components/schemas/EnumResponseListEnergyBalancesVersion'
      required:
        - flags
        - responseVersions
      example:
        flags:
          - SUPPORTS_TIER_HEADER
          - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          - V0
    EnumResponseListEnergyInvoicesVersion:
      description: Supported Response Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
      type: string
      example: V0
    EndpointMetaListEnergyInvoicesV2:
      type: object
      properties:
        flags:
          description: The flags supported by this endpoint
          default: []
          type: array
          items:
            type: string
            enum:
              - SUPPORTS_USERID_QUERY_PARAM
              - SUPPORTS_TIER_HEADER
              - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          description: The response versions supported by this adapter endpoint
          default:
            - V0
          type: array
          items:
            $ref: '#/components/schemas/EnumResponseListEnergyInvoicesVersion'
      required:
        - flags
        - responseVersions
      example:
        flags:
          - SUPPORTS_TIER_HEADER
          - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          - V0
    EnumResponseListEnergyBillingsVersionV2:
      description: Supported Response Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V1
        - V2
      type: string
      example: V2
    EndpointMetaListEnergyBillingsV3:
      type: object
      properties:
        flags:
          description: The flags supported by this endpoint
          type: array
          default: []
          items:
            type: string
            enum:
              - SUPPORTS_USERID_QUERY_PARAM
              - SUPPORTS_TIER_HEADER
              - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          description: The response versions supported by this adapter endpoint
          default:
            - V2
          type: array
          items:
            $ref: '#/components/schemas/EnumResponseListEnergyBillingsVersionV2'
      required:
        - flags
        - responseVersions
      example:
        flags:
          - SUPPORTS_TIER_HEADER
          - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          - V2
    EndpointMetaEnergyV3:
      type: object
      properties:
        listEnergyAccounts:
          $ref: '#/components/schemas/EndpointMetaListEnergyAccountsV3'
        getEnergyPaymentSchedule:
          $ref: '#/components/schemas/EndpointMetaGetEnergyPaymentScheduleV2'
        getEnergyConcessions:
          $ref: '#/components/schemas/EndpointMetaGetEnergyConcessionsV2'
        listEnergyBalances:
          $ref: '#/components/schemas/EndpointMetaListEnergyBalancesV2'
        listEnergyInvoices:
          $ref: '#/components/schemas/EndpointMetaListEnergyInvoicesV2'
        listEnergyBillings:
          $ref: '#/components/schemas/EndpointMetaListEnergyBillingsV3'
      required:
        - listEnergyAccounts
        - getEnergyPaymentSchedule
        - getEnergyConcessions
        - listEnergyBalances
        - listEnergyInvoices
        - listEnergyBillings
    EnumRequestGetFRMPDetailsVersion:
      description: Supported Request Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
        - V1
      type: string
      example: V0
    EnumResponseGetFRMPDetailsVersion:
      description: Supported Response Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
      type: string
      example: V0
    EndpointMetaGetFRMPDetailsV2:
      type: object
      properties:
        flags:
          description: The flags supported by this endpoint
          type: array
          items:
            type: string
            enum:
              - SUPPORTS_TIER_HEADER
        requestVersions:
          description: The request versions supported by this adapter endpoint
          default:
            - V0
          type: array
          items:
            $ref: '#/components/schemas/EnumRequestGetFRMPDetailsVersion'
        responseVersions:
          description: The response versions supported by this adapter endpoint
          default:
            - V0
          type: array
          items:
            $ref: '#/components/schemas/EnumResponseGetFRMPDetailsVersion'
      required:
        - flags
        - requestVersions
        - responseVersions
      example:
        flags:
          - SUPPORTS_TIER_HEADER
          - SUPPORTS_CONSUMER_HEADERS
        requestVersions:
          - V0
        responseVersions:
          - V0
    EndpointMetaDeviceV2:
      type: object
      properties:
        getFRMPDetails:
          $ref: '#/components/schemas/EndpointMetaGetFRMPDetailsV2'
      required:
        - getFRMPDetails
    EnumRequestSendNotificationVersion:
      description: Supported Request Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
      type: string
      example: V0
    EnumResponseSendNotificationVersion:
      description: Supported Response Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
      type: string
      example: V0
    EndpointMetaSendNotificationV2:
      type: object
      properties:
        flags:
          description: The flags supported by this endpoint
          default: []
          type: array
          items:
            type: string
            enum:
              - SUPPORTS_USERID_QUERY_PARAM
              - SUPPORTS_TIER_HEADER
              - SUPPORTS_CONSUMER_HEADERS
        requestVersions:
          description: The request versions supported by this adapter endpoint
          type: array
          default:
            - V0
          items:
            $ref: '#/components/schemas/EnumRequestSendNotificationVersion'
        responseVersions:
          description: The response versions supported by this adapter endpoint
          type: array
          default:
            - V0
          items:
            $ref: '#/components/schemas/EnumResponseSendNotificationVersion'
      required:
        - flags
        - requestVersions
        - responseVersions
      example:
        flags:
          - SUPPORTS_TIER_HEADER
        requestVersions:
          - V0
        responseVersions:
          - V0
    EnumRequestGetUserNotificationInfoVersion:
      description: Supported Request Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
      type: string
      example: V0
    EnumResponseGetUserNotificationInfoVersion:
      description: Supported Response Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
      type: string
      example: V0
    EndpointMetaGetUserNotificationInfoV2:
      type: object
      properties:
        flags:
          description: The flags supported by this endpoint
          type: array
          default: []
          items:
            type: string
            enum:
              - SUPPORTS_TIER_HEADER
        requestVersions:
          description: The request versions supported by this adapter endpoint
          default:
            - V0
          type: array
          items:
            $ref: '#/components/schemas/EnumRequestGetUserNotificationInfoVersion'
        responseVersions:
          description: The response versions supported by this adapter endpoint
          default:
            - V0
          type: array
          items:
            $ref: '#/components/schemas/EnumResponseGetUserNotificationInfoVersion'
      required:
        - flags
        - requestVersions
        - responseVersions
      example:
        flags:
          - SUPPORTS_TIER_HEADER
        requestVersions:
          - V0
        responseVersions:
          - V0
    EndpointMetaNotificationsV2:
      type: object
      properties:
        sendNotification:
          $ref: '#/components/schemas/EndpointMetaSendNotificationV2'
        getUserNotificationInfo:
          $ref: '#/components/schemas/EndpointMetaGetUserNotificationInfoV2'
      required:
        - sendNotification
    EndpointMetaV3:
      type: object
      properties:
        common:
          $ref: '#/components/schemas/EndpointMetaCommonV2'
        auth:
          $ref: '#/components/schemas/EndpointMetaAuthV2'
        admin:
          $ref: '#/components/schemas/EndpointMetaAdminV2'
        banking:
          $ref: '#/components/schemas/EndpointMetaBankingV2'
        energy:
          $ref: '#/components/schemas/EndpointMetaEnergyV3'
        device:
          $ref: '#/components/schemas/EndpointMetaDeviceV2'
        notifications:
          $ref: '#/components/schemas/EndpointMetaNotificationsV2'
      required:
        - common
        - auth
        - admin
    EnumResponseListBankingTransactionsVersionV2:
      description: Supported Response Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
        - V1
      type: string
      example: V0
    EndpointMetaListBankingTransactionsV3:
      type: object
      properties:
        flags:
          description: The flags supported by this endpoint
          type: array
          default: []
          items:
            type: string
            enum:
              - SUPPORTS_USERID_QUERY_PARAM
              - SUPPORTS_TIER_HEADER
              - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          description: The response versions supported by this adapter endpoint
          type: array
          default:
            - V1
          items:
            $ref: '#/components/schemas/EnumResponseListBankingTransactionsVersionV2'
      required:
        - flags
        - responseVersions
      example:
        flags:
          - SUPPORTS_TIER_HEADER
          - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          - V1
    EnumResponseRetrieveBankingTransactionDetailListVersionV2:
      description: Supported Response Version
      enum:
        - V1
        - V2
      type: string
      example: V1
    EndpointMetaRetrieveBankingTransactionDetailListV2:
      type: object
      properties:
        flags:
          description: The flags supported by this endpoint
          default: []
          type: array
          items:
            type: string
            enum:
              - SUPPORTS_TIER_HEADER
              - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          description: The response versions supported by this adapter endpoint
          default:
            - V2
          type: array
          items:
            $ref: >-
              #/components/schemas/EnumResponseRetrieveBankingTransactionDetailListVersionV2
      required:
        - flags
        - responseVersions
      example:
        flags:
          - SUPPORTS_TIER_HEADER
          - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          - V2
    EndpointMetaBankingV3:
      type: object
      properties:
        listBankingAccounts:
          $ref: '#/components/schemas/EndpointMetaListBankingAccountsV2'
        listBankingPayments:
          $ref: '#/components/schemas/EndpointMetaListBankingPaymentsV2'
        listBankingPayees:
          $ref: '#/components/schemas/EndpointMetaListBankingPayeesV2'
        listBankingTransactions:
          $ref: '#/components/schemas/EndpointMetaListBankingTransactionsV3'
        requestBankingTransactionDetailList:
          $ref: >-
            #/components/schemas/EndpointMetaRequestBankingTransactionDetailListV1
        getBankingTransactionDetailListStatus:
          $ref: >-
            #/components/schemas/EndpointMetaGetBankingTransactionDetailListStatusV1
        retrieveBankingTransactionDetailList:
          $ref: >-
            #/components/schemas/EndpointMetaRetrieveBankingTransactionDetailListV2
      required:
        - listBankingAccounts
        - listBankingPayments
        - listBankingPayees
        - listBankingTransactions
    EndpointMetaV4:
      type: object
      properties:
        common:
          $ref: '#/components/schemas/EndpointMetaCommonV2'
        auth:
          $ref: '#/components/schemas/EndpointMetaAuthV2'
        admin:
          $ref: '#/components/schemas/EndpointMetaAdminV2'
        banking:
          $ref: '#/components/schemas/EndpointMetaBankingV3'
        energy:
          $ref: '#/components/schemas/EndpointMetaEnergyV3'
        device:
          $ref: '#/components/schemas/EndpointMetaDeviceV2'
        notifications:
          $ref: '#/components/schemas/EndpointMetaNotificationsV2'
      required:
        - common
        - auth
        - admin
    EnumResponseListBankingAccountsVersionV2:
      description: Supported Response Version
      x-haas-flag: SUPPORTS_V0_VERSIONING
      enum:
        - V0
        - V1
        - V2
      type: string
      example: V0
    EndpointMetaListBankingAccountsV3:
      type: object
      properties:
        flags:
          description: The flags supported by this endpoint
          default: []
          type: array
          items:
            type: string
            enum:
              - SUPPORTS_USERID_QUERY_PARAM
              - SUPPORTS_TIER_HEADER
              - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          description: The response versions supported by this adapter endpoint
          default:
            - V0
          type: array
          items:
            $ref: '#/components/schemas/EnumResponseListBankingAccountsVersionV2'
      required:
        - flags
        - responseVersions
      example:
        flags:
          - SUPPORTS_TIER_HEADER
          - SUPPORTS_CONSUMER_HEADERS
        responseVersions:
          - V0
    EndpointMetaBankingV4:
      type: object
      properties:
        listBankingAccounts:
          $ref: '#/components/schemas/EndpointMetaListBankingAccountsV3'
        listBankingPayments:
          $ref: '#/components/schemas/EndpointMetaListBankingPaymentsV2'
        listBankingPayees:
          $ref: '#/components/schemas/EndpointMetaListBankingPayeesV2'
        listBankingTransactions:
          $ref: '#/components/schemas/EndpointMetaListBankingTransactionsV3'
        requestBankingTransactionDetailList:
          $ref: >-
            #/components/schemas/EndpointMetaRequestBankingTransactionDetailListV1
        getBankingTransactionDetailListStatus:
          $ref: >-
            #/components/schemas/EndpointMetaGetBankingTransactionDetailListStatusV1
        retrieveBankingTransactionDetailList:
          $ref: >-
            #/components/schemas/EndpointMetaRetrieveBankingTransactionDetailListV2
      required:
        - listBankingAccounts
        - listBankingPayments
        - listBankingPayees
        - listBankingTransactions
    EndpointMetaV5:
      type: object
      properties:
        common:
          $ref: '#/components/schemas/EndpointMetaCommonV2'
        auth:
          $ref: '#/components/schemas/EndpointMetaAuthV2'
        admin:
          $ref: '#/components/schemas/EndpointMetaAdminV2'
        banking:
          $ref: '#/components/schemas/EndpointMetaBankingV4'
        energy:
          $ref: '#/components/schemas/EndpointMetaEnergyV3'
        device:
          $ref: '#/components/schemas/EndpointMetaDeviceV2'
        notifications:
          $ref: '#/components/schemas/EndpointMetaNotificationsV2'
      required:
        - common
        - auth
        - admin
    ResponseGetEndpointMeta:
      oneOf:
        - $ref: '#/components/schemas/ResponseGetEndpointMetaV3'
        - $ref: '#/components/schemas/ResponseGetEndpointMetaV4'
        - $ref: '#/components/schemas/ResponseGetEndpointMetaV5'
      discriminator:
        propertyName: version
        mapping:
          V3: '#/components/schemas/ResponseGetEndpointMetaV3'
          V4: '#/components/schemas/ResponseGetEndpointMetaV4'
          V5: '#/components/schemas/ResponseGetEndpointMetaV5'
    RequestGetUserV0:
      type: object
      properties:
        version:
          type: string
          default: V0
        userId:
          description: >-
            The internal user ID of the user. This should be an ID that doesn't
            change over the life of the user.
          type: string
          maxLength: 512
          example: b5d1da97-a796-4e8f-9221-cc3cffafb567
        principalId:
          description: >-
            The internal identifier of the entity being shared via CDR. It is
            the ID that will be supplied to the data sharing calls for customer
            details, listing accounts, etc.
          type: string
          maxLength: 512
          example: 552375cb-9c00-4fde-a0a0-592904a55355
      required:
        - userId
        - principalId
    RequestGetUser:
      oneOf:
        - $ref: '#/components/schemas/RequestGetUserV0'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/RequestGetUserV0'
    ResponseGetUserV0:
      properties:
        version:
          type: string
          default: V0
        principalName:
          description: The name to be presented for the Principal during consent flow
          type: string
          example: Doe Pty Ltd
        customerUType:
          description: >-
            The type of customer object of this principal. Note these are lower
            case and case sensitive.
          enum:
            - organisation
            - person
          type: string
          example: person
        name:
          description: >-
            The full name of the user including prefixes, suffixes and middle
            names.
          type: string
          example: First Last
        lastName:
          description: >-
            The last name of the user. This is mandatory and for people with one
            name, this should be filled in.
          type: string
          example: Last
        firstName:
          description: >-
            The first name of the user. For people with a single name, leave
            this blank.
          type: string
          example: First
        updatedAt:
          description: >-
            The date and time that this record was last updated in the
            downstream system.
          type: string
          format: date-time
          example: '2018-11-13T20:20:39+00:00'
        role:
          description: >-
            An optional string based role for the user for this loginID and
            customerID. E.g: Chief Financial Officer

            If the role is unknown, then please return this as null.
          type: string
          example: Chief Financial Officer
        vulnerable:
          description: >-
            Used to flag if the customer is deemed vulnerable by the data
            holder. Has implications for the consent dashboard and joint account
            notifications.

            **Note:** Required if the Adapter is authoritative for the
            `Vulnerability Status` truth cluster.
          type: boolean
          example: false
        authorityToOperate:
          description: >-
            A list of users that this user has the authority to operate on.

            **Note:** Required if the Adapter is authoritative for the
            `Authority to Operate` truth cluster.
          type: array
          items:
            $ref: '#/components/schemas/AdapterAuthorityToOperateV1'
      required:
        - customerUType
        - lastName
        - name
        - principalName
      type: object
    ResponseGetUserV1:
      properties:
        version:
          type: string
          default: V1
        principalName:
          description: The name to be presented for the Principal during consent flow
          type: string
          example: Doe Pty Ltd
        customerUType:
          description: >-
            The type of customer object of this principal. Please note that
            these values are lower case and case sensitive.
          enum:
            - organisation
            - person
          type: string
          example: person
        name:
          description: >-
            The full name of the user including prefixes, suffixes and middle
            names.
          type: string
          example: First Last
        lastName:
          description: >-
            The last name of the user. This is mandatory and for people with one
            name, this should be filled in.
          type: string
          example: Last
        firstName:
          description: >-
            The first name of the user. For people with a single name, leave
            this blank.
          type: string
          example: First
        updatedAt:
          description: >-
            The date and time that this record was last updated in the
            downstream system.
          type: string
          format: date-time
          example: '2018-11-13T20:20:39+00:00'
        role:
          description: >-
            An optional string based role for the user for this loginID and
            customerID. E.g: Chief Financial Officer

            If the role is unknown, then please return this as null.
          type: string
          example: Chief Financial Officer
        isVisible:
          type: boolean
          description: >-
            Should this principal be visible in the consent flow principal
            selector? This flag can be set to false in instances where a
            principal returned from loginInit / getUserPrincipals does not
            actually represent a consumer but is only a  means to get a list of
            ATOs for the authenticated user. 


            If this is false, the ATOs returned here will be visible in the
            principal selector in consent flow, but principal that was used to
            call getUser here will not be visible as a selectable consumer.
          default: true
        vulnerable:
          description: >-
            Used to flag if the customer is deemed vulnerable by the data
            holder. Has implications for the consent dashboard and joint account
            notifications.

            **Note:** Required if the Adapter is authoritative for the
            `Vulnerability Status` truth cluster.
          type: boolean
          example: false
        authorityToOperate:
          description: >-
            A list of users that this user has the authority to operate on.

            **Note:** Required if the Adapter is authoritative for the
            `Authority to Operate` truth cluster.
          type: array
          items:
            $ref: '#/components/schemas/AdapterAuthorityToOperateV2'
      required:
        - version
        - customerUType
        - lastName
        - name
        - principalName
      type: object
    EnumAdapterAuthorityToOperateTypeV1:
      description: The type of Authority To Operate on this principal.
      type: string
      enum:
        - POWER_OF_ATTORNEY
      example: POWER_OF_ATTORNEY
    AdapterAuthorityToOperateV1:
      type: object
      properties:
        principalId:
          type: string
          maxLength: 512
          example: ad383b27-22d5-4da8-beb8-2fcf65029f0d
          description: The Principal identifier that is the subject of Authority to Operate
        userId:
          type: string
          maxLength: 512
          example: 4e9cfa0b-5790-41de-8fbe-7e4caec817af
          description: The User identifier that is the subject of Authority to Operate
        type:
          $ref: '#/components/schemas/EnumAdapterAuthorityToOperateTypeV1'
      required:
        - principalId
        - userId
        - type
    EnumAdapterAuthorityToOperateTypeV2:
      description: The type of Authority To Operate on this principal.
      type: string
      enum:
        - POWER_OF_ATTORNEY
        - AUTHORITY_TO_ACT
        - STATE_TRUSTEE
        - COURT_APPOINTED
      example: POWER_OF_ATTORNEY
    AdapterAuthorityToOperateV2:
      type: object
      properties:
        principalId:
          type: string
          maxLength: 512
          example: ad383b27-22d5-4da8-beb8-2fcf65029f0d
          description: The Principal identifier that is the subject of Authority to Operate
        userId:
          type: string
          maxLength: 512
          example: 4e9cfa0b-5790-41de-8fbe-7e4caec817af
          description: The User identifier that is the subject of Authority to Operate
        type:
          $ref: '#/components/schemas/EnumAdapterAuthorityToOperateTypeV2'
      required:
        - principalId
        - userId
        - type
    ResponseGetUser:
      oneOf:
        - $ref: '#/components/schemas/ResponseGetUserV0'
        - $ref: '#/components/schemas/ResponseGetUserV1'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/ResponseGetUserV0'
          V1: '#/components/schemas/ResponseGetUserV1'
    ErrorResourceInvalidV1:
      type: object
      properties:
        code:
          description: >-
            Holds an endpoint specific error code. This MAY be a standard CDR
            error code or an application-specific error code.
          type: string
          default: urn:au-cds:error:cds-all:Resource/Invalid
        title:
          description: Holds a human readable label of the error that is constant per code
          type: string
          default: Invalid Resource
        detail:
          description: >-
            The requested resource identifier is permanently unavailable. No
            subsequent request for the resource will be successful. Applies when
            the resource ID is provided in the URI. The error detail is the
            resource ID of the resource being requested.
          type: string
          example: The requested resource identifier is permanently unavailable.
        meta:
          description: Holds additional endpoint specific data relevant to the error
          properties:
            urn:
              description: Holds a standard CDR error code
              type: string
              format: uri
              x-cds-type: URIString
              default: urn:au-cds:error:cds-all:Resource/Invalid
          type: object
      required:
        - code
        - title
        - detail
    DioGeneric404Item:
      oneOf:
        - $ref: '#/components/schemas/ErrorResourceInvalidV1'
      discriminator:
        propertyName: code
        mapping:
          urn:au-cds:error:cds-all:Resource/Invalid: '#/components/schemas/ErrorResourceInvalidV1'
    DioGeneric422Item:
      oneOf:
        - $ref: '#/components/schemas/ErrorGeneralExpectedV1'
      discriminator:
        propertyName: code
    ErrorLegalBlockV1:
      type: object
      properties:
        code:
          description: >-
            Holds an end point specific error code. This MAY be a standard CDR
            error code or an application-specific error code.
          type: string
          default: urn:dio:error:cds-all:Resource/LegalBlock
        title:
          description: Holds a human readable label of the error that is constant per code
          type: string
          default: Legal Block
        detail:
          description: >-
            Holds a human readable description of this specific error. The error
            detail SHOULD be the parameter name of the invalid field. The error
            detail MAY include further details explaining the valid format.
          type: string
          example: Request blocked for Legal Reasons
        meta:
          description: Holds additional end point specific data relevant to the error
          properties:
            urn:
              description: Holds a standard CDR error code
              type: string
              format: uri
              default: urn:dio:error:cds-all:Resource/LegalBlock
          type: object
      required:
        - code
        - title
        - detail
    ErrorIneligibleBlockV1:
      type: object
      properties:
        code:
          description: >-
            Holds an end point specific error code. This MAY be a standard CDR
            error code or an application-specific error code.
          type: string
          default: urn:dio:error:cds-all:Resource/IneligibleBlock
        title:
          description: Holds a human readable label of the error that is constant per code
          type: string
          default: CDR Ineligible
        detail:
          description: >-
            Holds a human readable description of this specific error. The error
            detail SHOULD be the parameter name of the invalid field. The error
            detail MAY include further details explaining the valid format.
          type: string
          default: Customer is ineligible for CDR Data Sharing
        meta:
          description: Holds additional end point specific data relevant to the error
          properties:
            urn:
              description: Holds a standard CDR error code
              type: string
              format: uri
              default: urn:dio:error:cds-all:Resource/IneligibleBlock
          type: object
      required:
        - code
        - title
        - detail
    ErrorCallCenterBlockV1:
      type: object
      properties:
        code:
          description: >-
            Holds an end point specific error code. This MAY be a standard CDR
            error code or an application-specific error code.
          type: string
          default: urn:dio:error:cds-all:Resource/CallCenterBlock
        title:
          description: Holds a human readable label of the error that is constant per code
          type: string
          default: Call Center Block
        detail:
          description: >-
            Holds a human readable description of this specific error. The error
            detail SHOULD be the parameter name of the invalid field. The error
            detail MAY include further details explaining the valid format.
          type: string
          default: Consumer should contact the Call Center for further information.
        meta:
          description: Holds additional end point specific data relevant to the error
          properties:
            urn:
              description: Holds a standard CDR error code
              type: string
              format: uri
              default: urn:dio:error:cds-all:Resource/CallCenterBlock
          type: object
      required:
        - code
        - title
        - detail
    DioGeneric451Item:
      oneOf:
        - $ref: '#/components/schemas/ErrorLegalBlockV1'
        - $ref: '#/components/schemas/ErrorIneligibleBlockV1'
        - $ref: '#/components/schemas/ErrorCallCenterBlockV1'
      discriminator:
        propertyName: code
        mapping:
          urn:dio:error:cds-all:Resource/LegalBlock: '#/components/schemas/ErrorLegalBlockV1'
          urn:dio:error:cds-all:Resource/IneligibleBlock: '#/components/schemas/ErrorIneligibleBlockV1'
          urn:dio:error:cds-all:Resource/CallCenterBlock: '#/components/schemas/ErrorCallCenterBlockV1'
    RequestInitLoginV0:
      type: object
      properties:
        version:
          type: string
          default: V0
        username:
          description: >-
            The username is the string that the customer is expected to enter at
            the first step of the consent flow. It could be an email, phone
            number or some kind of internet banking ID. The CDR mandates that
            the user needs to login to CDR with the same username as their
            digital banking channels, so what this username is depends on your
            existing UX.
          type: string
          example: customer@email.com
      required:
        - username
    RequestInitLoginV1:
      type: object
      description: >-
        This object represents a number of fields that might identify a user
        when authenticating in consent flow.

        The exact fields required to uniquely identify the user is an adapter
        implementation detail, as in energy  especially the consumer attempting
        to authenticate may not have a online digital identity / username with
        the holder and be required to provide detail from their bill and PII to
        identify themselves.
      properties:
        version:
          type: string
          default: V1
        username:
          description: >-
            The username is the string that the customer is expected to enter at
            the first step of the consent flow. It could be an email, phone
            number or some kind of internet banking ID. The CDR mandates that
            the user needs to login to CDR with the same username as their
            digital banking channels, so what this username is depends on your
            existing UX.
          type: string
          example: test.user
        email:
          type: string
          description: The email of the user
          example: test.user@example.com
        phoneNumber:
          type: string
          example: '+61488111222'
          description: The phone number of the user in E.164 format
        dateOfBirth:
          type: string
          example: '1980-01-01'
          description: The date of birth of the user in YYYY-MM-DD format.
        invoiceRef:
          type: string
          example: INV1234566
          description: >-
            The invoice ref of the customer that the customer would see on their
            bills.
        nmi:
          type: string
          example: '612344567890'
          description: A national meter ID (NMI) that belongs to this user
      required:
        - version
    RequestInitLogin:
      oneOf:
        - $ref: '#/components/schemas/RequestInitLoginV0'
        - $ref: '#/components/schemas/RequestInitLoginV1'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/RequestInitLoginV0'
          V1: '#/components/schemas/RequestInitLoginV1'
    ResponseInitLoginV0:
      properties:
        version:
          type: string
          default: V0
        requestId:
          description: OTP Request ID
          type: string
          example: e5468c93-2dfc-4a27-b156-009a1067f2fb
        otp:
          description: Actual OTP (for testing only)
          type: string
          example: '123455'
      required:
        - requestId
      type: object
    ResponseInitLogin:
      oneOf:
        - $ref: '#/components/schemas/ResponseInitLoginV0'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/ResponseInitLoginV0'
    EnumAdapterLoginFieldNameV1:
      description: The name of the field being referenced from the RequestAdapterLoginInit
      type: string
      example: USERNAME
      enum:
        - USERNAME
        - EMAIL
        - DATE_OF_BIRTH
        - INVOICE_REF
        - PHONE_NUMBER
        - NMI
    ErrorLoginInitFieldMissingV1:
      type: object
      properties:
        code:
          description: >-
            Holds an end point specific error code. This MAY be a standard CDR
            error code or an application-specific error code.
          type: string
          default: urn:au-cds:error:cds-all:LoginInitField/Missing
        title:
          description: Holds a human readable label of the error that is constant per code
          type: string
          default: Missing Required Field
        detail:
          description: >-
            Holds a human readable description of this specific error. The error
            detail SHOULD be the parameter name of the missing field.
          type: string
          example: fieldName missing
        meta:
          description: Holds additional end point specific data relevant to the error
          properties:
            fields:
              type: array
              items:
                $ref: '#/components/schemas/EnumAdapterLoginFieldNameV1'
            urn:
              description: Holds a standard CDR error code
              type: string
              format: uri
              x-cds-type: URIString
              default: urn:au-cds:error:cds-all:LoginInitField/Missing
          type: object
      required:
        - code
        - title
        - detail
    ErrorLoginInitFieldInvalidV1:
      type: object
      properties:
        code:
          description: >-
            Holds an end point specific error code. This MAY be a standard CDR
            error code or an application-specific error code.
          type: string
          default: urn:au-cds:error:cds-all:LoginInitField/Invalid
        title:
          description: Holds a human readable label of the error that is constant per code
          type: string
          default: Invalid Field
        detail:
          description: >-
            Holds a human readable description of this specific error. The error
            detail SHOULD be the parameter name of the missing field.
          type: string
          example: fieldName invalid
        meta:
          description: Holds additional end point specific data relevant to the error
          properties:
            fields:
              type: array
              items:
                $ref: '#/components/schemas/EnumAdapterLoginFieldNameV1'
            urn:
              description: Holds a standard CDR error code
              type: string
              format: uri
              x-cds-type: URIString
              default: urn:au-cds:error:cds-all:LoginInitField/Invalid
          type: object
      required:
        - code
        - title
        - detail
    InitLogin400Item:
      oneOf:
        - $ref: '#/components/schemas/ErrorLoginInitFieldMissingV1'
        - $ref: '#/components/schemas/ErrorLoginInitFieldInvalidV1'
        - $ref: '#/components/schemas/ErrorHeaderInvalidV1'
      discriminator:
        propertyName: code
        mapping:
          urn:au-cds:error:cds-all:LoginInitField/Missing: '#/components/schemas/ErrorLoginInitFieldMissingV1'
          urn:au-cds:error:cds-all:LoginInitField/Invalid: '#/components/schemas/ErrorLoginInitFieldInvalidV1'
          urn:au-cds:error:cds-all:Header/Invalid: '#/components/schemas/ErrorHeaderInvalidV1'
    ErrorInvalidUsernameV1:
      type: object
      deprecated: true
      properties:
        code:
          description: Indicates an Invalid Username.
          type: string
          default: urn:dio:error:cds-all:Login/InvalidUsername
        title:
          description: Holds a human readable label of the error that is constant per code
          type: string
          default: Invalid Username Specified
        detail:
          description: >-
            Holds a human readable description of this specific error. The error
            detail SHOULD be populated with a meaningful error description,
            without revealing sensitive information.
          type: string
          example: The Username supplied was invalid
        meta:
          description: Holds additional end point specific data relevant to the error
          properties:
            urn:
              description: Holds a standard CDR error code
              type: string
              format: uri
              default: urn:dio:error:cds-all:Login/InvalidUsername
          type: object
      required:
        - code
        - title
        - detail
    InitLogin422Item:
      oneOf:
        - $ref: '#/components/schemas/ErrorInvalidUsernameV1'
      discriminator:
        propertyName: code
    RequestVerifyLoginV0:
      type: object
      properties:
        version:
          type: string
          default: V0
        requestId:
          type: string
          example: e5468c93-2dfc-4a27-b156-009a1067f2fb
        otpValue:
          type: string
          example: '123455'
      required:
        - requestId
        - otpValue
    RequestVerifyLogin:
      oneOf:
        - $ref: '#/components/schemas/RequestVerifyLoginV0'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/RequestVerifyLoginV0'
    ResponseVerifyLoginV0:
      properties:
        version:
          type: string
          default: V0
        principalIds:
          description: >-
            List of Principal Identifiers matching the authorisation request or
            user lookup.

            For a system where there is a 1:1 mapping between users and
            principals, please just return a single principalId which is the
            userId.
          type: array
          items:
            description: >-
              The internal identifier of the entity being shared via CDR. It is
              the ID that will be supplied to the adapter calls for customer
              details, listing accounts, etc.
            type: string
            maxLength: 512
            example: 552375cb-9c00-4fde-a0a0-592904a55355
        userId:
          description: >-
            The internal user ID of the user. This should be an ID that doesn't
            change over the life of the user.
          type: string
          maxLength: 512
          example: b5d1da97-a796-4e8f-9221-cc3cffafb567
      type: object
      required:
        - principalIds
        - userId
    ResponseVerifyLogin:
      oneOf:
        - $ref: '#/components/schemas/ResponseVerifyLoginV0'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/ResponseVerifyLoginV0'
    ErrorInvalidOTPSpecifiedV1:
      type: object
      properties:
        code:
          description: Invalid Request ID & OTP Specified
          type: string
          default: urn:dio:error:dio-all:Login/InvalidOTP
        title:
          description: Holds a human readable label of the error that is constant per code
          type: string
          default: Invalid Request ID and OTP Combination specified
        detail:
          description: >-
            Holds a human readable description of this specific error. The error
            detail SHOULD be populated with a meaningful error description,
            without revealing sensitive information.
          type: string
          example: The Request Identifier or OTP specified was invalid
        meta:
          description: Holds additional end point specific data relevant to the error
          properties:
            urn:
              description: Holds a standard CDR error code
              type: string
              format: uri
              default: urn:dio:error:dio-all:Login/InvalidOTP
          type: object
      required:
        - code
        - title
        - detail
    VerifyLogin422Item:
      oneOf:
        - $ref: '#/components/schemas/ErrorInvalidOTPSpecifiedV1'
      discriminator:
        propertyName: code
        mapping:
          urn:dio:error:dio-all:Login/InvalidOTP: '#/components/schemas/ErrorInvalidOTPSpecifiedV1'
    RequestGetUserNotificationInfoV0:
      type: object
      properties:
        version:
          type: string
          default: V0
        userId:
          description: >-
            The internal user ID of the user. This should be an ID that doesn't
            change over the life of the user.
          type: string
          maxLength: 512
          example: b5d1da97-a796-4e8f-9221-cc3cffafb567
      required:
        - userId
    RequestGetUserNotificationInfo:
      oneOf:
        - $ref: '#/components/schemas/RequestGetUserNotificationInfoV0'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/RequestGetUserNotificationInfoV0'
    ResponseGetUserNotificationInfoV0:
      properties:
        version:
          type: string
          default: V0
        name:
          description: >-
            The full name of the user including prefixes, suffixes and middle
            names.
          type: string
          example: First Last
        email:
          description: The primary email address that notifications should be sent to.
          type: string
          example: demo@example.com
      required:
        - name
      type: object
    ResponseGetUserNotificationInfo:
      oneOf:
        - $ref: '#/components/schemas/ResponseGetUserNotificationInfoV0'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/ResponseGetUserNotificationInfoV0'
    RequestGetUsernameAttributesV0:
      type: object
      properties:
        version:
          type: string
          default: V0
        username:
          description: >-
            The username is the string that the customer is expected to enter at
            the first step of the consent flow. It could be an email, phone
            number or some kind of internet banking ID. The CDR mandates that
            the user needs to login to CDR with the same username as their
            digital banking channels, so what this username is depends on your
            existing UX.
          type: string
          example: customer@email.com
      required:
        - username
    RequestGetUsernameAttributesV1:
      type: object
      description: >-
        This object represents a number of fields that might identify a user
        when authenticating in consent flow.

        The exact fields required to uniquely identify the user is an adapter
        implementation detail, as in energy  especially the consumer attempting
        to authenticate may not have a online digital identity / username with
        the holder and be required to provide detail from their bill and PII to
        identify themselves.
      properties:
        version:
          type: string
          default: V1
        username:
          description: >-
            The username is the string that the customer is expected to enter at
            the first step of the consent flow. It could be an email, phone
            number or some kind of internet banking ID. The CDR mandates that
            the user needs to login to CDR with the same username as their
            digital banking channels, so what this username is depends on your
            existing UX.
          type: string
          example: test.user
        email:
          type: string
          description: The email of the user
          example: test.user@example.com
        phoneNumber:
          type: string
          example: '+61488111222'
          description: The phone number of the user in E.164 format
        dateOfBirth:
          type: string
          example: '1980-01-01'
          description: The date of birth of the user in YYYY-MM-DD format.
        invoiceRef:
          type: string
          example: INV1234566
          description: >-
            The invoice ref of the customer that the customer would see on their
            bills.
        nmi:
          type: string
          example: '612344567890'
          description: A national meter ID (NMI) that belongs to this user
      required:
        - version
    RequestGetUsernameAttributes:
      oneOf:
        - $ref: '#/components/schemas/RequestGetUsernameAttributesV0'
        - $ref: '#/components/schemas/RequestGetUsernameAttributesV1'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/RequestGetUsernameAttributesV0'
          V1: '#/components/schemas/RequestGetUsernameAttributesV1'
    ResponseGetUsernameAttributesV0:
      properties:
        version:
          type: string
          default: V0
        userId:
          description: >-
            The internal user ID of the user. This should be an ID that doesn't
            change over the life of the user.
          type: string
          maxLength: 512
          example: b5d1da97-a796-4e8f-9221-cc3cffafb567
        otpType:
          $ref: '#/components/schemas/EnumOtpTypeV1'
        emailAddresses:
          description: Array is mandatory but may be empty if no email addresses are held
          items:
            $ref: '#/components/schemas/CommonEmailAddressV1'
          type: array
          default: []
        phoneNumbers:
          description: Array is mandatory but may be empty if no phone numbers are held
          items:
            $ref: '#/components/schemas/CommonPhoneNumberV1'
          type: array
          default: []
      required:
        - userId
        - otpType
        - emailAddresses
        - phoneNumbers
      type: object
    EnumOtpTypeV1:
      description: The type of OTP to send
      type: string
      default: MOBILE
      example: MOBILE
      enum:
        - MOBILE
        - EMAIL
    EnumCommonEmailAddressPurposeV1:
      description: The purpose for the email, as specified by the customer (Enumeration)
      enum:
        - HOME
        - OTHER
        - UNSPECIFIED
        - WORK
      type: string
      example: HOME
    CommonEmailAddressV1:
      properties:
        address:
          description: >-
            A correctly formatted email address, as defined by the addr-spec
            format in [RFC 5322](https://www.ietf.org/rfc/rfc5322.txt)
          type: string
          format: email
          x-cds-type: ExternalRef
          example: john@doe.com
        isPreferred:
          description: >-
            May be true for one and only one email record in the collection.
            Denotes the default email address
          type: boolean
          example: true
        purpose:
          $ref: '#/components/schemas/EnumCommonEmailAddressPurposeV1'
      required:
        - address
        - purpose
      type: object
    EnumCommonPhoneNumberPurposeV1:
      description: The purpose of the number as specified by the customer
      enum:
        - HOME
        - INTERNATIONAL
        - MOBILE
        - OTHER
        - UNSPECIFIED
        - WORK
      type: string
      example: MOBILE
    CommonPhoneNumberV1:
      properties:
        areaCode:
          description: >-
            Required for non Mobile Phones, if field is present and refers to
            Australian code - the leading 0 should be omitted.
          type: string
        countryCode:
          description: If absent, assumed to be Australia (+61). The + should be included
          type: string
        extension:
          description: An extension number (if applicable)
          type: string
        fullNumber:
          description: >-
            Fully formatted phone number with country code, area code, number
            and extension incorporated. Formatted according to section 5.1.4. of
            [RFC 3966](https://www.ietf.org/rfc/rfc3966.txt)
          type: string
          x-cds-type: ExternalRef
          example: '+61439123123'
        isPreferred:
          description: >-
            May be true for one and only one entry to indicate the preferred
            phone number. Assumed to be 'false' if not present
          type: boolean
          example: true
        number:
          description: The actual phone number, with leading zeros as appropriate
          type: string
          example: '0439123123'
        purpose:
          $ref: '#/components/schemas/EnumCommonPhoneNumberPurposeV1'
      required:
        - fullNumber
        - number
        - purpose
      type: object
      x-conditional:
        - areaCode
    ResponseGetUsernameAttributes:
      oneOf:
        - $ref: '#/components/schemas/ResponseGetUsernameAttributesV0'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/ResponseGetUsernameAttributesV0'
    GetUsernameAttributes400Item:
      oneOf:
        - $ref: '#/components/schemas/ErrorLoginInitFieldMissingV1'
        - $ref: '#/components/schemas/ErrorLoginInitFieldInvalidV1'
        - $ref: '#/components/schemas/ErrorHeaderInvalidV1'
      discriminator:
        propertyName: code
        mapping:
          urn:au-cds:error:cds-all:LoginInitField/Missing: '#/components/schemas/ErrorLoginInitFieldMissingV1'
          urn:au-cds:error:cds-all:LoginInitField/Invalid: '#/components/schemas/ErrorLoginInitFieldInvalidV1'
          urn:au-cds:error:cds-all:Header/Invalid: '#/components/schemas/ErrorHeaderInvalidV1'
    RequestGetUserPrincipalsV0:
      type: object
      properties:
        version:
          type: string
          default: V0
        userId:
          description: >-
            The internal user ID of the user. This should be an ID that doesn't
            change over the life of the user.
          type: string
          maxLength: 512
          example: b5d1da97-a796-4e8f-9221-cc3cffafb567
      required:
        - userId
    RequestGetUserPrincipals:
      oneOf:
        - $ref: '#/components/schemas/RequestGetUserPrincipalsV0'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/RequestGetUserPrincipalsV0'
    ResponseGetUserPrincipalsV0:
      properties:
        version:
          type: string
          default: V0
        principalIds:
          description: >-
            List of Principal Identifiers matching the authorisation request or
            user lookup.

            For a system where there is a 1:1 mapping between users and
            principals, please just return a single principalId which is the
            userId.
          type: array
          items:
            description: >-
              The internal identifier of the entity being shared via CDR. It is
              the ID that will be supplied to the adapter calls for customer
              details, listing accounts, etc.
            type: string
            maxLength: 512
            example: 552375cb-9c00-4fde-a0a0-592904a55355
        userId:
          description: >-
            The internal user ID of the user. This should be an ID that doesn't
            change over the life of the user.
          type: string
          maxLength: 512
          example: b5d1da97-a796-4e8f-9221-cc3cffafb567
      type: object
      required:
        - principalIds
        - userId
    ResponseGetUserPrincipals:
      oneOf:
        - $ref: '#/components/schemas/ResponseGetUserPrincipalsV0'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/ResponseGetUserPrincipalsV0'
    RequestBankingTransactionDetailListV1:
      type: object
      properties:
        version:
          type: string
          default: V1
        data:
          $ref: '#/components/schemas/RequestBankingTransactionDetailListDataV1'
      required:
        - data
        - version
    RequestBankingTransactionDetailListDataV1:
      type: object
      properties:
        principalId:
          description: >-
            The internal identifier of the entity being shared via CDR. It is
            the ID that will be supplied to the data sharing calls for customer
            details, listing accounts, etc.
          type: string
          x-cds-type: ASCIIString
          example: 552375cb-9c00-4fde-a0a0-592904a55355
        userId:
          description: >-
            The optional user to apply to the adapter call. This allows
            filtering of resources to only those accessible by the user rather
            than the whole set of resources available to the principal
          type: string
          x-cds-type: ASCIIString
          example: 552375cb-9c00-4fde-a0a0-592904a55355
        accountIds:
          description: Array of specific account IDs to obtain data for.
          items:
            type: string
            x-cds-type: ASCIIString
          type: array
          example:
            - 7b2604da-0810-4ad4-8c74-7ce0487ed26e
            - 67d542f5-e0ec-4df5-821e-4dbf02c4403f
        oldestTime:
          description: >-
            Constrain the transaction history request to transactions with
            effective time at or after this date/time. Format is aligned to
            DateTimeString common type.
          type: string
          format: date-time
          x-cds-type: DateTimeString
          example: '2023-07-01T15:43:00.123456Z'
        newestTime:
          description: >-
            Constrain the transaction history request to transactions with
            effective time at or before this date/time. Format is aligned to
            DateTimeString common type.
          type: string
          format: date-time
          x-cds-type: DateTimeString
          example: '2024-06-30T15:43:00.123456Z'
        minAmount:
          description: >-
            Filter transactions to only transactions with amounts higher or
            equal to than this amount
          type: string
          x-cds-type: AmountString
        maxAmount:
          description: >-
            Filter transactions to only transactions with amounts less than or
            equal to than this amount
          type: string
          x-cds-type: AmountString
      required:
        - principalId
        - accountIds
        - oldestTime
        - newestTime
    RequestBankingTransactionDetailList:
      oneOf:
        - $ref: '#/components/schemas/RequestBankingTransactionDetailListV1'
      discriminator:
        propertyName: version
        mapping:
          V1: '#/components/schemas/RequestBankingTransactionDetailListV1'
    ResponseGetBankingTransactionDetailListStatusV1:
      properties:
        version:
          type: string
          default: V1
        data:
          $ref: '#/components/schemas/RequestBankingTransactionDetailListDataV1'
        meta:
          $ref: '#/components/schemas/MetaRequestBankingTransactionDetailListV1'
      required:
        - version
        - data
        - meta
      type: object
    MetaRequestBankingTransactionDetailListV1:
      properties:
        actionId:
          description: Unique Action Identifier
          type: string
          example: 9fe3f97e-c22c-4516-b6ed-05c0486db195
        status:
          description: Current status of the requested action
          enum:
            - INITIALISE
            - PROCESSING
            - COMPLETE
            - EXPIRED
            - FAILED
          type: string
          example: PROCESSING
        statusDescription:
          description: >-
            Description of the current status, can be used to provide an
            extended description
          type: string
          example: Job Received, contacting internal systems to formulate response.
        creationDateTime:
          description: Creation Date/Time
          type: string
          format: date-time
          x-cds-type: DateTimeString
          example: '2024-02-31T08:14:25Z'
        lastUpdated:
          description: Last Status Update time
          type: string
          format: date-time
          x-cds-type: DateTimeString
          example: '2024-08-31T08:14:25Z'
      required:
        - actionId
        - status
        - statusDescription
        - creationDateTime
        - lastUpdated
      type: object
    ResponseGetBankingTransactionDetailListStatus:
      oneOf:
        - $ref: '#/components/schemas/ResponseGetBankingTransactionDetailListStatusV1'
      discriminator:
        propertyName: version
        mapping:
          V1: '#/components/schemas/ResponseGetBankingTransactionDetailListStatusV1'
    ResponseRetrieveBankingTransactionDetailListV1:
      properties:
        version:
          type: string
          default: V1
        data:
          type: array
          items:
            $ref: '#/components/schemas/DioTransactionV2'
          minItems: 0
        meta:
          $ref: '#/components/schemas/MetaPaginatedV1'
      required:
        - version
        - data
        - meta
      type: object
    ResponseRetrieveBankingTransactionDetailListV2:
      properties:
        version:
          type: string
          default: V2
        data:
          type: array
          items:
            $ref: '#/components/schemas/DioTransactionV3'
          minItems: 0
        meta:
          $ref: '#/components/schemas/MetaPaginatedV1'
      required:
        - version
        - data
        - meta
      type: object
    DioTransactionBPAYV1:
      properties:
        billerCode:
          description: BPAY Biller Code for the transaction (if available)
          type: string
        billerName:
          description: Name of the BPAY biller for the transaction (if available)
          type: string
        crn:
          description: BPAY CRN for the transaction (if available)
          type: string
      type: object
    DioTransactionCreditCardV1:
      properties:
        merchantCategoryCode:
          description: >-
            The merchant category code (or MCC) for an outgoing payment to a
            merchant
          type: string
          example: '5021'
        merchantName:
          description: Name of the merchant for an outgoing payment to a merchant
          type: string
          example: Freedom Furniture
      type: object
      required:
        - merchantCategoryCode
        - merchantName
    DioTransactionDirectDepositV1:
      properties:
        bsb:
          description: BSB Number of initiating bank
          type: string
          pattern: ^\d{6}
          example: '999999'
      type: object
      required:
        - bsb
    DioTransactionX2P101V2:
      properties:
        payee:
          description: >-
            Label of the target PayID.  Mandatory for an outbound payment. The
            name assigned to the BSB/Account Number or PayID (by the owner of
            the PayID)
          type: string
        payer:
          description: Label of the originating payer. Mandatory for inbound payment
          type: string
        endToEndId:
          description: An end to end ID for the payment created at initiation
          type: string
        extendedDescription:
          description: An extended string description.
          type: string
          example: An extended description about the X2P1.01 payment
        purposeCode:
          description: >-
            Purpose of the payment.  Format is defined by NPP standards for the
            x2p1.01 overlay service
          type: string
      required:
        - extendedDescription
      type: object
    DioTransactionV2:
      properties:
        id:
          description: Unique Transaction Identifier
          type: string
          example: 964e06a838a236f3883cb5b19369ddcf63f95f746f7f4035b7d1f67063800298
        accountId:
          description: Account Identifier
          type: string
          maxLength: 255
          example: jdnmwucgrchzngrqieryhiovpvzknokkwsediggdlnxgxizegvwpwfflgavkrbay
        amount:
          description: >-
            The value of the transaction. Negative values mean money was
            outgoing from the account
          type: number
          example: 55.66
        amountType:
          description: The general type associated with the amount
          enum:
            - FEE
            - INTEREST_CHARGED
            - INTEREST_PAID
            - TRANSFER_OUTGOING
            - TRANSFER_INCOMING
            - PAYMENT
            - DIRECT_DEBIT
            - OTHER
          example: PAYMENT
          type: string
        currency:
          description: The currency for the transaction amount. AUD assumed if not present
          type: string
          pattern: ^\w{3}$
          default: AUD
        description:
          description: The transaction description as applied by the financial institution
          type: string
          example: Payment for furniture accessories
        reference:
          description: >-
            The reference for the transaction provided by the originating
            institution. Empty string if no data provided
          type: string
          default: ''
        status:
          description: >-
            Status of the transaction whether pending or posted. Note that there
            is currently no provision in the standards to guarantee the ability
            to correlate a pending transaction with an associated posted
            transaction
          enum:
            - PENDING
            - POSTED
          type: string
          example: POSTED
        executionDateTime:
          description: >-
            The time the transaction was executed by the originating customer,
            if available
          type: string
          format: date-time
        postingDateTime:
          description: >-
            The time the transaction was posted. This field is Mandatory if the
            transaction has status POSTED.  This is the time that appears on a
            standard statement
          type: string
          format: date-time
        valueDateTime:
          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
          type: string
          format: date-time
        transactionType:
          description: The type of transaction represented
          enum:
            - BPAY
            - CREDIT_CARD
            - DIRECT_DEPOSIT
            - X2P101
          type: string
          example: BPAY
        bpay:
          $ref: '#/components/schemas/DioTransactionBPAYV1'
        creditCard:
          $ref: '#/components/schemas/DioTransactionCreditCardV1'
        directDeposit:
          $ref: '#/components/schemas/DioTransactionDirectDepositV1'
        x2p101:
          $ref: '#/components/schemas/DioTransactionX2P101V2'
      required:
        - id
        - accountId
        - amount
        - description
        - reference
        - status
        - amountType
      type: object
    MetaPaginatedV1:
      properties:
        totalPages:
          description: >-
            The total number of pages in the full set. See
            [pagination](https://consumerdatastandardsaustralia.github.io/standards/#pagination).
          type: integer
          x-cds-type: NaturalNumber
          minimum: 0
          example: 1
        totalRecords:
          description: >-
            The total number of records in the full set. See
            [pagination](https://consumerdatastandardsaustralia.github.io/standards/#pagination).
          type: integer
          x-cds-type: NaturalNumber
          minimum: 0
          example: 20
      required:
        - totalPages
        - totalRecords
      type: object
    DioTransactionNppPayloadV1:
      properties:
        payee:
          description: >-
            Label of the target PayID. Mandatory for an outbound payment. The
            name assigned to the BSB/Account Number or PayID (by the owner of
            the PayID)
          type: string
        payer:
          description: Label of the originating payer. Mandatory for inbound payment
          type: string
        endToEndId:
          description: An end to end ID for the payment created at initiation
          type: string
        extendedDescription:
          description: An extended string description.
          type: string
          example: An extended description about the X2P1.01 payment
        purposeCode:
          description: >-
            Purpose of the payment. Format is defined by the NPP standards for
            the NPP overlay services including Osko (X2P1)
          type: string
        service:
          description: >-
            Identifier of the applicable overlay service. The service is used in
            conjunction with the serviceVersion
          enum:
            - X2P1
            - IFTI
            - BSCT
            - CATSCT
          example: X2P1
          type: string
        serviceVersion:
          description: Two-digit NPP service overlay version with leading zero
          example: '03'
          type: string
      required:
        - extendedDescription
        - service
        - serviceVersion
      type: object
    DioTransactionV3:
      properties:
        id:
          description: Unique Transaction Identifier
          type: string
          example: 964e06a838a236f3883cb5b19369ddcf63f95f746f7f4035b7d1f67063800298
        accountId:
          description: Account Identifier
          type: string
          maxLength: 255
          example: jdnmwucgrchzngrqieryhiovpvzknokkwsediggdlnxgxizegvwpwfflgavkrbay
        amount:
          description: >-
            The value of the transaction. Negative values mean money was
            outgoing from the account
          type: number
          example: 55.66
        amountType:
          description: The general type associated with the amount
          enum:
            - FEE
            - INTEREST_CHARGED
            - INTEREST_PAID
            - TRANSFER_OUTGOING
            - TRANSFER_INCOMING
            - PAYMENT
            - DIRECT_DEBIT
            - OTHER
          example: PAYMENT
          type: string
        currency:
          description: The currency for the transaction amount. AUD assumed if not present
          type: string
          pattern: ^\w{3}$
          default: AUD
        description:
          description: The transaction description as applied by the financial institution
          type: string
          example: Payment for furniture accessories
        reference:
          description: >-
            The reference for the transaction provided by the originating
            institution. Empty string if no data provided
          type: string
          default: ''
        status:
          description: >-
            Status of the transaction whether pending or posted. Note that there
            is currently no provision in the standards to guarantee the ability
            to correlate a pending transaction with an associated posted
            transaction
          enum:
            - PENDING
            - POSTED
          type: string
          example: POSTED
        executionDateTime:
          description: >-
            The time the transaction was executed by the originating customer,
            if available
          type: string
          format: date-time
        postingDateTime:
          description: >-
            The time the transaction was posted. This field is Mandatory if the
            transaction has status POSTED.  This is the time that appears on a
            standard statement
          type: string
          format: date-time
        valueDateTime:
          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
          type: string
          format: date-time
        transactionType:
          description: The type of transaction represented
          enum:
            - BPAY
            - CREDIT_CARD
            - DIRECT_DEPOSIT
            - NPP_PAYLOAD
          type: string
          example: BPAY
        bpay:
          $ref: '#/components/schemas/DioTransactionBPAYV1'
        creditCard:
          $ref: '#/components/schemas/DioTransactionCreditCardV1'
        directDeposit:
          $ref: '#/components/schemas/DioTransactionDirectDepositV1'
        nppPayload:
          $ref: '#/components/schemas/DioTransactionNppPayloadV1'
      required:
        - id
        - accountId
        - amount
        - description
        - reference
        - status
        - amountType
      type: object
    ResponseRetrieveBankingTransactionDetailList:
      oneOf:
        - $ref: '#/components/schemas/ResponseRetrieveBankingTransactionDetailListV1'
        - $ref: '#/components/schemas/ResponseRetrieveBankingTransactionDetailListV2'
      discriminator:
        propertyName: version
        mapping:
          V1: '#/components/schemas/ResponseRetrieveBankingTransactionDetailListV1'
          V2: '#/components/schemas/ResponseRetrieveBankingTransactionDetailListV2'
    ResponseListBankingPayeesV0:
      properties:
        version:
          type: string
          default: V0
        data:
          description: List of Payees matching the filter requirements
          items:
            $ref: '#/components/schemas/AdapterPayeeV2'
          type: array
      required:
        - data
      type: object
    BankingBillerPayeeV1:
      description: BPAY Payee details. Present if `uType` is set to `biller`
      properties:
        billerCode:
          description: BPAY Biller Code of the Biller
          type: string
          example: '12345'
        billerName:
          description: Name of the Biller
          type: string
          example: BPAY Electricity Co
        crn:
          description: >-
            BPAY CRN of the Biller(if available). Where the CRN contains
            sensitive information, it should be masked in line
              with how the Data Holder currently displays account identifiers in their existing online banking channels.
              If the contents of the CRN match the format of a Credit Card PAN they should be masked according to the rules
              applicable for MaskedPANString. If the contents are otherwise sensitive, then it should be masked using the
              rules applicable for the MaskedAccountString common type.
          type: string
          example: XXXXXXXXXXXX1234
      required:
        - billerCode
        - billerName
      type: object
      x-conditional:
        - crn
    BankingDomesticPayeeAccountV1:
      properties:
        accountName:
          description: Name of the account to pay to
          type: string
          example: Woolie Jumpers Shop
        accountNumber:
          description: Number of the account to pay to
          type: string
          example: '1234123423'
        bsb:
          description: BSB of the account to pay to
          type: string
          example: 123-123
      required:
        - accountNumber
        - bsb
      type: object
    BankingDomesticPayeeCardV1:
      properties:
        cardNumber:
          description: Number of the card to pay to
          type: string
          x-cds-type: MaskedPANString
          example: XXXX-XXXX-XXXX-1234
      required:
        - cardNumber
      type: object
    BankingDomesticPayeePayIdV1:
      properties:
        identifier:
          description: The identifier of the PayID (dependent on type)
          type: string
          example: hello@biza.io
        name:
          description: The name assigned to the PayID by the owner of the PayID
          type: string
          example: Biza Pty Ltd
        type:
          description: The type of the PayID
          enum:
            - EMAIL
            - TELEPHONE
            - ABN
            - ORG_IDENTIFIER
          type: string
          example: EMAIL
      required:
        - identifier
        - type
      type: object
    BankingDomesticPayeeV1:
      description: Domestic Payee details. Present if `uType` is set to `domestic`
      properties:
        account:
          $ref: '#/components/schemas/BankingDomesticPayeeAccountV1'
        card:
          $ref: '#/components/schemas/BankingDomesticPayeeCardV1'
        payId:
          $ref: '#/components/schemas/BankingDomesticPayeePayIdV1'
        payeeAccountUType:
          description: >-
            Type of account object included. Valid values are: **account** A
            standard Australian account defined by BSB/Account Number. **card**
            A credit or charge card to pay to (note that PANs are masked).
            **payId** A PayID recognised by NPP
          enum:
            - account
            - card
            - payId
          type: string
          example: payId
      required:
        - payeeAccountUType
      type: object
      x-conditional:
        - account
        - card
        - payId
    BankingInternationalPayeeBankDetailsBankAddressV1:
      properties:
        address:
          description: Address of the recipient Bank
          type: string
          example: 100 Wiltock Place, London, GB
        name:
          description: Name of the recipient Bank
          type: string
          example: ACME Bank
      required:
        - address
        - name
    BankingInternationalPayeeBankDetailsV1:
      properties:
        accountNumber:
          description: Account Targeted for payment
          type: string
          example: '12341234'
        bankAddress:
          $ref: >-
            #/components/schemas/BankingInternationalPayeeBankDetailsBankAddressV1
        beneficiaryBankBIC:
          description: >-
            Swift bank code.  Aligns with standard [ISO
            9362](https://www.iso.org/standard/60390.html)
          type: string
          x-cds-type: ExternalRef
          example: ACMEAUSYHOM
        chipNumber:
          description: Number for the Clearing House Interbank Payments System
          type: string
          example: '12341234'
        country:
          description: >-
            Country of the recipient institution. A valid [ISO 3166
            Alpha-3](https://www.iso.org/iso-3166-country-codes.html) country
            code
          type: string
          x-cds-type: ExternalRef
          example: AUS
        fedWireNumber:
          description: Number for Fedwire payment (Federal Reserve Wire Network)
          type: string
          example: '12939281'
        legalEntityIdentifier:
          description: >-
            The legal entity identifier (LEI) for the beneficiary.  Aligns with
            [ISO 17442](https://www.iso.org/standard/59771.html)
          type: string
          x-cds-type: ExternalRef
          example: 549300TGFLH2QZV80T70
        routingNumber:
          description: International bank routing number
          type: string
          example: '18281828'
        sortCode:
          description: Sort code used for account identification in some jurisdictions
          type: string
          example: '01'
      required:
        - accountNumber
        - country
    BankingInternationalPayeeBeneficiaryDetailsV1:
      properties:
        country:
          description: >-
            Country where the beneficiary resides. A valid [ISO 3166
            Alpha-3](https://www.iso.org/iso-3166-country-codes.html) country
            code
          type: string
          x-cds-type: ExternalRef
          example: AUS
        message:
          description: Response message for the payment
          type: string
          example: Payment Received
        name:
          description: Name of the beneficiary
          type: string
          example: Woolie Jumpers International
      required:
        - country
    BankingInternationalPayeeV1:
      description: >-
        International Payee details. Present if `uType` is set to
        `international`
      properties:
        bankDetails:
          $ref: '#/components/schemas/BankingInternationalPayeeBankDetailsV1'
        beneficiaryDetails:
          $ref: '#/components/schemas/BankingInternationalPayeeBeneficiaryDetailsV1'
      required:
        - bankDetails
        - beneficiaryDetails
      type: object
    EnumBankingPayeeDigitalWalletTypeV1:
      description: |
        The identifier to use:
        - **EMAIL**: An email address
        - **CONTACT_NAME**: Contact name
        - **TELEPHONE**: Telephone number
      enum:
        - EMAIL
        - CONTACT_NAME
        - TELEPHONE
      type: string
      example: EMAIL
    EnumBankingPayeeDigitalWalletProviderV1:
      description: >-
        The provider of the digital wallet service. PAYPAL_AU for PayPal, OTHER
        for other service provider.
      enum:
        - PAYPAL_AU
        - OTHER
      type: string
      example: OTHER
    BankingDigitalWalletPayeeV1:
      properties:
        name:
          description: >-
            The display name of the wallet as given by the customer, else a
            default value defined by the data holder
          type: string
          example: My Digital Wallet
        identifier:
          description: The identifier of the digital wallet (dependent on type)
          type: string
          example: user@digital.wallet.com
        type:
          $ref: '#/components/schemas/EnumBankingPayeeDigitalWalletTypeV1'
        provider:
          $ref: '#/components/schemas/EnumBankingPayeeDigitalWalletProviderV1'
      required:
        - name
        - identifier
        - type
        - provider
      type: object
    AdapterPayeeV2:
      properties:
        id:
          description: ID of the payee adhering to the rules of ID permanence
          type: string
          example: 9c13b416c0eea9b8e11643842bbfe4342e49c22c2e62c4eb9fc812b6a6a70aba
        creationDate:
          description: The date the payee was created by the customer
          type: string
          format: date
        description:
          description: A description of the payee provided by the customer
          type: string
        nickname:
          description: The short display name of the payee as provided by the customer
          type: string
          example: Jeff Johnson
        payeeType:
          description: Type of object included that describes the payee in detail
          enum:
            - DOMESTIC
            - BPAY
            - INTERNATIONAL
            - DIGITAL_WALLET
          type: string
          example: DOMESTIC
        bpay:
          $ref: '#/components/schemas/BankingBillerPayeeV1'
        domestic:
          $ref: '#/components/schemas/BankingDomesticPayeeV1'
        international:
          $ref: '#/components/schemas/BankingInternationalPayeeV1'
        digitalWallet:
          $ref: '#/components/schemas/BankingDigitalWalletPayeeV1'
      required:
        - payeeType
        - id
        - nickname
      type: object
    ResponseListBankingPayees:
      oneOf:
        - $ref: '#/components/schemas/ResponseListBankingPayeesV0'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/ResponseListBankingPayeesV0'
    ResponseListBankingPaymentsV0:
      properties:
        version:
          type: string
          default: V0
        data:
          description: List of Payments matching the filter requirements
          items:
            $ref: '#/components/schemas/DioPaymentV1'
          type: array
      required:
        - data
      type: object
    ResponseListBankingPaymentsV1:
      properties:
        version:
          type: string
          default: V1
        data:
          description: List of Payments matching the filter requirements
          items:
            $ref: '#/components/schemas/DioPaymentV2'
          type: array
      required:
        - version
        - data
      type: object
    BankingAuthorisedEntityV1:
      properties:
        abn:
          description: Australian Business Number for the authorised entity
          type: string
          example: 54 624 797 655
        acn:
          description: Australian Company Number for the authorised entity
          type: string
          example: 624 797 655
        arbn:
          description: Australian Registered Body Number for the authorised entity
          type: string
          example: 000 000 123
        description:
          description: >-
            Description of the authorised entity derived from previously
            executed direct debits
          type: string
          example: Biza Pty Ltd
        financialInstitution:
          description: >-
            Name of the financial institution through which the direct debit
            will be executed. Is required unless the payment is made via a
            credit card scheme
          type: string
          example: ACME Bank
      type: object
      x-conditional:
        - financialInstitution
    DioPaymentDirectDebitV1:
      properties:
        authorisedEntity:
          $ref: '#/components/schemas/BankingAuthorisedEntityV1'
        lastDebitAmount:
          description: The amount of the last debit executed under this authorisation
          type: number
        lastDebitDateTime:
          description: >-
            The date and time of the last debit executed under this
            authorisation
          type: string
          format: date-time
      required:
        - authorisedEntity
      type: object
    BankingScheduledPaymentFromV1:
      description: >-
        Object containing details of the source of the payment. Currently only
        specifies an accountId but provided as an object to facilitate future
        extensibility and consistency with the to object
      properties:
        accountId:
          description: AccountID of the account that is the source of funds for the payment
          type: string
          example: jdnmwucgrchzngrqieryhiovpvzknokkwsediggdlnxgxizegvwpwfflgavkrbay
      required:
        - accountId
      type: object
    BankingScheduledPaymentToV1:
      description: >-
        Object containing details of the destination of the payment. Used to
        specify a variety of payment destination types
      properties:
        accountId:
          description: >-
            Present if toUType is set to accountId. Indicates that the payment
            is to another account that is accessible under the current consent
          type: string
          example: jdnmwucgrchzngrqieryhiovpvzknokkwsediggdlnxgxizegvwpwfflgavkrbay
        biller:
          $ref: '#/components/schemas/BankingBillerPayeeV1'
        domestic:
          $ref: '#/components/schemas/BankingDomesticPayeeV1'
        international:
          $ref: '#/components/schemas/BankingInternationalPayeeV1'
        payeeId:
          description: >-
            Present if toUType is set to payeeId. Indicates that the payment is
            to registered payee that can be accessed using the payee endpoint.
            If the Bank Payees scope has not been consented to then a payeeId
            should not be provided and the full payee details should be provided
            instead
          type: string
          example: 8a0e108e03d1b05f049d4bd4f612e314517bb967fa907b76029e17b6f42d2131
        nickname:
          type: string
          description: >-
            The short display name of the payee as provided by the customer
            unless toUType is set to payeeId. Where a customer has not provided
            a nickname, a display name derived by the bank for payee should be
            provided that is consistent with existing digital banking channels
          example: John Doe
        payeeReference:
          type: string
          description: >-
            The reference for the transaction, if applicable, that will be
            provided by the originating institution for the specific payment. If
            not empty, it overrides the value provided at the
            BankingScheduledPayment level.
          example: Dinner Payback
        toUType:
          description: >-
            The type of object provided that specifies the destination of the
            funds for the payment.
          enum:
            - accountId
            - biller
            - domestic
            - international
            - payeeId
          type: string
          example: domestic
      required:
        - toUType
      type: object
      x-conditional:
        - accountId
        - payeeId
        - domestic
        - biller
        - international
        - nickname
        - payeeReference
    BankingScheduledPaymentSetV1:
      description: >-
        The set of payment amounts and destination accounts for this payment
        accommodating multi-part payments. A single entry indicates a simple
        payment with one destination account. Must have at least one entry
      properties:
        amount:
          description: >-
            The amount of the next payment if known. Mandatory unless the
            isAmountCalculated field is set to true. Must be zero or positive if
            present
          type: string
          x-cds-type: AmountString
          example: '151.33'
        currency:
          description: The currency for the payment. AUD assumed if not present
          type: string
          x-cds-type: CurrencyString
          pattern: \w{3}
        isAmountCalculated:
          description: >-
            Flag indicating whether the amount of the payment is calculated
            based on the context of the event. For instance a payment to reduce
            the balance of a credit card to zero. If absent then false is
            assumed
          type: boolean
          example: true
        to:
          $ref: '#/components/schemas/BankingScheduledPaymentToV1'
      required:
        - to
      x-conditional:
        - amount
    BankingScheduledPaymentRecurrenceEventBasedV1:
      description: >-
        Indicates that the schedule of payments is defined according to an
        external event that cannot be predetermined. Mandatory if
        recurrenceUType is set to eventBased
      properties:
        description:
          description: >-
            Description of the event and conditions that will result in the
            payment. Expected to be formatted for display to a customer
          type: string
          example: Overdraw Charge
      required:
        - description
      type: object
    BankingScheduledPaymentIntervalV1:
      properties:
        dayInInterval:
          description: >-
            Uses an interval to define the ordinal day within the interval
            defined by the interval field on which the payment occurs. If the
            resulting duration is 0 days in length or larger than the number of
            days in the interval then the payment will occur on the last day of
            the interval. A duration of 1 day indicates the first day of the
            interval. If absent the assumed value is P1D. Formatted according to
            [ISO 8601
            Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations)
            (excludes recurrence syntax) with components less than a day in
            length ignored. The first day of a week is considered to be Monday.
          type: string
          x-cds-type: DurationString
          example: P1D
        interval:
          description: >-
            An interval for the payment. Formatted according to [ISO 8601
            Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations) 
            (excludes recurrence syntax) with components less than a day in
            length ignored. This duration defines the period between payments
            starting with nextPaymentDate
          type: string
          x-cds-type: DurationString
          example: P5D
      required:
        - interval
      type: object
    EnumBankingNonBusinessDayTreatmentV1:
      description: >-
        Enumerated field giving the treatment where a scheduled payment date is
        not a business day. If absent assumed to be ON.<br/>**AFTER** - If a
        scheduled payment date is a non-business day the payment will be made on
        the first business day after the scheduled payment date.<br/>**BEFORE**
        - If a scheduled payment date is a non-business day the payment will be
        made on the first business day before the scheduled payment
        date.<br/>**ON** - If a scheduled payment date is a non-business day the
        payment will be made on that day regardless.<br/>**ONLY** - Payments
        only occur on business days. If a scheduled payment date is a
        non-business day the payment will be ignored
      enum:
        - AFTER
        - BEFORE
        - 'ON'
        - ONLY
      default: 'ON'
      type: string
      example: 'ON'
    BankingScheduledPaymentRecurrenceIntervalScheduleV1:
      description: >-
        Indicates that the schedule of payments is defined by a series of
        intervals. Mandatory if recurrenceUType is set to intervalSchedule
      properties:
        finalPaymentDate:
          description: >-
            The limit date after which no more payments should be made using
            this schedule. If both finalPaymentDate and paymentsRemaining are
            present then payments will stop according to the most constraining
            value. If neither field is present the payments will continue
            indefinitely
          type: string
          format: date
          x-cds-type: DateString
          example: '2023-05-01'
        intervals:
          description: >-
            An array of interval objects defining the payment schedule.  Each
            entry in the array is additive, in that it adds payments to the
            overall payment schedule.  If multiple intervals result in a payment
            on the same day then only one payment will be made. Must have at
            least one entry
          items:
            $ref: '#/components/schemas/BankingScheduledPaymentIntervalV1'
          type: array
        nonBusinessDayTreatment:
          $ref: '#/components/schemas/EnumBankingNonBusinessDayTreatmentV1'
        paymentsRemaining:
          description: >-
            Indicates the number of payments remaining in the schedule. If both
            finalPaymentDate and paymentsRemaining are present then payments
            will stop according to the most constraining value, If neither field
            is present the payments will continue indefinitely
          type: integer
          x-cds-type: PositiveInteger
          minimum: 1
          example: 1
      required:
        - intervals
      type: object
    EnumWeekDayV1:
      description: >-
        The weekDay specified. The payment will occur on the last occurrence of
        this weekday in the interval.
      enum:
        - FRI
        - MON
        - SAT
        - SUN
        - THU
        - TUE
        - WED
      type: string
      example: MON
    BankingScheduledPaymentRecurrenceLastWeekdayV1:
      description: >-
        Indicates that the schedule of payments is defined according to the last
        occurrence of a specific weekday in an interval. Mandatory if
        recurrenceUType is set to lastWeekDay
      properties:
        finalPaymentDate:
          description: >-
            The limit date after which no more payments should be made using
            this schedule. If both finalPaymentDate and paymentsRemaining are
            present then payments will stop according to the most constraining
            value. If neither field is present the payments will continue
            indefinitely
          type: string
          format: date
          x-cds-type: DateString
          example: '2023-05-01'
        interval:
          description: >-
            The interval for the payment. Formatted according to [ISO 8601
            Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations)
            (excludes recurrence syntax) with components less than a day in
            length ignored. This duration defines the period between payments
            starting with nextPaymentDate
          type: string
          x-cds-type: DurationString
          example: P1D
        lastWeekDay:
          $ref: '#/components/schemas/EnumWeekDayV1'
        nonBusinessDayTreatment:
          $ref: '#/components/schemas/EnumBankingNonBusinessDayTreatmentV1'
        paymentsRemaining:
          description: >-
            Indicates the number of payments remaining in the schedule. If both
            finalPaymentDate and paymentsRemaining are present then payments
            will stop according to the most constraining value. If neither field
            is present the payments will continue indefinitely
          type: integer
          x-cds-type: PositiveInteger
          minimum: 1
          example: 1
      required:
        - interval
        - lastWeekDay
      type: object
    BankingScheduledPaymentRecurrenceOnceOffV1:
      description: >-
        Indicates that the payment is a once off payment on a specific future
        date. Mandatory if recurrenceUType is set to onceOff
      properties:
        paymentDate:
          description: The scheduled date for the once off payment
          type: string
          format: date
          x-cds-type: DateString
          example: '2022-08-11'
      required:
        - paymentDate
      type: object
    BankingScheduledPaymentRecurrenceV1:
      description: Object containing the detail of the schedule for the payment
      properties:
        eventBased:
          $ref: '#/components/schemas/BankingScheduledPaymentRecurrenceEventBasedV1'
        intervalSchedule:
          $ref: >-
            #/components/schemas/BankingScheduledPaymentRecurrenceIntervalScheduleV1
        lastWeekDay:
          $ref: '#/components/schemas/BankingScheduledPaymentRecurrenceLastWeekdayV1'
        nextPaymentDate:
          description: The date of the next payment under the recurrence schedule
          type: string
          format: date
          x-cds-type: DateString
          example: '2022-09-13'
        onceOff:
          $ref: '#/components/schemas/BankingScheduledPaymentRecurrenceOnceOffV1'
        recurrenceUType:
          description: The type of recurrence used to define the schedule
          enum:
            - eventBased
            - intervalSchedule
            - lastWeekDay
            - onceOff
          type: string
          example: intervalSchedule
      required:
        - recurrenceUType
      type: object
      x-conditional:
        - onceOff
        - intervalSchedule
        - lastWeekDay
        - eventBased
    DioPaymentScheduledPaymentV1:
      properties:
        from:
          $ref: '#/components/schemas/BankingScheduledPaymentFromV1'
        nickname:
          description: The short display name of the payee as provided by the customer
          type: string
        payeeReference:
          description: >-
            The reference for the transaction that will be provided by the
            originating institution. Empty string if no data provided
          type: string
          example: Payment for Football Membership
        payerReference:
          description: >-
            The reference for the transaction that will be used by the
            originating institution for the purposes of constructing a statement
            narrative on the payer’s account. Empty string if no data provided
          type: string
          example: Payment for Football Membership
        paymentSet:
          items:
            $ref: '#/components/schemas/BankingScheduledPaymentSetV1'
          type: array
        recurrence:
          $ref: '#/components/schemas/BankingScheduledPaymentRecurrenceV1'
        status:
          description: >-
            Indicates whether the schedule is currently active. The value SKIP
            is equivalent to ACTIVE except that the customer has requested the
            next normal occurrence to be skipped.
          enum:
            - ACTIVE
            - SKIP
            - INACTIVE
          example: ACTIVE
          type: string
      required:
        - from
        - payeeReference
        - payerReference
        - paymentSet
        - recurrence
        - status
      type: object
    DioPaymentV1:
      properties:
        id:
          description: Payment Identifier
          type: string
          example: 93612111d3c4a52a54c97cf0177542ff317f779ea675db01c9b172ed40f8fdf9
        accountId:
          description: Account Identifier
          type: string
          maxLength: 255
          example: jdnmwucgrchzngrqieryhiovpvzknokkwsediggdlnxgxizegvwpwfflgavkrbay
        paymentType:
          description: Payment Type
          enum:
            - DIRECT_DEBIT
            - SCHEDULED_PAYMENT
          type: string
          example: DIRECT_DEBIT
        directDebit:
          $ref: '#/components/schemas/DioPaymentDirectDebitV1'
        scheduledPayment:
          $ref: '#/components/schemas/DioPaymentScheduledPaymentV1'
      required:
        - id
        - accountId
        - paymentType
      type: object
    BankingScheduledPaymentToV2:
      description: >-
        Object containing details of the destination of the payment. Used to
        specify a variety of payment destination types
      properties:
        accountId:
          description: >-
            Present if toUType is set to accountId. Indicates that the payment
            is to another account that is accessible under the current consent
          type: string
          example: jdnmwucgrchzngrqieryhiovpvzknokkwsediggdlnxgxizegvwpwfflgavkrbay
        biller:
          $ref: '#/components/schemas/BankingBillerPayeeV1'
        digitalWallet:
          $ref: '#/components/schemas/BankingDigitalWalletPayeeV1'
        domestic:
          $ref: '#/components/schemas/BankingDomesticPayeeV1'
        international:
          $ref: '#/components/schemas/BankingInternationalPayeeV1'
        payeeId:
          description: >-
            Present if toUType is set to payeeId. Indicates that the payment is
            to registered payee that can be accessed using the payee endpoint.
            If the Bank Payees scope has not been consented to then a payeeId
            should not be provided and the full payee details should be provided
            instead
          type: string
          example: 8a0e108e03d1b05f049d4bd4f612e314517bb967fa907b76029e17b6f42d2131
        nickname:
          type: string
          description: >-
            The short display name of the payee as provided by the customer
            unless toUType is set to payeeId. Where a customer has not provided
            a nickname, a display name derived by the bank for payee should be
            provided that is consistent with existing digital banking channels
          example: John Doe
        payeeReference:
          type: string
          description: >-
            The reference for the transaction, if applicable, that will be
            provided by the originating institution for the specific payment. If
            not empty, it overrides the value provided at the
            BankingScheduledPayment level.
          example: Dinner Payback
        toUType:
          description: >-
            The type of object provided that specifies the destination of the
            funds for the payment.
          enum:
            - accountId
            - biller
            - digitalWallet
            - domestic
            - international
            - payeeId
          type: string
          example: domestic
      required:
        - toUType
      type: object
      x-conditional:
        - accountId
        - payeeId
        - digitalWallet
        - domestic
        - biller
        - international
        - nickname
        - payeeReference
    BankingScheduledPaymentSetV2:
      description: >-
        The set of payment amounts and destination accounts for this payment
        accommodating multi-part payments. A single entry indicates a simple
        payment with one destination account. Must have at least one entry
      properties:
        amount:
          description: >-
            The amount of the next payment if known. Mandatory unless the
            isAmountCalculated field is set to true. Must be zero or positive if
            present
          type: string
          x-cds-type: AmountString
          example: '151.33'
        currency:
          description: The currency for the payment. AUD assumed if not present
          type: string
          x-cds-type: CurrencyString
          pattern: \w{3}
        isAmountCalculated:
          description: >-
            Flag indicating whether the amount of the payment is calculated
            based on the context of the event. For instance a payment to reduce
            the balance of a credit card to zero. If absent then false is
            assumed
          type: boolean
          example: true
        to:
          $ref: '#/components/schemas/BankingScheduledPaymentToV2'
      required:
        - to
      x-conditional:
        - amount
    DioPaymentScheduledPaymentV2:
      properties:
        from:
          $ref: '#/components/schemas/BankingScheduledPaymentFromV1'
        nickname:
          description: The short display name of the payee as provided by the customer
          type: string
        payeeReference:
          description: >-
            The reference for the transaction that will be provided by the
            originating institution. Empty string if no data provided
          type: string
          example: Payment for Football Membership
        payerReference:
          description: >-
            The reference for the transaction that will be used by the
            originating institution for the purposes of constructing a statement
            narrative on the payer’s account. Empty string if no data provided
          type: string
          example: Payment for Football Membership
        paymentSet:
          items:
            $ref: '#/components/schemas/BankingScheduledPaymentSetV2'
          type: array
        recurrence:
          $ref: '#/components/schemas/BankingScheduledPaymentRecurrenceV1'
        status:
          description: >-
            Indicates whether the schedule is currently active. The value SKIP
            is equivalent to ACTIVE except that the customer has requested the
            next normal occurrence to be skipped.
          enum:
            - ACTIVE
            - SKIP
            - INACTIVE
          example: ACTIVE
          type: string
      required:
        - from
        - payeeReference
        - payerReference
        - paymentSet
        - recurrence
        - status
      type: object
    DioPaymentV2:
      properties:
        id:
          description: Payment Identifier
          type: string
          example: 93612111d3c4a52a54c97cf0177542ff317f779ea675db01c9b172ed40f8fdf9
        accountId:
          description: Account Identifier
          type: string
          maxLength: 255
          example: jdnmwucgrchzngrqieryhiovpvzknokkwsediggdlnxgxizegvwpwfflgavkrbay
        paymentType:
          description: Payment Type
          enum:
            - DIRECT_DEBIT
            - SCHEDULED_PAYMENT
          type: string
          example: DIRECT_DEBIT
        directDebit:
          $ref: '#/components/schemas/DioPaymentDirectDebitV1'
        scheduledPayment:
          $ref: '#/components/schemas/DioPaymentScheduledPaymentV2'
      required:
        - id
        - accountId
        - paymentType
      type: object
    ResponseListBankingPayments:
      oneOf:
        - $ref: '#/components/schemas/ResponseListBankingPaymentsV0'
        - $ref: '#/components/schemas/ResponseListBankingPaymentsV1'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/ResponseListBankingPaymentsV0'
          V1: '#/components/schemas/ResponseListBankingPaymentsV1'
    ResponseListBankingAccountsV0:
      properties:
        version:
          type: string
          default: V0
        data:
          description: List of Accounts matching the filter requirements
          items:
            $ref: '#/components/schemas/AdapterBankingAccountV2'
          type: array
      required:
        - data
      type: object
    ResponseListBankingAccountsV1:
      properties:
        version:
          type: string
          default: V1
        data:
          description: List of Accounts matching the filter requirements
          items:
            $ref: '#/components/schemas/AdapterBankingAccountV3'
          type: array
      required:
        - data
      type: object
    ResponseListBankingAccountsV2:
      properties:
        version:
          type: string
          default: V2
        data:
          description: List of Accounts matching the filter requirements
          items:
            $ref: '#/components/schemas/AdapterBankingAccountV4'
          type: array
      required:
        - data
      type: object
    EnumAdapterAccountRelationshipTypeV1:
      description: >-

        The relationship type being described for the account. This field will
        be made **MANDATORY** at a later date after deprecated fields are
        retired.


        The relationship types are broken down as follows:


        | Enum                              |
        Description                                                                                                                                                                                                                                                                                                        
        |

        |-----------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|

        | OWNER                             | Has ownership, either individually
        or with other equally privileged account
        holders                                                                                                                                                                                                                                
        |

        | SECONDARY_USER                    | Has secondary user access.
        **Note:** This does **not** imply a Secondary User Instruction has been
        provided only that the user is a candidate for such
        instruction                                                                                                                                                 
        |

        | SECONDARY_USER_PRIVATE            | Has secondary user access but it
        is not disclosed within the Consumer Dashboard. **Note:** The **only**
        way to provide Secondary User Instructions for this type is through HaaS
        Admin |

        | NOMINATED_REPRESENTATIVE          | Has been granted Nominated
        Representative
        privileges                                                                                                                                                                                                                                                               
        |
      type: string
      example: OWNER
      enum:
        - OWNER
        - SECONDARY_USER
        - SECONDARY_USER_PRIVATE
        - NOMINATED_REPRESENTATIVE
    AdapterAccountCustomerV2:
      properties:
        customerId:
          description: >-
            The customer identifier for the account, MUST be the same as
            principalId (see deprecation notice)

            **Deprecated:** Replaced by `principalId`
          type: string
          deprecated: true
        principalId:
          description: >-
            The Principal Identifier for the Account relationship.

            **Deprecated:** This should always be equal to the `principalId` in
            the List Banking Accounts path, therefore making this field
            redundant.
          type: string
          maxLength: 512
          deprecated: true
        userId:
          description: >-
            The User Identifier for the Account relationship. 

            **Note:** This **SHOULD** be supplied, even if it is the same value
            as `principalId`. This field will be made mandatory at a later date
            however, if omitted, `userId` is currently assumed to be the same as
            `principalId`.
          type: string
          maxLength: 512
        owner:
          description: >-
            Owner of the account, used to set the isOwned flag in CDR
            responses. 

            **Deprecated:** Replaced by `relationship`
          type: boolean
          default: false
          deprecated: true
        relationship:
          $ref: '#/components/schemas/EnumAdapterAccountRelationshipTypeV1'
        vulnerable:
          description: >-
            Used to flag if the customer is deemed vulnerable by the data
            holder. Has implications for the consent dashboard and joint account
            notifications.

            **Note:** Required if the Adapter is authoritative for the
            `Vulnerability Status` truth cluster.
          type: boolean
      type: object
    EnumBankingProductCategoryV1:
      description: >+

        The productCategory enumeration provides the values for categorising
        products and accounts. These are explained in the following tables:


        **Deposit Products**


        | Enum | Description

        |------|------------|

        | TRANS_AND_SAVINGS_ACCOUNTS | This grouping of products includes all
        accounts where cash is deposited in the account and is accessible to the
        customer when they choose. These are given many names on the market
        including Cash Accounts, Saving Accounts, Transaction Accounts, Current
        Accounts, Cheque Accounts, Passbook Accounts, etc... |

        | TERM_DEPOSITS              | This grouping of products includes all
        accounts where cash is deposited in the account for a set time period
        with restrictions on when funds can be withdrawn. Includes traditional
        Term Deposits and specialised deposits with either fixed terms or notice
        periods for withdrawal of funds. |

        | TRAVEL_CARDS               | This grouping of products includes
        prepaid cards with multi-currency capabilities.|

        | REGULATED_TRUST_ACCOUNTS   | This grouping of products includes
        accounts were funds are held in trust in regulated industries with
        complex rules embedded on how the products must operate. Industries that
        require this sort of product include real estate agents, solicitors and
        conveyancers. |


        **Lending Products**


        |Enum|Description|

        |----|-----------|

        |BUSINESS_LOANS|This grouping of products incorporates all types of
        lending for business purpose that is not a trade finance facility,
        lease, overdraft, residential mortgage, credit card or margin lending.
        It includes traditional term loans, bank guarantees and commercial
        bills. This category would incorporate both secured and unsecured
        business purpose lending including all business purpose equipment
        finance that is not covered by a lease.|

        |CRED_AND_CHRG_CARDS|This grouping of products includes all lending
        products that are issued for the purpose of allowing a flexible line of
        credit accessed through use of a card. These may be called various names
        including Credit Cards, Charge Cards and Store Cards.|

        |LEASES|This grouping of products will include all types of leases
        including Financial Lease, Operating Lease, Sale and leaseback, etc...|

        |MARGIN_LOANS|This grouping of products includes all types of margin
        loans which let you borrow money to invest in traded assets including
        shares & commodities or in managed funds.|

        |OVERDRAFTS|This grouping of products includes all types of lending
        which allows for the loan amount to be withdrawn, repaid, and redrawn
        again in any manner and any number of times, until the arrangement
        expires. These loans may be secured or unsecured, and generally don’t
        have set / minimum repayment requirements.|

        |PERS_LOANS|This grouping of products includes all lending for personal
        purposes that is not a residential mortgage, credit card or margin
        lending. These loans may be unsecured loans and term loans for purchase
        assets used as security such as motor vehicles. These may be called
        various names including Personal Loans and Car Loans.|

        |RESIDENTIAL_MORTGAGES|This grouping of products includes all lending
        products that are available for the primary purpose of borrowing for the
        purpose of purchasing or renovating residential property, where a
        residential property will be used as security. This group will include
        both fixed, variable & secured overdraft types of product and may
        include both owner-occupied and investment purpose borrowing.|

        |TRADE_FINANCE | This grouping of products includes specialised lending
        products specifically designed to facilitate domestic & international
        trade. This includes the issuance of letters of credit, factoring,
        export credit.

      enum:
        - BUSINESS_LOANS
        - CRED_AND_CHRG_CARDS
        - LEASES
        - MARGIN_LOANS
        - OVERDRAFTS
        - PERS_LOANS
        - REGULATED_TRUST_ACCOUNTS
        - RESIDENTIAL_MORTGAGES
        - TERM_DEPOSITS
        - TRADE_FINANCE
        - TRANS_AND_SAVINGS_ACCOUNTS
        - TRAVEL_CARDS
      type: string
      example: TRANS_AND_SAVINGS_ACCOUNTS
    EnumAccountOpenStatusV1:
      default: OPEN
      description: >-
        Open or closed status for the account. If not present then OPEN is
        assumed
      enum:
        - CLOSED
        - OPEN
      type: string
      example: OPEN
    DioAccountBalanceV1:
      properties:
        currentBalance:
          description: Current Balance for this account and currency
          type: number
          example: 16.88
        availableBalance:
          description: Available Balance for this account and currency
          type: number
          minimum: 0
          example: 11.45
        creditLimit:
          description: Maximum Amount of Credit Available for this currency
          type: number
          minimum: 0
        amortisedLimit:
          description: Available amortised limit for this account and currency
          type: number
          minimum: 0
        currency:
          description: Three character currency code for this balance
          type: string
          pattern: ^\w{3}$
      type: object
      required:
        - currentBalance
        - availableBalance
    EnumCommonStateV1:
      description: >-
        State in which the address belongs. Valid enumeration defined by
        Australia Post PAF code file [State Type
        Abbreviation](https://auspost.com.au/content/dam/auspost_corp/media/documents/australia-post-data-guide.pdf).
        NSW, QLD, VIC, NT, WA, SA, TAS, ACT, AAT
      enum:
        - AAT
        - ACT
        - NSW
        - NT
        - QLD
        - SA
        - TAS
        - VIC
        - WA
      type: string
      example: NSW
    CommonPAFAddressV1:
      description: >-
        Australian address formatted according to the file format defined by the
        [PAF file
        format](https://auspost.com.au/content/dam/auspost_corp/media/documents/australia-post-data-guide.pdf).
        Required if addressUType is set to paf
      properties:
        buildingName1:
          description: Building/Property name 1
          type: string
          example: CAPITAL HOUSE
        buildingName2:
          description: Building/Property name 2
          type: string
          example: WE WORK
        dpid:
          description: >-
            Unique identifier for an address as defined by Australia Post. Also
            known as Delivery Point Identifier
          type: string
          example: '34567890'
        flatUnitNumber:
          description: Unit number (including suffix, if applicable)
          type: string
          example: 2A
        flatUnitType:
          description: Type of flat or unit for the address
          type: string
          example: U
        floorLevelNumber:
          description: Floor or level number (including alpha characters)
          type: string
          example: '2'
        floorLevelType:
          description: Type of floor or level for the address
          type: string
          example: FL
        localityName:
          description: Full name of locality
          type: string
          example: RICHMOND
        lotNumber:
          description: Allotment number for the address
          type: string
          example: '20'
        postalDeliveryNumber:
          description: Postal delivery number if the address is a postal delivery type
          minimum: 1
          type: integer
          x-cds-type: PositiveInteger
          example: 2
        postalDeliveryNumberPrefix:
          description: Postal delivery number prefix related to the postal delivery number
          type: string
          example: 'N'
        postalDeliveryNumberSuffix:
          description: Postal delivery number suffix related to the postal delivery number
          type: string
          example: A
        postalDeliveryType:
          description: >-
            Postal delivery type. (eg. PO BOX). Valid enumeration defined by
            Australia Post PAF code file
          type: string
          example: PO BOX
        postcode:
          description: Postcode for the locality
          type: string
          example: '3024'
        state:
          $ref: '#/components/schemas/EnumCommonStateV1'
        streetName:
          description: The name of the street
          type: string
          example: SMITH
        streetSuffix:
          description: >-
            The street type suffix. Valid enumeration defined by Australia Post
            PAF code file
          type: string
          example: W
        streetType:
          description: >-
            The street type. Valid enumeration defined by Australia Post PAF
            code file
          type: string
          example: ST
        thoroughfareNumber1:
          description: >-
            Thoroughfare number for a property (first number in a property
            ranged address)
          type: integer
          x-cds-type: PositiveInteger
          minimum: 1
          example: 23
        thoroughfareNumber1Suffix:
          description: >-
            Suffix for the thoroughfare number. Only relevant if
            thoroughfareNumber1 is populated
          type: string
          example: A
        thoroughfareNumber2:
          description: >-
            Second thoroughfare number (only used if the property has a ranged
            address eg 23-25)
          type: integer
          x-cds-type: PositiveInteger
          example: 25
          minimum: 1
        thoroughfareNumber2Suffix:
          description: >-
            Suffix for the second thoroughfare number. Only relevant if
            thoroughfareNumber2 is populated
          type: string
          example: B
      required:
        - localityName
        - postcode
        - state
      type: object
    CommonSimpleAddressV1:
      description: Required if addressUType is set to simple
      properties:
        addressLine1:
          description: First line of the standard address object
          type: string
          example: 55 McDonald Avenue
        addressLine2:
          description: Second line of the standard address object
          type: string
        addressLine3:
          description: Third line of the standard address object
          type: string
        city:
          description: Name of the city or locality
          type: string
          example: Maryville
        country:
          default: AUS
          description: >-
            A valid [ISO 3166
            Alpha-3](https://www.iso.org/iso-3166-country-codes.html) country
            code. Australia (AUS) is assumed if country is not present.
          type: string
          x-cds-type: ExternalRef
        mailingName:
          description: >-
            Name of the individual or business formatted for inclusion in an
            address used for physical mail
          type: string
        postcode:
          description: Mandatory for Australian addresses
          type: string
          example: '2293'
        state:
          description: >-
            Free text if the country is not Australia. If country is Australia
            then must be one of the values defined by the [State Type
            Abbreviation](https://auspost.com.au/content/dam/auspost_corp/media/documents/australia-post-data-guide.pdf)
            in the PAF file format. NSW, QLD, VIC, NT, WA, SA, TAS, ACT, AAT
          type: string
          example: NSW
      required:
        - addressLine1
        - city
        - state
      type: object
      x-conditional:
        - postcode
    CommonPhysicalAddressV1:
      properties:
        addressUType:
          description: The type of address object present
          enum:
            - paf
            - simple
          type: string
          example: simple
        paf:
          $ref: '#/components/schemas/CommonPAFAddressV1'
        simple:
          $ref: '#/components/schemas/CommonSimpleAddressV1'
      required:
        - addressUType
      type: object
      x-conditional:
        - simple
        - paf
    EnumBankingProductFeatureTypeV2:
      description: >
        Each Product or Account has a set of Product Features. These are
        explained in a table as follows:


        | Value                           |
        Description                                                                                                                                                                                                                                
        | Use of `additionalValue`
        Field                                                                                      

        |---------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------|

        | ADDITIONAL_CARDS                | Additional cards can be
        requested                                                                                                                                                                                                          
        | The maximum number of additional cards.  If no maximum then should be
        set to null                                   |

        | BALANCE_TRANSFERS               | Balance transfers can be made to the
        account (eg. for credit
        cards)                                                                                                                                                                        
        |
        NA                                                                                                                 
        |

        | BILL_PAYMENT                    | The product can be attached to an
        automatic budgeting and bill payment
        service                                                                                                                                                             
        | Optional name of the
        service                                                                                       
        |

        | BONUS_REWARDS                   | Bonus loyalty rewards points are
        available                                                                                                                                                                                                 
        | Number of points
        available                                                                                         
        |

        | CARD_ACCESS                     | A card is available for the product
        to access
        funds                                                                                                                                                                                        
        | Text describing list of card types that this product can be linked
        to                                               |

        | CASHBACK_OFFER                  | Subject to terms, conditions and
        eligibility criteria, the product has a cashback offer for opening an
        account or by spending at a certain
        retailer.                                                                                       
        | The amount of the cashback offer (in
        AUD)                                                                          
        |

        | COMPLEMENTARY_PRODUCT_DISCOUNTS | Indicates that complementary,
        discounted offerings (such as gift cards, or discounted travel) is
        available                                                                                                                                 
        | Description of the complementary
        offering                                                                          
        |

        | DIGITAL_BANKING                 | Access is available to online
        banking features for the
        product                                                                                                                                                                             
        |
        NA                                                                                                                 
        |

        | DIGITAL_WALLET                  | A Digital wallet can be attached to
        the
        product                                                                                                                                                                                            
        | The name or brand of the
        wallet                                                                                    
        |

        | DONATE_INTEREST                 | Indicates that interest generated
        from the product can be automatically donated to a charity or community
        group                                                                                                                            
        |
        NA                                                                                                                 
        |

        | EXTRA_REPAYMENTS                | Indicates that the product has the
        option to accept extra repayments without incurring additional charges
        (for example Buy Now, Pay Later (BNPL) or line of credit products may
        offer the facility to repay instalments on an adhoc basis). |
        NA                                                                                                                 
        |

        | FRAUD_PROTECTION                | The product includes fraud
        protection
        features.                                                                                                                                                                                            
        |
        NA                                                                                                                 
        |

        | FREE_TXNS                       | A set number of free transactions
        available per
        month                                                                                                                                                                                      
        | The number of free
        transactions                                                                                    
        |

        | FREE_TXNS_ALLOWANCE             | A set amount of transaction fee
        value that is discounted per
        month                                                                                                                                                                         
        | The amount of transaction fee discounted (in
        AUD)                                                                   |

        | GUARANTOR                       | Subject to terms and conditions, the
        customer may be able to nominate a guarantor during the origination
        process.                                                                                                                          
        |
        NA                                                                                                                 
        |

        | INSURANCE                       | Insurance is provided as an
        additional feature of the
        product                                                                                                                                                                              
        | Text description of the type of insurance (e.g. Travel
        Insurance)                                                   |

        | INSTALMENT_PLAN                 | The product has the option to pay
        for eligible purchases over time with a set number of
        payments.                                                                                                                                          
        |
        NA                                                                                                                 
        |

        | INTEREST_FREE                   | Interest free period for
        purchases                                                                                                                                                                                                         
        | Interest free period. Formatted according to [ISO 8601
        Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations) |

        | INTEREST_FREE_TRANSFERS         | Interest free period for balance
        transfers                                                                                                                                                                                                 
        | Interest free period. Formatted according to [ISO 8601
        Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations) |

        | LOYALTY_PROGRAM                 | A points based loyalty program is
        available                                                                                                                                                                                                
        | Name of the loyalty
        program                                                                                        
        |

        | NOTIFICATIONS                   | Advanced notifications are available
        for the
        product                                                                                                                                                                                       
        | Description of the notification
        capability                                                                         
        |

        | NPP_ENABLED                     | An account of this product type can
        be used to receive funds as a result of a BSB/Number based NPP
        payment                                                                                                                                 
        |
        NA                                                                                                                 
        |

        | NPP_PAYID                       | An account of this product type can
        be used as the target of an NPP
        PayID                                                                                                                                                                  
        |
        NA                                                                                                                 
        |

        | OFFSET                          | An offset account can be connected
        to the
        product                                                                                                                                                                                          
        |
        NA                                                                                                                 
        |

        | OTHER                           | Another feature that can not be
        included in any of the other categories.  The additionalInfo field is
        mandatory for this
        type                                                                                                              
        |
        NA                                                                                                                 
        |

        | OVERDRAFT                       | An overdraft can be applied
        for                                                                                                                                                                                                            
        |
        NA                                                                                                                 
        |

        | REDRAW                          | Redraw of repaid principal above
        minimum required is
        available                                                                                                                                                                             
        |
        NA                                                                                                                 
        |

        | RELATIONSHIP_MANAGEMENT         | Relationship management is available
        for eligible
        customers.                                                                                                                                                                               
        |
        NA                                                                                                                 
        |

        | UNLIMITED_TXNS                  | Unlimited free transactions
        available                                                                                                                                                                                                      
        |
        NA                                                                                                                 
        |
      enum:
        - ADDITIONAL_CARDS
        - BALANCE_TRANSFERS
        - BILL_PAYMENT
        - BONUS_REWARDS
        - CASHBACK_OFFER
        - CARD_ACCESS
        - COMPLEMENTARY_PRODUCT_DISCOUNTS
        - DIGITAL_BANKING
        - DIGITAL_WALLET
        - DONATE_INTEREST
        - EXTRA_REPAYMENTS
        - FRAUD_PROTECTION
        - FREE_TXNS
        - FREE_TXNS_ALLOWANCE
        - GUARANTOR
        - INSTALMENT_PLAN
        - INSURANCE
        - INTEREST_FREE
        - INTEREST_FREE_TRANSFERS
        - LOYALTY_PROGRAM
        - NOTIFICATIONS
        - NPP_ENABLED
        - NPP_PAYID
        - OFFSET
        - OTHER
        - OVERDRAFT
        - REDRAW
        - RELATIONSHIP_MANAGEMENT
        - UNLIMITED_TXNS
      type: string
      example: CARD_ACCESS
    BankingProductFeatureWithActivatedV2:
      properties:
        additionalInfo:
          description: >-
            Display text providing more information on the feature. Mandatory if
            the [feature
            type](https://consumerdatastandardsaustralia.github.io/standards/#tocSproductfeaturetypedoc)
            is set to OTHER
          type: string
          example: Additional Feature Information
        additionalInfoUri:
          description: Link to a web page with more information on this feature
          type: string
          format: uri
          x-cds-type: URIString
        additionalValue:
          description: >-
            Generic field containing additional information relevant to the
            [featureType](https://consumerdatastandardsaustralia.github.io/standards/#tocSproductfeaturetypedoc)
            specified. Whether mandatory or not is dependent on the value of the
            [featureType.](https://consumerdatastandardsaustralia.github.io/standards/#tocSproductfeaturetypedoc)
          example: Type specific value, see docs
          type: string
        featureType:
          $ref: '#/components/schemas/EnumBankingProductFeatureTypeV2'
        isActivated:
          default: true
          description: >-
            True if the feature is already activated and false if the feature is
            available for activation. Defaults to true if absent. (note this is
            an additional field appended to the feature object defined in the
            Product Reference payload)
          type: boolean
      required:
        - featureType
      type: object
      x-conditional:
        - additionalValue
        - additionalInfo
    EnumBankingDepositRateTypeV1:
      description: >

        The type of rate (base, bonus, etc). These are explained in a table as
        follows:


        | Value | Description | Use of `additionalValue` Field

        |-------|-------------|-------------------------------|

        BONUS | A bonus rate available by meeting a specific criteria | A
        description of the criteria to obtain the bonus

        BUNDLE_BONUS | A bonus rate obtained by originating a bundle instead of
        a standalone product | The name of the bundle

        FIXED | Fixed rate for a period of time | The period of time fixed.
        Formatted according to ISO 8601 Durations

        VARIABLE | A variable base rate for the product | NA

        INTRODUCTORY | An introductory discount that will expire after a set
        period | The period of time for the introductory rate. Formatted
        according to ISO 8601 Durations

        DISCOUNT | A specific discount rate that may be applied. A discount rate
        reduces the interest payable | Description of the discount rate that is
        applicable

        PENALTY | A specific penalty rate that may be applied. A penalty rate
        increases the interest payable | Description of the penalty rate that is
        applicable

        FLOATING | A floating rate is relatively fixed but still adjusts under
        specific circumstances | Details of the float parameters

        MARKET_LINKED | A rate that is linked to a specific market, commodity or
        asset class | Details of the market linkage

        CASH_ADVANCE | Specific rate applied to cash advances from the account |
        NA

        PURCHASE | Specific rate applied to purchases from the account | NA

        BUNDLE_DISCOUNT_FIXED | A discount rate off the fixed rate obtained by
        originating a bundle instead of a standalone product | The name of the
        bundle

        BUNDLE_DISCOUNT_VARIABLE | A discount rate off the variable rate
        obtained by originating a bundle instead of a standalone product | The
        name of the bundle
      enum:
        - BONUS
        - BUNDLE_BONUS
        - FIXED
        - FLOATING
        - INTRODUCTORY
        - MARKET_LINKED
        - VARIABLE
      type: string
      example: FIXED
    BankingProductRateConditionV1:
      description: Defines a condition for the applicability of a tiered rate
      properties:
        additionalInfo:
          description: Display text providing more information on the condition
          type: string
          example: >-
            Package discount is assessed on the package lending balance when you
            apply for a package.
        additionalInfoUri:
          description: Link to a web page with more information on this condition
          type: string
          format: uri
          x-cds-type: URIString
          example: https://www.bank.com.au/home-loans/package.html
      type: object
    EnumBankingRateApplicationMethodV1:
      description: >-
        The method used to calculate the amount to be applied using one or more
        tiers. A single rate may be applied to the entire balance or each
        applicable tier rate is applied to the portion of the balance that falls
        into that tier (referred to as 'bands' or 'steps')
      enum:
        - PER_TIER
        - WHOLE_BALANCE
      type: string
      example: WHOLE_BALANCE
    EnumUnitOfMeasureV1:
      description: >-
        The unit of measure that applies to the minimumValue and maximumValue
        values e.g. a **DOLLAR** amount. **PERCENT** (in the case of
        loan-to-value ratio or LVR). Tier term period representing a discrete
        number of **MONTH**'s or **DAY**'s (in the case of term deposit tiers)
      enum:
        - DAY
        - DOLLAR
        - MONTH
        - PERCENT
      type: string
      example: DOLLAR
    BankingProductRateTierV3:
      description: Defines the criteria and conditions for which a rate applies
      properties:
        additionalInfo:
          description: Display text providing more information on the rate tier.
          type: string
        additionalInfoUri:
          description: Link to a web page with more information on this rate tier
          type: string
          format: uri
          x-cds-type: URIString
        applicabilityConditions:
          $ref: '#/components/schemas/BankingProductRateConditionV1'
        maximumValue:
          description: >-
            The number of unitOfMeasure units that form the upper bound of the
            tier or band. For a tier with a discrete value (as opposed to a
            range of values e.g. 1 month) this must be the same as minimumValue.
            Where this is the same as the minimumValue value of the next-higher
            tier the referenced tier should be exclusive of this value. For
            example a term deposit of 2 months falls into the upper tier of the
            following tiers: (1 – 2 months, 2 – 3 months). If absent the tier's
            range has no upper bound.
          type: number
        minimumValue:
          description: >-
            The number of unitOfMeasure units that form the lower bound of the
            tier. The tier should be inclusive of this value
          type: number
          example: 0.05
        name:
          description: A display name for the tier
          type: string
          example: Example Rate Tier
        rateApplicationMethod:
          $ref: '#/components/schemas/EnumBankingRateApplicationMethodV1'
        unitOfMeasure:
          $ref: '#/components/schemas/EnumUnitOfMeasureV1'
      required:
        - minimumValue
        - name
        - unitOfMeasure
      type: object
    DioBankingProductDepositRateV2:
      properties:
        additionalInfo:
          description: Display text providing more information on the rate
          type: string
          example: A great deposit rate
        additionalInfoUri:
          description: Link to a web page with more information on this rate
          type: string
          format: uri
        additionalValue:
          description: >-
            Generic field containing additional information relevant to the
            [depositRateType](#tocSproductdepositratetypedoc) specified. Whether
            mandatory or not is dependent on the value of
            [depositRateType](#tocSproductdepositratetypedoc)
          type: string
          example: Type specific value, see docs
        applicationFrequency:
          description: >-
            The period after which the calculated amount(s) (see
            calculationFrequency) are 'applied' (i.e. debited or credited) to
            the account. Formatted according to [ISO 8601
            Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations)
            (excludes recurrence syntax)
          type: string
          format: duration
          example: P30D
        calculationFrequency:
          description: >-
            The period after which the rate is applied to the balance to
            calculate the amount due for the period. Calculation of the amount
            is often daily (as balances may change) but accumulated until the
            total amount is 'applied' to the account (see applicationFrequency).
            Formatted according to [ISO 8601
            Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations)
            (excludes recurrence syntax)
          type: string
          format: duration
          example: P1D
        depositRateType:
          $ref: '#/components/schemas/EnumBankingDepositRateTypeV1'
        rate:
          description: The rate to be applied
          type: number
          minimum: -1
          maximum: 1
          example: 0.02
        tiers:
          description: Rate tiers applicable for this rate
          items:
            $ref: '#/components/schemas/BankingProductRateTierV3'
          type: array
      required:
        - depositRateType
        - rate
      type: object
      x-conditional:
        - additionalValue
    EnumBankingProductDiscountTypeV1:
      description: >

        Each Product or Account has a set of Discount Types types. These are
        explained in a table as follows:


        | Value | Description | Use of `additionalValue` Field

        |-------|-------------|-------------------------------|

        BALANCE | Discount on a fee for maintaining a set balance. As the
        discount applies to a fee the period is the same as for the fee | The
        minimum balance in AmountString format

        DEPOSITS | Discount for depositing a certain amount of money in a
        period. As the discount applies to a fee the period is the same as for
        the fee | The minimum deposit amount in AmountString format

        PAYMENTS | Discount for outbound payments from the account under a
        certain amount of money in a period. As the discount applies to a fee
        the period is the same as for the fee | The payment threshold amount in
        AmountString format

        FEE_CAP | The amount, balanceRate, transactionRate, accruedRate or
        feeRate fields of the discount represent the maximum amount charged in a
        time period | The time period for which the fee cap applies. Formatted
        according to ISO 8601 Durations

        ELIGIBILITY_ONLY | Discount applies based on customer eligibility
        (eligibility array must be populated) | N/A
      enum:
        - BALANCE
        - DEPOSITS
        - ELIGIBILITY_ONLY
        - FEE_CAP
        - PAYMENTS
      type: string
      example: BALANCE
    EnumBankingProductDiscountEligibilityTypeV1:
      description: >

        Each Product or Account has a set of Discount Eligibility Types types.
        These are explained in a table as follows:


        | Value | Description | Use of `additionalValue` Field

        |-------|-------------|-------------------------------|

        BUSINESS | A business or other non-person legal entity | NA

        PENSION_RECIPIENT | A recipient of a government pension may receive the
        discount | Optional. Should contain a description of which pensions
        qualify

        MIN_AGE | Only customers older than a minimum age receive the discount |
        The minimum age in years

        MAX_AGE | Only customers younger than a maximum age receive the discount
        | The maximum age in years

        MIN_INCOME | The customer must have an income greater than a specified
        threshold to obtain the discount | Minimum income in AmountString format

        MIN_TURNOVER | Only a business with greater than a minimum turnover is
        eligible | Minimum turnover in AmountString format

        STAFF | Only a staff member of the provider may receive the discount |
        NA

        STUDENT | Only students may receive the discount | Optional. Should
        contain a description of who qualifies as a student, e.g. do apprentices
        qualify?

        EMPLOYMENT_STATUS | An eligibility constraint based on employment status
        applies | A description of the status required

        RESIDENCY_STATUS | An eligibility constraint based on residency status
        applies | A description of the status required

        NATURAL_PERSON | The customer must be a natural person rather than
        another legal entity | NA

        INTRODUCTORY | The discount is only available during an introductory
        period | The period of time for the introductory discount. Formatted
        according to ISO 8601 Durations

        OTHER | Another eligibility criteria exists as described in the
        additionalInfo field (if this option is specified then the
        additionalInfo field is mandatory) | NA
      enum:
        - BUSINESS
        - EMPLOYMENT_STATUS
        - INTRODUCTORY
        - MAX_AGE
        - MIN_AGE
        - MIN_INCOME
        - MIN_TURNOVER
        - NATURAL_PERSON
        - OTHER
        - PENSION_RECIPIENT
        - RESIDENCY_STATUS
        - STAFF
        - STUDENT
      type: string
      example: BUSINESS
    BankingProductDiscountEligibilityV1:
      properties:
        additionalInfo:
          description: >-
            Display text providing more information on this eligibility
            constraint. Whether mandatory or not is dependent on the value of
            discountEligibilityType.
          type: string
          example: Eligibility criteria explanation
        additionalInfoUri:
          description: >-
            Link to a web page with more information on this eligibility
            constraint
          type: string
          format: uri
          x-cds-type: URIString
          example: https://www.acmebank.com.au/products/eligibility
        additionalValue:
          description: >-
            Generic field containing additional information relevant to the
            [discountEligibilityType](https://consumerdatastandardsaustralia.github.io/standards/#tocSproductdiscounteligibilitydoc)
            specified. Whether mandatory or not is dependent on the value of
            [discountEligibilityType](https://consumerdatastandardsaustralia.github.io/standards/#tocSproductdiscounteligibilitydoc)
          type: string
          example: Type specific value, see docs
        discountEligibilityType:
          $ref: '#/components/schemas/EnumBankingProductDiscountEligibilityTypeV1'
      required:
        - discountEligibilityType
      type: object
      x-conditional:
        - additionalInfo
        - additionalValue
    DioBankingProductDiscountV1:
      properties:
        accruedRate:
          description: >-
            A discount rate calculated based on a proportion of the calculated
            interest accrued on the account. Note that the currency of the fee
            discount is expected to be the same as the currency of the fee
            itself. One of amount, balanceRate, transactionRate, accruedRate and
            feeRate is mandatory. Unless noted in additionalInfo, assumes the
            application and calculation frequency are the same as the
            corresponding fee
          type: number
          minimum: -1
          maximum: 1
          example: 0.012
        additionalInfo:
          description: Display text providing more information on the discount
          type: string
          example: Discount Information
        additionalInfoUri:
          description: Link to a web page with more information on this discount
          type: string
          format: uri
        additionalValue:
          description: >-
            Generic field containing additional information relevant to the
            [discountType](#tocSproductdiscounttypedoc) specified. Whether
            mandatory or not is dependent on the value of
            [discountType](#tocSproductdiscounttypedoc)
          type: string
          example: Type specific value, see docs
        amount:
          description: >-
            Value of the discount. When following properties include one of
            amount, balanceRate, transactionRate, accruedRate and feeRate is
            mandatory
          type: number
          example: 29
        balanceRate:
          description: >-
            A discount rate calculated based on a proportion of the balance.
            Note that the currency of the fee discount is expected to be the
            same as the currency of the fee itself. One of amount, balanceRate,
            transactionRate, accruedRate and feeRate is mandatory. Unless noted
            in additionalInfo, assumes the application and calculation frequency
            are the same as the corresponding fee
          type: number
          minimum: -1
          maximum: 1
          example: 0.012
        description:
          description: Description of the discount
          type: string
          example: A discount applied to valued customers
        discountType:
          $ref: '#/components/schemas/EnumBankingProductDiscountTypeV1'
        eligibility:
          description: Eligibility constraints that apply to this discount
          items:
            $ref: '#/components/schemas/BankingProductDiscountEligibilityV1'
          type: array
        feeRate:
          description: >-
            A discount rate calculated based on a proportion of the fee to which
            this discount is attached. Note that the currency of the fee
            discount is expected to be the same as the currency of the fee
            itself. One of amount, balanceRate, transactionRate, accruedRate and
            feeRate is mandatory. Unless noted in additionalInfo, assumes the
            application and calculation frequency are the same as the
            corresponding fee
          type: number
          minimum: -1
          maximum: 1
          example: 0.012
        transactionRate:
          description: >-
            A discount rate calculated based on a proportion of a transaction.
            Note that the currency of the fee discount is expected to be the
            same as the currency of the fee itself. One of amount, balanceRate,
            transactionRate, accruedRate and feeRate is mandatory
          type: number
          minimum: -1
          maximum: 1
          example: 0.012
      required:
        - description
        - discountType
      type: object
    EnumBankingProductFeeTypeV1:
      description: >

        Each Product or Account has a set of Fee Types. These are explained in a
        table as follows:


        | Value | Description | Use of `additionalValue` Field

        |-------|-------------|-------------------------------|

        PERIODIC | A periodic fee such as a monthly account servicing fee | The
        period of charge. Formatted according to ISO 8601 Durations

        TRANSACTION | A fee associated with any transaction (incorporates
        WITHDRAWAL, DEPOSIT, PAYMENT and PURCHASE) | NA

        WITHDRAWAL | A fee associated with making a withdrawal | NA

        DEPOSIT | A fee associated with making a deposit | NA

        PAYMENT | A fee associated with making a payment | NA

        PURCHASE | A fee associated with making a purchase at a merchant | NA

        EVENT | A fee in relation to a particular event (e.g. ordering a new
        card, viewing a balance or stopping a cheque) | NA

        UPFRONT | A fee paid at the beginning of the product lifecycle, such as
        an establishment fee, loyalty program fee or application fee | NA

        EXIT | A fee for closing the product | NA

        VARIABLE | An at-cost fee that is relevant to a customer's circumstances
        where the amount or rate may not be known until negotiated with the
        customer | NA
      enum:
        - DEPOSIT
        - EVENT
        - EXIT
        - PAYMENT
        - PERIODIC
        - PURCHASE
        - TRANSACTION
        - UPFRONT
        - VARIABLE
        - WITHDRAWAL
      type: string
      example: EXIT
    DioBankingProductFeeV1:
      properties:
        accrualFrequency:
          description: >-
            The indicative frequency with which the fee is calculated on the
            account. Only applies if balanceRate or accruedRate is also present.
            Formatted according to [ISO 8601
            Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations)
            (excludes recurrence syntax)
          type: string
          format: duration
          example: P1D
        accruedRate:
          description: >-
            A fee rate calculated based on a proportion of the calculated
            interest accrued on the account. One of amount, balanceRate,
            transactionRate and accruedRate is mandatory
          type: number
          minimum: -1
          maximum: 1
          example: 0.02
        additionalInfo:
          description: Display text providing more information on the fee
          type: string
          example: Additional Fee Information
        additionalInfoUri:
          description: Link to a web page with more information on this fee
          type: string
          format: uri
        additionalValue:
          description: >-
            Generic field containing additional information relevant to the
            [feeType](#tocSproductfeetypedoc) specified. Whether mandatory or
            not is dependent on the value of [feeType](#tocSproductfeetypedoc)
          type: string
          example: Type specific value, see docs
        amount:
          description: >-
            The amount charged for the fee. One of amount, balanceRate,
            transactionRate and accruedRate is mandatory
          type: number
          example: 10.01
        balanceRate:
          description: >-
            A fee rate calculated based on a proportion of the balance. One of
            amount, balanceRate, transactionRate and accruedRate is mandatory
          type: number
          minimum: -1
          maximum: 1
          example: 0.023
        currency:
          description: The currency the fee will be charged in. Assumes AUD if absent
          type: string
          example: AUD
        discounts:
          description: An optional list of discounts to this fee that may be available
          items:
            $ref: '#/components/schemas/DioBankingProductDiscountV1'
          type: array
        feeType:
          $ref: '#/components/schemas/EnumBankingProductFeeTypeV1'
        name:
          description: Name of the fee
          type: string
          example: Fee Name
        transactionRate:
          description: >-
            A fee rate calculated based on a proportion of a transaction. One of
            amount, balanceRate, transactionRate and accruedRate is mandatory
          type: number
          minimum: -1
          maximum: 1
          example: 0.0023
      required:
        - feeType
        - name
      type: object
    EnumBankingInterestPaymentDueV1:
      description: >-
        When loan payments are due to be paid within each period. The investment
        benefit of earlier payments affect the rate that can be offered
      enum:
        - IN_ADVANCE
        - IN_ARREARS
      type: string
      example: IN_ARREARS
    EnumBankingLendingRateTypeV1:
      description: >

        The type of rate (base, bonus, etc). These are explained in a table as
        follows:


        | Value | Description | Use of `additionalValue` Field

        |-------|-------------|-------------------------------|

        FIXED | Fixed rate for a period of time | The period of time fixed.
        Formatted according to ISO 8601 Durations

        VARIABLE | A variable base rate for the product | NA

        INTRODUCTORY | An introductory discount that will expire after a set
        period | The period of time for the introductory rate. Formatted
        according to ISO 8601 Durations

        DISCOUNT | A specific discount rate that may be applied. A discount rate
        reduces the interest payable | Description of the discount rate that is
        applicable

        PENALTY | A specific penalty rate that may be applied. A penalty rate
        increases the interest payable | Description of the penalty rate that is
        applicable

        FLOATING | A floating rate is relatively fixed but still adjusts under
        specific circumstances | Details of the float parameters

        MARKET_LINKED | A rate that is linked to a specific market, commodity or
        asset class | Details of the market linkage

        CASH_ADVANCE | Specific rate applied to cash advances from the account |
        NA

        PURCHASE | Specific rate applied to purchases from the account | NA

        BUNDLE_DISCOUNT_FIXED | A discount rate off the fixed rate obtained by
        originating a bundle instead of a standalone product | The name of the
        bundle

        BUNDLE_DISCOUNT_VARIABLE | A discount rate off the variable rate
        obtained by originating a bundle instead of a standalone product | The
        name of the bundle
      enum:
        - BUNDLE_DISCOUNT_FIXED
        - BUNDLE_DISCOUNT_VARIABLE
        - CASH_ADVANCE
        - DISCOUNT
        - FIXED
        - FLOATING
        - INTRODUCTORY
        - MARKET_LINKED
        - PENALTY
        - PURCHASE
        - VARIABLE
      type: string
      example: FIXED
    EnumBankingLoanPurposeV1:
      description: >-
        The reason for taking out the loan. If absent, the lending rate is
        applicable to all loan purposes
      enum:
        - INVESTMENT
        - OWNER_OCCUPIED
      type: string
      example: OWNER_OCCUPIED
    EnumBankingProductLendingRateRepaymentTypeV1:
      description: >-
        Options in place for repayments. If absent, the lending rate is
        applicable to all repayment types
      enum:
        - INTEREST_ONLY
        - PRINCIPAL_AND_INTEREST
      type: string
      example: PRINCIPAL_AND_INTEREST
    DioBankingProductLendingRateV1:
      properties:
        additionalInfo:
          description: Display text providing more information on the rate.
          type: string
        additionalInfoUri:
          description: Link to a web page with more information on this rate
          type: string
          format: uri
        additionalValue:
          description: >-
            Generic field containing additional information relevant to the
            [lendingRateType](#tocSproductlendingratetypedoc) specified. Whether
            mandatory or not is dependent on the value of
            [lendingRateType](#tocSproductlendingratetypedoc)
          type: string
        applicationFrequency:
          description: >-
            The period after which the calculated amount(s) (see
            calculationFrequency) are 'applied' (i.e. debited or credited) to
            the account. Formatted according to [ISO 8601
            Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations)
            (excludes recurrence syntax)
          type: string
          format: duration
        calculationFrequency:
          description: >-
            The period after which the rate is applied to the balance to
            calculate the amount due for the period. Calculation of the amount
            is often daily (as balances may change) but accumulated until the
            total amount is 'applied' to the account (see applicationFrequency).
            Formatted according to [ISO 8601
            Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations)
            (excludes recurrence syntax)
          type: string
          format: duration
        comparisonRate:
          description: A comparison rate equivalent for this rate
          type: number
          minimum: -1
          maximum: 1
          example: 0.02
        interestPaymentDue:
          $ref: '#/components/schemas/EnumBankingInterestPaymentDueV1'
        lendingRateType:
          $ref: '#/components/schemas/EnumBankingLendingRateTypeV1'
        loanPurpose:
          $ref: '#/components/schemas/EnumBankingLoanPurposeV1'
        rate:
          description: The rate to be applied
          type: number
          minimum: -1
          maximum: 1
          example: 0.02
        repaymentType:
          $ref: '#/components/schemas/EnumBankingProductLendingRateRepaymentTypeV1'
        tiers:
          description: Rate tiers applicable for this rate
          items:
            $ref: '#/components/schemas/BankingProductRateTierV3'
          type: array
      required:
        - lendingRateType
        - rate
      type: object
    BankingCreditCardAccountV1:
      description: Mandatory if the _specificAccountUType_ value is `creditCard`.
      properties:
        minPaymentAmount:
          description: The minimum payment amount due for the next card payment
          type: string
          x-cds-type: AmountString
          example: '10.00'
        paymentCurrency:
          description: If absent assumes AUD
          type: string
          x-cds-type: CurrencyString
          example: AUD
          pattern: \w{3}
        paymentDueAmount:
          description: The amount due for the next card payment
          type: string
          x-cds-type: AmountString
          example: '10.00'
        paymentDueDate:
          description: Date that the next payment for the card is due
          type: string
          format: date
          x-cds-type: DateString
          example: '2022-05-01'
      required:
        - minPaymentAmount
        - paymentDueAmount
        - paymentDueDate
      type: object
    EnumBankingLoanAccountRepaymentTypeV1:
      description: >-
        Options in place for repayments. If absent defaults to
        PRINCIPAL_AND_INTEREST
      default: PRINCIPAL_AND_INTEREST
      enum:
        - INTEREST_ONLY
        - PRINCIPAL_AND_INTEREST
      type: string
      example: PRINCIPAL_AND_INTEREST
    BankingLoanAccountV2:
      properties:
        loanEndDate:
          description: Date that the loan is due to be repaid in full
          type: string
          format: date
          x-cds-type: DateString
          example: '2035-06-01'
        maxRedraw:
          description: >-
            Maximum amount of funds that can be redrawn. If not present redraw
            is not available even if the feature exists for the account
          type: string
          x-cds-type: AmountString
          example: '1000.00'
        maxRedrawCurrency:
          description: If absent assumes AUD
          type: string
          x-cds-type: CurrencyString
          pattern: \w{3}
          example: AUD
        minInstalmentAmount:
          description: Minimum amount of next instalment
          type: string
          x-cds-type: AmountString
          example: '122.22'
        minInstalmentCurrency:
          description: If absent assumes AUD
          type: string
          x-cds-type: CurrencyString
          example: AUD
          pattern: \w{3}
        minRedraw:
          description: Minimum redraw amount
          type: string
          x-cds-type: AmountString
          example: '500.00'
        minRedrawCurrency:
          description: If absent assumes AUD
          type: string
          x-cds-type: CurrencyString
          example: AUD
          pattern: \w{3}
        nextInstalmentDate:
          description: Next date that an instalment is required
          type: string
          format: date
          x-cds-type: DateString
          example: '2022-10-02'
        offsetAccountEnabled:
          description: >-
            Set to true if one or more offset accounts are configured for this
            loan account
          type: boolean
          example: false
        offsetAccountIds:
          description: >-
            The accountIDs of the configured offset accounts attached to this
            loan. Only offset accounts that can be accessed under the current
            authorisation should be included. It is expected behaviour that
            offsetAccountEnabled is set to true but the offsetAccountIds field
            is absent or empty. This represents a situation where an offset
            account exists but details can not be accessed under the current
            authorisation
          items:
            type: string
          type: array
        originalLoanAmount:
          description: Optional original loan value
          type: string
          x-cds-type: AmountString
          example: '526000.00'
        originalLoanCurrency:
          description: If absent assumes AUD
          type: string
          x-cds-type: CurrencyString
          pattern: \w{3}
          default: AUD
        originalStartDate:
          description: Optional original start date for the loan
          type: string
          format: date
          x-cds-type: DateString
          example: '2021-06-01'
        repaymentFrequency:
          description: >-
            The expected or required repayment frequency. Formatted according to
            [ISO 8601
            Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations)
            (excludes recurrence syntax)
          type: string
          x-cds-type: DurationString
          example: P1M
        repaymentType:
          $ref: '#/components/schemas/EnumBankingLoanAccountRepaymentTypeV1'
      type: object
    EnumBankingMaturityInstructionsV1:
      description: >-
        Current instructions on action to be taken at maturity. This includes
        default actions that may be specified in the terms and conditions for
        the product e.g. roll-over to the same term and frequency of interest
        payments.
      enum:
        - HOLD_ON_MATURITY
        - PAID_OUT_AT_MATURITY
        - ROLLED_OVER
      type: string
      example: PAID_OUT_AT_MATURITY
    BankingTermDepositAccountV1:
      properties:
        lodgementDate:
          description: The lodgement date of the original deposit
          type: string
          format: date
          x-cds-type: DateString
          example: '2022-01-01'
        maturityAmount:
          description: >-
            Amount to be paid upon maturity. If absent it implies the amount to
            paid is variable and cannot currently be calculated
          type: string
          x-cds-type: AmountString
        maturityCurrency:
          description: If absent assumes AUD
          type: string
          x-cds-type: CurrencyString
          pattern: \w{3}
        maturityDate:
          description: Maturity date for the term deposit
          type: string
          format: date
          x-cds-type: DateString
          example: '2024-01-01'
        maturityInstructions:
          $ref: '#/components/schemas/EnumBankingMaturityInstructionsV1'
      required:
        - lodgementDate
        - maturityDate
        - maturityInstructions
      type: object
    EnumAdapterJointAccountSharingStatusV1:
      description: >-
        Contains the CDR Data Sharing state for this account. 

        **Note:** This was originally required for the Disclosure Option Truth
        Cluster, which was not adopted by any customers and retired as a truth
        cluster. This field is now deprecated and will be removed in future
        versions.
      deprecated: true
      type: string
      example: PRE_APPROVAL
      enum:
        - PRE_APPROVAL
        - NON_DISCLOSURE
    AdapterBankingAccountV2:
      properties:
        id:
          description: A unique ID of the account
          type: string
          maxLength: 255
          example: 28d05b54b88d191b04fa44b47a0afa8b83a34c8987dc76d21cb2c36b907f265c
        internalId:
          description: Internal Account Identifier
          type: string
        accountCustomers:
          description: List of Account Customer entries
          type: array
          items:
            $ref: '#/components/schemas/AdapterAccountCustomerV2'
        productCategory:
          $ref: '#/components/schemas/EnumBankingProductCategoryV1'
        productName:
          description: The Product Name associated with the Account
          type: string
          example: ACME Savings Maximiser
        bundleName:
          description: >-
            Optional field to indicate if this account is part of a bundle that
            is providing additional benefit for to the customer
          type: string
          example: Great Bundle Savings
        creationDate:
          description: Date that the account was created (if known)
          type: string
          format: date
        displayName:
          description: >-
            The display name of the account as defined by the bank. This should
            not incorporate account numbers or PANs.
          type: string
          example: ACME Savings Account
        nickname:
          description: A customer supplied nick name for the account
          type: string
          example: Holiday Fund
        status:
          $ref: '#/components/schemas/EnumAccountOpenStatusV1'
        bsb:
          description: >-
            The BSB for the account.

            If a string is supplied and it is a valid integer it will be parsed
            and then zero padded on return.
          type: integer
          minimum: 1
          example: 999999
        accountNumber:
          description: >-
            The Account Number for the account. Note: As from 1.12.1, this field
            has changed from a Number to a String.  This change is backwards
            compatible and will currently accept a JSON number returned from the
            adapter but this  behaviour is now deprecated and will be removed in
            a future release.
          type: string
          example: '1231234'
        balances:
          description: Balances for this Account
          items:
            $ref: '#/components/schemas/DioAccountBalanceV1'
          type: array
        addresses:
          description: The addresses for the account to be used for correspondence
          items:
            $ref: '#/components/schemas/CommonPhysicalAddressV1'
          type: array
        features:
          description: >-
            Array of features of the account based on the equivalent structure
            in Product Reference with the following additional field
          items:
            $ref: '#/components/schemas/BankingProductFeatureWithActivatedV2'
          type: array
        depositRate:
          description: >-
            current rate to calculate interest earned being applied to deposit
            balances as it stands at the time of the API call
          type: number
          minimum: -1
          maximum: 1
          example: 0.02
        depositRates:
          description: >-
            Fully described deposit rates for this account based on the
            equivalent structure in Product Reference
          items:
            $ref: '#/components/schemas/DioBankingProductDepositRateV2'
          type: array
        fees:
          description: >-
            Fees and charges applicable to the account based on the equivalent
            structure in Product Reference
          items:
            $ref: '#/components/schemas/DioBankingProductFeeV1'
          type: array
        lendingRate:
          description: >-
            The current rate to calculate interest payable being applied to
            lending balances as it stands at the time of the API call
          type: number
          minimum: -1
          maximum: 1
          example: 0.02
        lendingRates:
          description: >-
            Fully described deposit rates for this account based on the
            equivalent structure in Product Reference
          items:
            $ref: '#/components/schemas/DioBankingProductLendingRateV1'
          type: array
        accountType:
          description: The type of structure to present account specific fields.
          enum:
            - TERM_DEPOSIT
            - CREDIT_CARD
            - LOAN
          type: string
          example: LOAN
        creditCard:
          $ref: '#/components/schemas/BankingCreditCardAccountV1'
        loan:
          $ref: '#/components/schemas/BankingLoanAccountV2'
        termDeposit:
          items:
            $ref: '#/components/schemas/BankingTermDepositAccountV1'
          type: array
        jointAccountSharingStatus:
          $ref: '#/components/schemas/EnumAdapterJointAccountSharingStatusV1'
      type: object
      required:
        - id
        - bsb
        - balances
        - accountNumber
        - displayName
        - productCategory
        - productName
    EnumBankingProductFeatureTypeV3:
      description: >+
        Each Product or Account has a set of Product Features. These are
        explained in a table as follows:


        | Value                           |
        Description                                                                                                                                                                                                                                
        | Use of `additionalValue`
        Field                                                                                      

        |---------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------|

        | ADDITIONAL_CARDS                | Additional cards can be
        requested                                                                                                                                                                                                          
        | The maximum number of additional cards.  If no maximum then should be
        set to null                                   |

        | BALANCE_TRANSFERS               | Balance transfers can be made to the
        account (eg. for credit
        cards)                                                                                                                                                                        
        |
        NA                                                                                                                 
        |

        | BILL_PAYMENT                    | The product can be attached to an
        automatic budgeting and bill payment
        service                                                                                                                                                             
        | Optional name of the
        service                                                                                       
        |

        | BONUS_REWARDS                   | Bonus loyalty rewards points are
        available                                                                                                                                                                                                 
        | Number of points
        available                                                                                         
        |

        | CARD_ACCESS                     | A card is available for the product
        to access
        funds                                                                                                                                                                                        
        | Text describing list of card types that this product can be linked
        to                                               |

        | CASHBACK_OFFER                  | Subject to terms, conditions and
        eligibility criteria, the product has a cashback offer for opening an
        account or by spending at a certain
        retailer.                                                                                       
        | The amount of the cashback offer (in
        AUD)                                                                          
        |

        | COMPLEMENTARY_PRODUCT_DISCOUNTS | Indicates that complementary,
        discounted offerings (such as gift cards, or discounted travel) is
        available                                                                                                                                 
        | Description of the complementary
        offering                                                                          
        |

        | DIGITAL_BANKING                 | Access is available to online
        banking features for the
        product                                                                                                                                                                             
        |
        NA                                                                                                                 
        |

        | DIGITAL_WALLET                  | A Digital wallet can be attached to
        the
        product                                                                                                                                                                                            
        | The name or brand of the
        wallet                                                                                    
        |

        | DONATE_INTEREST                 | Indicates that interest generated
        from the product can be automatically donated to a charity or community
        group                                                                                                                            
        |
        NA                                                                                                                 
        |

        | EXTRA_REPAYMENTS                | Indicates that the product has the
        option to accept extra repayments without incurring additional charges
        (for example Buy Now, Pay Later (BNPL) or line of credit products may
        offer the facility to repay instalments on an adhoc basis). |
        NA                                                                                                                 
        |

        | FRAUD_PROTECTION                | The product includes fraud
        protection
        features.                                                                                                                                                                                            
        |
        NA                                                                                                                 
        |

        | FREE_TXNS                       | A set number of free transactions
        available per
        month                                                                                                                                                                                      
        | The number of free
        transactions                                                                                    
        |

        | FREE_TXNS_ALLOWANCE             | A set amount of transaction fee
        value that is discounted per
        month                                                                                                                                                                         
        | The amount of transaction fee discounted (in
        AUD)                                                                   |

        | FUNDS_AVAILABLE_AFTER           | Deposited funds are available after
        a specified time period. This is distinct from a term deposit
        duration.                                                                                                                                
        |
        NA                                                                                                                 
        |

        | GUARANTOR                       | Subject to terms and conditions, the
        customer may be able to nominate a guarantor during the origination
        process.                                                                                                                          
        |
        NA                                                                                                                 
        |

        | INSURANCE                       | Insurance is provided as an
        additional feature of the
        product                                                                                                                                                                              
        | Text description of the type of insurance (e.g. Travel
        Insurance)                                                   |

        | INSTALMENT_PLAN                 | The product has the option to pay
        for eligible purchases over time with a set number of
        payments.                                                                                                                                          
        |
        NA                                                                                                                 
        |

        | INTEREST_FREE                   | Interest free period for
        purchases                                                                                                                                                                                                         
        | Interest free period. Formatted according to [ISO 8601
        Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations) |

        | INTEREST_FREE_TRANSFERS         | Interest free period for balance
        transfers                                                                                                                                                                                                 
        | Interest free period. Formatted according to [ISO 8601
        Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations) |

        | LOYALTY_PROGRAM                 | A points based loyalty program is
        available                                                                                                                                                                                                
        | Name of the loyalty
        program                                                                                        
        |

        | NOTIFICATIONS                   | Advanced notifications are available
        for the
        product                                                                                                                                                                                       
        | Description of the notification
        capability                                                                         
        |

        | NPP_ENABLED                     | An account of this product type can
        be used to receive funds as a result of a BSB/Number based NPP
        payment                                                                                                                                 
        |
        NA                                                                                                                 
        |

        | NPP_PAYID                       | An account of this product type can
        be used as the target of an NPP
        PayID                                                                                                                                                                  
        |
        NA                                                                                                                 
        |

        | OFFSET                          | An offset account can be connected
        to the
        product                                                                                                                                                                                          
        |
        NA                                                                                                                 
        |

        | OTHER                           | Another feature that can not be
        included in any of the other categories.  The additionalInfo field is
        mandatory for this
        type                                                                                                              
        |
        NA                                                                                                                 
        |

        | OVERDRAFT                       | An overdraft can be applied
        for                                                                                                                                                                                                            
        |
        NA                                                                                                                 
        |

        | REDRAW                          | Redraw of repaid principal above
        minimum required is
        available                                                                                                                                                                             
        |
        NA                                                                                                                 
        |

        | RELATIONSHIP_MANAGEMENT         | Relationship management is available
        for eligible
        customers.                                                                                                                                                                               
        |
        NA                                                                                                                 
        |

        | UNLIMITED_TXNS                  | Unlimited free transactions
        available                                                                                                                                                                                                      
        |
        NA                                                                                                                 
        |

      enum:
        - ADDITIONAL_CARDS
        - BALANCE_TRANSFERS
        - BILL_PAYMENT
        - BONUS_REWARDS
        - CASHBACK_OFFER
        - CARD_ACCESS
        - COMPLEMENTARY_PRODUCT_DISCOUNTS
        - DIGITAL_BANKING
        - DIGITAL_WALLET
        - DONATE_INTEREST
        - EXTRA_REPAYMENTS
        - FRAUD_PROTECTION
        - FREE_TXNS
        - FREE_TXNS_ALLOWANCE
        - FUNDS_AVAILABLE_AFTER
        - GUARANTOR
        - INSTALMENT_PLAN
        - INSURANCE
        - INTEREST_FREE
        - INTEREST_FREE_TRANSFERS
        - LOYALTY_PROGRAM
        - NOTIFICATIONS
        - NPP_ENABLED
        - NPP_PAYID
        - OFFSET
        - OTHER
        - OVERDRAFT
        - REDRAW
        - RELATIONSHIP_MANAGEMENT
        - UNLIMITED_TXNS
      type: string
      example: CARD_ACCESS
    BankingProductFeatureV3:
      properties:
        additionalInfo:
          description: >-
            Display text providing more information on the feature. Mandatory if
            the [feature
            type](https://consumerdatastandardsaustralia.github.io/standards/#tocSproductfeaturetypedoc)
            is set to OTHER
          type: string
          example: Additional Feature Information
        additionalInfoUri:
          description: Link to a web page with more information on this feature
          type: string
          format: uri
          x-cds-type: URIString
        additionalValue:
          description: >-
            Generic field containing additional information relevant to the
            [featureType](https://consumerdatastandardsaustralia.github.io/standards/#tocSproductfeaturetypedoc)
            specified. Whether mandatory or not is dependent on the value of the
            [featureType.](https://consumerdatastandardsaustralia.github.io/standards/#tocSproductfeaturetypedoc)
          example: Type specific value, see docs
          type: string
        featureType:
          $ref: '#/components/schemas/EnumBankingProductFeatureTypeV3'
      required:
        - featureType
      type: object
      x-conditional:
        - additionalValue
        - additionalInfo
    BankingProductFeatureWithActivatedV3:
      allOf:
        - $ref: '#/components/schemas/BankingProductFeatureV3'
        - properties:
            isActivated:
              default: UNKNOWN
              description: >-
                <ul><li>`ACTIVATED` if the feature has been activated by the
                customer or is a standard feature of the
                product</li><li>`NOT_ACTIVATED` if the feature is not activated
                but is available for activation</li><li>`UNKNOWN` or absent if
                the activation state is unknown.</ul>**Note:** This is an
                additional field appended to the feature structure defined in
                the Product Reference payload.
              enum:
                - ACTIVATED
                - NOT_ACTIVATED
                - UNKNOWN
              type: string
          type: object
      type: object
    BankingProductRateConditionV2:
      description: Defines a condition for the applicability of a rate.
      properties:
        rateApplicabilityType:
          description: >-
            Category of applicability condition associated with the rate. For
            more information refer to [Rate and Tier Applicability
            Types](#tocSbankingproductrateconditiondoc).
          enum:
            - MIN_DEPOSITS
            - MIN_DEPOSIT_AMOUNT
            - DEPOSIT_BALANCE_INCREASED
            - EXISTING_CUST
            - NEW_ACCOUNTS
            - NEW_CUSTOMER
            - NEW_CUSTOMER_TO_GROUP
            - ONLINE_ONLY
            - OTHER
            - MIN_PURCHASES
            - MAX_WITHDRAWALS
            - MAX_WITHDRAWAL_AMOUNT
          example: NEW_CUSTOMER
          type: string
        additionalValue:
          description: >-
            Generic field containing additional information relevant to the
            _rateApplicabilityType_ specified. Whether mandatory or not is
            dependent on the value of
            [_rateApplicabilityType_](#tocSbankingproductrateconditiondoc).
          type: string
        additionalInfo:
          description: >-
            Display text providing more information on the condition. Mandatory
            if the
            [_rateApplicabilityType_](#tocSbankingproductrateconditiondoc) value
            is `OTHER`.
          type: string
        additionalInfoUri:
          description: Link to a web page with more information on this condition.
          type: string
          format: uri
          x-cds-type: URIString
      required:
        - rateApplicabilityType
      type: object
      x-conditional:
        - additionalValue
        - additionalInfo
    BankingProductRateTierV4:
      description: Defines the criteria and conditions for which a rate applies.
      properties:
        name:
          description: A display name for the tier.
          type: string
          example: Sample display name
        unitOfMeasure:
          description: >-
            The unit of measure that applies to the _minimumValue_ and
            _maximumValue_ values, e.g.,<ul><li>`DOLLAR` for a dollar amount
            (with values in AmountString format)<li>`PERCENT` for Loan-to-Value
            Ratio or LVR (with values in RateString format)<li>`MONTH` or `DAY`
            for a period representing a discrete number of months or days for a
            fixed-term deposit or loan (with values as a string containing a
            positive integer).</ul>
          enum:
            - DAY
            - DOLLAR
            - MONTH
            - PERCENT
          type: string
          example: DAY
        minimumValue:
          description: >-
            The number of _unitOfMeasure_ units that form the lower bound of the
            tier. The tier should be inclusive of this value.
          type: string
          example: '10'
        maximumValue:
          description: >-
            The number of _unitOfMeasure_ units that form the upper bound of the
            tier or band. For a tier with a discrete value (as opposed to a
            range of values e.g., 1 month) this must be the same as
            _minimumValue_. Where this is the same as the _minimumValue_ value
            of the next-higher tier the referenced tier should be exclusive of
            this value. For example a term deposit of 2 months falls into the
            upper tier of the following tiers: (1 – 2 months, 2 – 3 months). If
            absent the tier's range has no upper bound.
          type: string
        rateApplicationMethod:
          description: >-
            The method used to calculate the amount to be applied using one or
            more tiers. A single rate may be applied to the entire balance or
            each applicable tier rate is applied to the portion of the balance
            that falls into that tier (referred to as 'bands' or 'steps').
          enum:
            - PER_TIER
            - WHOLE_BALANCE
          type: string
        applicabilityConditions:
          description: Applicability conditions for the rate tier.
          items:
            $ref: '#/components/schemas/BankingProductRateConditionV2'
          type: array
        additionalInfo:
          description: Display text providing more information on the rate tier.
          type: string
        additionalInfoUri:
          description: Link to a web page with more information on this rate tier.
          type: string
          format: uri
          x-cds-type: URIString
      required:
        - minimumValue
        - name
        - unitOfMeasure
      type: object
    BankingProductDepositRateV3:
      properties:
        depositRateType:
          $ref: '#/components/schemas/EnumBankingDepositRateTypeV1'
        rate:
          description: The rate to be applied.
          type: string
          x-cds-type: RateString
          example: '0.05'
        calculationFrequency:
          description: >-
            The period after which the rate is applied to the balance to
            calculate the amount due for the period. Calculation of the amount
            is often daily (as balances may change) but accumulated until the
            total amount is 'applied' to the account (see
            _applicationFrequency_). Formatted according to [ISO 8601
            Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations)
            (excludes recurrence syntax).
          type: string
          x-cds-type: ExternalRef
        applicationType:
          description: The type of approach used to apply the rate to the account.
          enum:
            - MATURITY
            - PERIODIC
            - UPFRONT
          example: PERIODIC
          type: string
        applicationFrequency:
          description: >-
            The period after which the calculated amount(s) (see
            _calculationFrequency_) are 'applied' (i.e. debited or credited) to
            the account. Formatted according to [ISO 8601
            Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations)
            (excludes recurrence syntax). Mandatory if the _applicationType_
            value is `PERIODIC`.
          type: string
          x-cds-type: ExternalRef
        tiers:
          description: Rate tiers applicable for this rate.
          items:
            $ref: '#/components/schemas/BankingProductRateTierV4'
          type: array
        applicabilityConditions:
          description: Applicability conditions for the rate.
          items:
            $ref: '#/components/schemas/BankingProductRateConditionV2'
          type: array
        additionalValue:
          description: >-
            Generic field containing additional information relevant to the
            [_depositRateType_](#tocSproductdepositratetypedoc) specified.
            Whether mandatory or not is dependent on the value of
            [_depositRateType_](#tocSproductdepositratetypedoc).
          type: string
        additionalInfo:
          description: Display text providing more information on the rate.
          type: string
        additionalInfoUri:
          description: Link to a web page with more information on this rate.
          type: string
          format: uri
          x-cds-type: URIString
      required:
        - applicationType
        - depositRateType
        - rate
      type: object
      x-conditional:
        - additionalValue
        - applicationFrequency
    EnumBankingProductFeeTypeV2:
      description: >

        Each Product or Account has a set of Fee Types. These are explained in a
        table as follows:

        | **Fee Type**       |
        **Description**                                                                                                            
        | **Additional Conditions / Notes**                                    |

        | ------------------ |
        ---------------------------------------------------------------------------------------------------------------------------
        | -------------------------------------------------------------------- |

        | `CASH_ADVANCE`     | A fee associated with a cash
        advance.                                                                                      
        | N/A                                                                  |

        | `DEPOSIT`          | A fee associated with making a
        deposit.                                                                                    
        | N/A                                                                  |

        | `DISHONOUR`        | A fee associated with a
        dishonour.                                                                                         
        | N/A                                                                  |

        | `ENQUIRY`          | A fee associated with an enquiry, including a
        balance
        enquiry.                                                              |
        N/A                                                                  |

        | `EVENT`            | A fee in relation to a particular event (e.g.,
        ordering a new card, viewing a balance or stopping a
        cheque).                |
        N/A                                                                  |

        | `EXIT`             | A fee for closing the
        product.                                                                                             
        | N/A                                                                  |

        | `LATE_PAYMENT`     | A fee associated with making a payment after a
        due
        date.                                                                   
        | Number of days late, after which the associated fee will be applied. |

        | `OTHER`            | Another fee that cannot be included in any of the
        other
        categories.                                                         |
        The `additionalInfo` field is **mandatory** for this type.           |

        | `PAYMENT`          | A fee associated with making a
        payment.                                                                                    
        | N/A                                                                  |

        | `PERIODIC`         | A periodic fee such as a monthly account
        servicing
        fee.                                                                    
        | The period of charge, formatted according to **ISO 8601 Durations**. |

        | `PURCHASE`         | A fee associated with making a purchase at a
        merchant.                                                                     
        | N/A                                                                  |

        | `REPLACEMENT`      | A fee associated with receiving a replacement,
        including cards, cheques, statements, security
        tokens.                       |
        N/A                                                                  |

        | `TRANSACTION`      | A fee associated with any transaction
        (incorporates WITHDRAWAL, DEPOSIT, PAYMENT and
        PURCHASE).                             |
        N/A                                                                  |

        | `UPFRONT`          | A fee paid at the beginning of the product
        lifecycle, such as an establishment fee, loyalty program fee or
        application fee. |
        N/A                                                                  |

        | `UPFRONT_PER_PLAN` | A fee paid at the creation of a new payment plan,
        such as an instalment
        plan.                                               |
        N/A                                                                  |

        | `VARIATION`        | A fee associated with a request for a variation,
        including to an existing process, instruction or
        terms.                    |
        N/A                                                                  |

        | `WITHDRAWAL`       | A fee associated with making a
        withdrawal.                                                                                 
        | N/A                                                                  |
      enum:
        - CASH_ADVANCE
        - DEPOSIT
        - DISHONOUR
        - ENQUIRY
        - EVENT
        - EXIT
        - LATE_PAYMENT
        - OTHER
        - PAYMENT
        - PERIODIC
        - PURCHASE
        - REPLACEMENT
        - TRANSACTION
        - UPFRONT
        - UPFRONT_PER_PLAN
        - VARIATION
        - WITHDRAWAL
      example: CASH_ADVANCE
      type: string
    BankingFeeAmountV1:
      properties:
        amount:
          description: The specific amount charged for the fee each time it is incurred.
          type: string
          x-cds-type: AmountString
          example: '10.00'
      required:
        - amount
      type: object
    BankingFeeRangeV1:
      description: >-
        A minimum or maximum fee amount where a specific fixed amount is not
        known until the fee is incurred.
      properties:
        feeMinimum:
          description: The minimum fee that will be charged per occurrence.
          type: string
          x-cds-type: AmountString
        feeMaximum:
          description: The maximum fee that will be charged per occurrence.
          type: string
          x-cds-type: AmountString
      type: object
    BankingFeeRateV1:
      properties:
        rateType:
          description: >-
            Type of fee rate calculation.<ul><li>`BALANCE` A fee rate based on a
            balance</li><li>`INTEREST_ACCRUED` A fee rate based on interest
            accrued</li><li>`TRANSACTION` A fee rate based on a
            transaction.</li></ul>
          enum:
            - BALANCE
            - INTEREST_ACCRUED
            - TRANSACTION
          type: string
          example: BALANCE
        rate:
          description: The fee rate calculated according to the _rateType_.
          type: string
          x-cds-type: RateString
          example: '0.05'
        accrualFrequency:
          description: >-
            The indicative frequency with which the fee is calculated on the
            account if applicable. Formatted according to [ISO 8601
            Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations)
            (excludes recurrence syntax).
          type: string
          x-cds-type: ExternalRef
        amountRange:
          $ref: '#/components/schemas/BankingFeeRangeV1'
      required:
        - rate
        - rateType
      type: object
      x-conditional:
        - balanceRate
        - transactionRate
        - accruedRate
    BankingFeeDiscountAmountV1:
      properties:
        amount:
          description: >-
            The specific amount discounted from the fee each time it is
            incurred.
          type: string
          x-cds-type: AmountString
          example: '10.00'
      required:
        - amount
      type: object
    BankingFeeDiscountRangeV1:
      description: >-
        A minimum or maximum fee discount amount where a specific fixed amount
        is not known until the fee is incurred.
      properties:
        discountMinimum:
          description: The minimum fee discount that will be applied per occurrence.
          type: string
          x-cds-type: AmountString
        discountMaximum:
          description: The maximum fee discount that will be applied per occurrence.
          type: string
          x-cds-type: AmountString
      type: object
    BankingFeeDiscountRateV1:
      properties:
        rateType:
          description: >-
            Type of fee rate discount calculation.<ul><li>`BALANCE` A fee rate
            discount based on a balance</li><li>`FEE` A fee rate discount based
            on the fee to which the discount is
            attached</li><li>`INTEREST_ACCRUED` A fee rate discount based on
            interest accrued</li><li>`TRANSACTION` A fee rate discount based on
            a transaction.</li></ul>
          enum:
            - BALANCE
            - FEE
            - INTEREST_ACCRUED
            - TRANSACTION
          type: string
          example: FEE
        rate:
          description: The fee rate discount calculated according to the _rateType_.
          type: string
          x-cds-type: RateString
          example: '0.05'
        amountRange:
          $ref: '#/components/schemas/BankingFeeDiscountRangeV1'
      required:
        - rate
        - rateType
      type: object
    BankingProductDiscountV2:
      description: >-
        Note that the currency of the fee discount is expected to be the same as
        the currency of the fee itself.
      properties:
        description:
          description: Description of the discount.
          type: string
          example: Christmas special discount
        discountType:
          description: >-
            The type of discount. For further details, refer to [Product
            Discount Types](#tocSproductdiscounttypedoc).
          enum:
            - BALANCE
            - DEPOSITS
            - ELIGIBILITY_ONLY
            - FEE_CAP
            - PAYMENTS
          type: string
          example: PAYMENTS
        discountMethodUType:
          description: Reference to the applicable fee discount method structure.
          enum:
            - fixedAmount
            - rateBased
          type: string
          example: fixedAmount
        fixedAmount:
          allOf:
            - $ref: '#/components/schemas/BankingFeeDiscountAmountV1'
          description: >-
            Mandatory if the _discountMethodUType_ value is `fixedAmount`. Where
            the discount is a specific amount.
        rateBased:
          allOf:
            - $ref: '#/components/schemas/BankingFeeDiscountRateV1'
          description: >-
            Mandatory if the _discountMethodUType_ value is `rateBased`. Where
            the discount is based on a type of rate. Unless noted in
            _additionalInfo_, assumes the application and calculation frequency
            are the same as the corresponding fee.
        additionalValue:
          description: >-
            Generic field containing additional information relevant to the
            [_discountType_](#tocSproductdiscounttypedoc) specified. Whether
            mandatory or not is dependent on the value of
            [_discountType_](#tocSproductdiscounttypedoc).
          type: string
        additionalInfo:
          description: Display text providing more information on the discount.
          type: string
        additionalInfoUri:
          description: Link to a web page with more information on this discount.
          type: string
          format: uri
          x-cds-type: URIString
        eligibility:
          description: >-
            Eligibility constraints that apply to this discount. Mandatory if
            _discountType_ is `ELIGIBILITY_ONLY`.
          items:
            $ref: '#/components/schemas/BankingProductDiscountEligibilityV1'
          type: array
      required:
        - description
        - discountMethodUType
        - discountType
      type: object
      x-conditional:
        - fixedAmount
        - rateBased
        - additionalValue
        - eligibility
    BankingProductFeeV2:
      properties:
        name:
          description: Name of the fee.
          type: string
          example: Special fee
        feeType:
          $ref: '#/components/schemas/EnumBankingProductFeeTypeV2'
        feeMethodUType:
          description: Reference to the applicable fee charging method structure.
          enum:
            - fixedAmount
            - rateBased
            - variable
          type: string
          example: rateBased
        fixedAmount:
          allOf:
            - $ref: '#/components/schemas/BankingFeeAmountV1'
          description: >-
            Mandatory if the _feeMethodUType_ value is `fixedAmount`. Where the
            fee is a specific amount.
        rateBased:
          allOf:
            - $ref: '#/components/schemas/BankingFeeRateV1'
          description: >-
            Mandatory if the _feeMethodUType_ value is `rateBased`. Where the
            fee is based on a type of rate.
        variable:
          allOf:
            - $ref: '#/components/schemas/BankingFeeRangeV1'
          description: >-
            Mandatory if the _feeMethodUType_ value is `variable`. Where the
            amount or rate may not be known until the fee is incurred.
        feeCap:
          description: >-
            The cap amount if multiple occurrences of the fee are capped to a
            limit.
          type: string
          x-cds-type: AmountString
        feeCapPeriod:
          description: >-
            Specifies a duration over which multiple occurrences of the fee will
            be capped. Formatted according to [ISO 8601
            Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations)
            (excludes recurrence syntax).
          type: string
          x-cds-type: ExternalRef
        currency:
          default: AUD
          description: The currency the fee will be charged in. Assumes `AUD` if absent.
          type: string
          x-cds-type: CurrencyString
          pattern: \w{3}
        additionalValue:
          description: >-
            Generic field containing additional information relevant to the
            [_feeType_](#tocSproductfeetypedoc) specified. Whether mandatory or
            not is dependent on the value of
            [_feeType_](#tocSproductfeetypedoc).
          type: string
        additionalInfo:
          description: >-
            Display text providing more information on the fee. Mandatory if the
            feeType value is OTHER.
          type: string
        additionalInfoUri:
          description: Link to a web page with more information on this fee.
          type: string
          format: uri
          x-cds-type: URIString
        discounts:
          description: An optional list of discounts to this fee that may be available.
          items:
            $ref: '#/components/schemas/BankingProductDiscountV2'
          type: array
      required:
        - feeMethodUType
        - feeType
        - name
      type: object
      x-conditional:
        - fixedAmount
        - rateBased
        - variable
        - additionalValue
        - additionalInfo
    EnumBankingLendingRateTypeV2:
      description: >
        The type of rate (base, bonus, etc). These are explained in a table as
        follows:


        | Value                    |
        Description                                                                                                                               
        | Use of `additionalValue`
        Field                                                          

        |--------------------------|--------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------|
         FIXED                    | Fixed rate for a period of time                                                                                                            | The period of time fixed. Formatted according to ISO 8601 Durations                     
         VARIABLE                 | A variable base rate for the product                                                                                                       | NA                                                                                      
         INTRODUCTORY             | An introductory discount that will expire after a set period                                                                               | The period of time for the introductory rate. Formatted according to ISO 8601 Durations 
         DISCOUNT                 | A specific discount rate that may be applied. A discount rate reduces the interest payable                                                 | Description of the discount rate that is applicable                                     
         PENALTY                  | A specific penalty rate that may be applied. A penalty rate increases the interest payable                                                 | Description of the penalty rate that is applicable                                      
         FLOATING                 | A floating rate is relatively fixed but still adjusts under specific circumstances                                                         | Details of the float parameters                                                         
         MARKET_LINKED            | A rate that is linked to a specific market, commodity or asset class                                                                       | Details of the market linkage                                                           
         CASH_ADVANCE             | Specific rate applied to cash advances from the account                                                                                    | NA                                                                                      
         PURCHASE                 | Specific rate applied to purchases from the account                                                                                        | NA                                                                                      
         BUNDLE_DISCOUNT_FIXED    | A discount rate off the fixed rate obtained by originating a bundle instead of a standalone product                                        | The name of the bundle                                                                  
         BUNDLE_DISCOUNT_VARIABLE | A discount rate off the variable rate obtained by originating a bundle instead of a standalone product                                     | The name of the bundle                                                                  
         BALANCE_TRANSFER         | Specific rate applied to balance transfers to the account. This is expected to apply to products in the CRED_AND_CHRG_CARDS category only. | NA
      enum:
        - BUNDLE_DISCOUNT_FIXED
        - BUNDLE_DISCOUNT_VARIABLE
        - CASH_ADVANCE
        - DISCOUNT
        - FIXED
        - FLOATING
        - INTRODUCTORY
        - MARKET_LINKED
        - PENALTY
        - PURCHASE
        - VARIABLE
        - BALANCE_TRANSFER
      type: string
      example: FIXED
    EnumBankingProductLendingRateRepaymentTypeV2:
      description: Option in place for repayments.
      enum:
        - INTEREST_ONLY
        - OTHER
        - PRINCIPAL_AND_INTEREST
        - UNCONSTRAINED
      type: string
    EnumBankingLoanPurposeV2:
      description: The reason for taking out the loan.
      enum:
        - INVESTMENT
        - OTHER
        - OWNER_OCCUPIED
        - UNCONSTRAINED
      type: string
    BankingProductLendingRateV3:
      properties:
        lendingRateType:
          $ref: '#/components/schemas/EnumBankingLendingRateTypeV2'
        rate:
          description: The rate to be applied.
          type: string
          x-cds-type: RateString
          example: '0.05'
        comparisonRate:
          description: A comparison rate equivalent for this rate.
          type: string
          x-cds-type: RateString
        calculationFrequency:
          description: >-
            The period after which the rate is applied to the balance to
            calculate the amount due for the period. Calculation of the amount
            is often daily (as balances may change) but accumulated until the
            total amount is 'applied' to the account (see
            _applicationFrequency_). Formatted according to [ISO 8601
            Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations)
            (excludes recurrence syntax).
          type: string
          x-cds-type: ExternalRef
        applicationType:
          description: The type of approach used to apply the rate to the account.
          enum:
            - MATURITY
            - PERIODIC
            - UPFRONT
          example: PERIODIC
          type: string
        applicationFrequency:
          description: >-
            The period after which the calculated amount(s) (see
            _calculationFrequency_) are 'applied' (i.e. debited or credited) to
            the account. Formatted according to [ISO 8601
            Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations)
            (excludes recurrence syntax). Mandatory if the _applicationType_
            value is `PERIODIC`.
          type: string
          x-cds-type: ExternalRef
        interestPaymentDue:
          description: >-
            When loan payments are due to be paid within each period. The
            investment benefit of earlier payments affect the rate that can be
            offered.
          enum:
            - IN_ADVANCE
            - IN_ARREARS
          type: string
        repaymentType:
          $ref: '#/components/schemas/EnumBankingProductLendingRateRepaymentTypeV2'
        loanPurpose:
          $ref: '#/components/schemas/EnumBankingLoanPurposeV2'
        tiers:
          description: Rate tiers applicable for this rate.
          items:
            $ref: '#/components/schemas/BankingProductRateTierV4'
          type: array
        applicabilityConditions:
          description: Applicability conditions for the rate.
          items:
            $ref: '#/components/schemas/BankingProductRateConditionV2'
          type: array
        additionalValue:
          description: >-
            Generic field containing additional information relevant to the
            [_lendingRateType_] specified. Whether mandatory or not is dependent
            on the value of [_lendingRateType_].
          type: string
        additionalInfo:
          description: Display text providing more information on the rate.
          type: string
        additionalInfoUri:
          description: Link to a web page with more information on this rate.
          type: string
          format: uri
          x-cds-type: URIString
      required:
        - applicationType
        - lendingRateType
        - loanPurpose
        - rate
        - repaymentType
      type: object
      x-conditional:
        - additionalValue
        - applicationFrequency
    BankingAccountIdV1:
      description: >-
        A unique identifier for a Banking account, generated according to CDR ID
        Permanence requirements.
      type: string
      x-cds-type: ASCIIString
    BankingLoanAccountV3:
      description: Mandatory if the _specificAccountUType_ value is `loan`.
      properties:
        originalStartDate:
          description: Optional original start date for the loan.
          type: string
          format: date
          x-cds-type: DateString
        originalLoanAmount:
          description: Optional original loan value.
          type: string
          x-cds-type: AmountString
          example: '10.00'
        originalLoanCurrency:
          default: AUD
          description: If absent assumes `AUD`.
          type: string
          x-cds-type: CurrencyString
          pattern: \w{3}
        loanEndDate:
          description: Date that the loan is due to be repaid in full.
          type: string
          format: date
          x-cds-type: DateString
          example: '2022-07-15'
        nextInstalmentDate:
          description: Next date that an instalment is required.
          type: string
          format: date
          x-cds-type: DateString
          example: '2022-07-15'
        minInstalmentAmount:
          description: Minimum amount of next instalment.
          type: string
          x-cds-type: AmountString
          example: '10.00'
        minInstalmentCurrency:
          default: AUD
          description: If absent assumes `AUD`.
          type: string
          x-cds-type: CurrencyString
          pattern: \w{3}
        maxRedraw:
          description: >-
            Maximum amount of funds that can be redrawn. If not present redraw
            is not available even if the feature exists for the account.
          type: string
          x-cds-type: AmountString
          example: '10.00'
        maxRedrawCurrency:
          default: AUD
          description: If absent assumes `AUD`.
          type: string
          x-cds-type: CurrencyString
          pattern: \w{3}
        minRedraw:
          description: Minimum redraw amount.
          type: string
          x-cds-type: AmountString
          example: '10.00'
        minRedrawCurrency:
          default: AUD
          description: If absent assumes `AUD`.
          type: string
          x-cds-type: CurrencyString
          pattern: \w{3}
        offsetAccountEnabled:
          description: >-
            Set to `true` if one or more offset accounts are configured for this
            loan account.
          type: boolean
        offsetAccountIds:
          description: >-
            The _accountId_ values of the configured offset accounts attached to
            this loan. Only offset accounts that can be accessed under the
            current authorisation should be included. It is expected behaviour
            that _offsetAccountEnabled_ is set to `true` but the
            _offsetAccountIds_ field is absent or empty. This represents a
            situation where an offset account exists but details can not be
            accessed under the current authorisation.
          items:
            $ref: '#/components/schemas/BankingAccountIdV1'
          type: array
        repaymentType:
          description: Option in place for repayments.
          enum:
            - INTEREST_ONLY
            - OTHER
            - PRINCIPAL_AND_INTEREST
            - UNCONSTRAINED
          type: string
          example: OTHER
        repaymentFrequency:
          description: >-
            The expected or required repayment frequency. Formatted according to
            [ISO 8601
            Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations)
            (excludes recurrence syntax).
          type: string
          x-cds-type: ExternalRef
      required:
        - repaymentType
      type: object
    AdapterBankingAccountV3:
      properties:
        id:
          description: A unique ID of the account
          type: string
          maxLength: 255
          example: 28d05b54b88d191b04fa44b47a0afa8b83a34c8987dc76d21cb2c36b907f265c
        internalId:
          description: Internal Account Identifier
          type: string
        accountCustomers:
          description: List of Account Customer entries
          type: array
          items:
            $ref: '#/components/schemas/AdapterAccountCustomerV2'
        productCategory:
          $ref: '#/components/schemas/EnumBankingProductCategoryV1'
        productName:
          description: The Product Name associated with the Account
          type: string
          example: ACME Savings Maximiser
        bundleName:
          description: >-
            Optional field to indicate if this account is part of a bundle that
            is providing additional benefit for to the customer
          type: string
          example: Great Bundle Savings
        creationDate:
          description: Date that the account was created (if known)
          type: string
          format: date
        displayName:
          description: >-
            The display name of the account as defined by the bank. This should
            not incorporate account numbers or PANs.
          type: string
          example: ACME Savings Account
        nickname:
          description: A customer supplied nick name for the account
          type: string
          example: Holiday Fund
        status:
          $ref: '#/components/schemas/EnumAccountOpenStatusV1'
        bsb:
          description: >-
            The BSB for the account.

            If a string is supplied and it is a valid integer it will be parsed
            and then zero padded on return.
          type: integer
          minimum: 1
          example: 999999
        accountNumber:
          description: >-
            The Account Number for the account. Note: As from 1.12.1, this field
            has changed from a Number to a String.  This change is backwards
            compatible and will currently accept a JSON number returned from the
            adapter but this  behaviour is now deprecated and will be removed in
            a future release.
          type: string
          example: '1231234'
        balances:
          description: Balances for this Account
          items:
            $ref: '#/components/schemas/DioAccountBalanceV1'
          type: array
        addresses:
          description: The addresses for the account to be used for correspondence
          items:
            $ref: '#/components/schemas/CommonPhysicalAddressV1'
          type: array
        features:
          description: >-
            Array of features of the account based on the equivalent structure
            in Product Reference with the following additional field
          items:
            $ref: '#/components/schemas/BankingProductFeatureWithActivatedV3'
          type: array
        depositRate:
          description: >-
            current rate to calculate interest earned being applied to deposit
            balances as it stands at the time of the API call
          type: number
          minimum: -1
          maximum: 1
          example: 0.02
        depositRates:
          description: >-
            Fully described deposit rates for this account based on the
            equivalent structure in Product Reference
          items:
            $ref: '#/components/schemas/BankingProductDepositRateV3'
          type: array
        fees:
          description: >-
            Fees and charges applicable to the account based on the equivalent
            structure in Product Reference
          items:
            $ref: '#/components/schemas/BankingProductFeeV2'
          type: array
        lendingRate:
          description: >-
            The current rate to calculate interest payable being applied to
            lending balances as it stands at the time of the API call
          type: number
          minimum: -1
          maximum: 1
          example: 0.02
        lendingRates:
          description: >-
            Fully described deposit rates for this account based on the
            equivalent structure in Product Reference
          items:
            $ref: '#/components/schemas/BankingProductLendingRateV3'
          type: array
        accountType:
          description: The type of structure to present account specific fields.
          enum:
            - TERM_DEPOSIT
            - CREDIT_CARD
            - LOAN
          type: string
          example: LOAN
        creditCard:
          $ref: '#/components/schemas/BankingCreditCardAccountV1'
        loan:
          $ref: '#/components/schemas/BankingLoanAccountV3'
        termDeposit:
          items:
            $ref: '#/components/schemas/BankingTermDepositAccountV1'
          type: array
        jointAccountSharingStatus:
          $ref: '#/components/schemas/EnumAdapterJointAccountSharingStatusV1'
      type: object
      required:
        - id
        - bsb
        - balances
        - accountNumber
        - displayName
        - productCategory
        - productName
    EnumBankingProductCategoryV2:
      description: >+
        The productCategory enumeration provides the values for categorising
        products and accounts. These are explained in the

        following tables:


        **Deposit Products**


        | Enum                       |
        Description                                                                                                                                                                                                                                                                                                      

        |----------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|

        | TRANS_AND_SAVINGS_ACCOUNTS | This grouping of products includes all
        accounts where cash is deposited in the account and is accessible to the
        customer when they choose. These are given many names on the market
        including Cash Accounts, Saving Accounts, Transaction Accounts, Current
        Accounts, Cheque Accounts, Passbook Accounts, etc... |

        | TERM_DEPOSITS              | This grouping of products includes all
        accounts where cash is deposited in the account for a set time period
        with restrictions on when funds can be withdrawn. Includes traditional
        Term Deposits and specialised deposits with either fixed terms or notice
        periods for withdrawal of funds.                    |

        | TRAVEL_CARDS               | This grouping of products includes
        prepaid cards with multi-currency
        capabilities.                                                                                                                                                                                                                              
        |

        | REGULATED_TRUST_ACCOUNTS   | This grouping of products includes
        accounts were funds are held in trust in regulated industries with
        complex rules embedded on how the products must operate. Industries that
        require this sort of product include real estate agents, solicitors and
        conveyancers.                                             |


        **Lending Products**


        | Enum                  |
        Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
        |

        |-----------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|

        | BUSINESS_LOANS        | This grouping of products incorporates all
        types of lending for business purpose that is not a trade finance
        facility, lease, overdraft, residential mortgage, credit card or margin
        lending. It includes traditional term loans, bank guarantees and
        commercial bills. This category would incorporate both secured and
        unsecured business purpose lending including all business purpose
        equipment finance that is not covered by a
        lease.                                                       |

        | BUY_NOW_PAY_LATER     | This grouping includes products regulated as a
        buy now pay later arrangement under the National Consumer Credit
        Protection Act 2009 and other Buy Now, Pay Later (BNPL) products with
        key characteristics which may include (but are not limited to): the
        provision of finance (excluding supplying cash), the involvement of a
        third-party financing entity, a fixed charge for providing credit under
        a prescribed limit instead of charging interest, and a fixed charge for
        missing a payment. |

        | CRED_AND_CHRG_CARDS   | This grouping of products includes all lending
        products that are issued for the purpose of allowing a flexible line of
        credit accessed through use of a card. These may be called various names
        including Credit Cards, Charge Cards and Store
        Cards.                                                                                                                                                                                                                                             
        |

        | LEASES                | This grouping of products will include all
        types of leases including Financial Lease, Operating Lease, Sale and
        leaseback,
        etc...                                                                                                                                                                                                                                                                                                                                                                 
        |

        | MARGIN_LOANS          | This grouping of products includes all types
        of margin loans which let you borrow money to invest in traded assets
        including shares & commodities or in managed
        funds.                                                                                                                                                                                                                                                                                                                            
        |

        | OVERDRAFTS            | This grouping of products includes all types
        of lending which allows for the loan amount to be withdrawn, repaid, and
        redrawn again in any manner and any number of times, until the
        arrangement expires. These loans may be secured or unsecured, and
        generally don’t have set / minimum repayment
        requirements.                                                                                                                                                                                 
        |

        | PERS_LOANS            | This grouping of products includes all lending
        for personal purposes that is not a residential mortgage, credit card or
        margin lending. These loans may be unsecured loans and term loans for
        purchase assets used as security such as motor vehicles. These may be
        called various names including Personal Loans and Car
        Loans.                                                                                                                                                                  
        |

        | RESIDENTIAL_MORTGAGES | This grouping of products includes all lending
        products that are available for the primary purpose of borrowing for the
        purpose of purchasing or renovating residential property, where a
        residential property will be used as security. This group will include
        both fixed, variable & secured overdraft types of product and may
        include both owner-occupied and investment purpose
        borrowing.                                                                                                  
        |

        | TRADE_FINANCE         | This grouping of products includes specialised
        lending products specifically designed to facilitate domestic &
        international trade. This includes the issuance of letters of credit,
        factoring, export
        credit.                                                                                                                                                                                                                                                                                     

      enum:
        - BUSINESS_LOANS
        - BUY_NOW_PAY_LATER
        - CRED_AND_CHRG_CARDS
        - LEASES
        - MARGIN_LOANS
        - OVERDRAFTS
        - PERS_LOANS
        - REGULATED_TRUST_ACCOUNTS
        - RESIDENTIAL_MORTGAGES
        - TERM_DEPOSITS
        - TRADE_FINANCE
        - TRANS_AND_SAVINGS_ACCOUNTS
        - TRAVEL_CARDS
      type: string
      example: TRANS_AND_SAVINGS_ACCOUNTS
    EnumBankingProductFeatureTypeV4:
      description: >+
        Each Product or Account has a set of Product Features. These are
        explained in a table as follows:


        | Value                           |
        Description                                                                                                                                                                                                                                                          
        | Use of `additionalValue`
        Field                                                                                      

        |---------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------|

        | ADDITIONAL_CARDS                | Additional cards can be
        requested                                                                                                                                                                                                                                    
        | The maximum number of additional cards.  If no maximum then should be
        set to null                                   |

        | BALANCE_TRANSFERS               | Balance transfers can be made to the
        account (eg. for credit
        cards)                                                                                                                                                                                                  
        |
        NA                                                                                                                 
        |

        | BILL_PAYMENT                    | The product can be attached to an
        automatic budgeting and bill payment
        service                                                                                                                                                                                       
        | Optional name of the
        service                                                                                       
        |

        | BONUS_REWARDS                   | Bonus loyalty rewards points are
        available                                                                                                                                                                                                                           
        | Number of points
        available                                                                                         
        |

        | CARD_ACCESS                     | A card is available for the product
        to access
        funds                                                                                                                                                                                                                  
        | Text describing list of card types that this product can be linked
        to                                               |

        | CASHBACK_OFFER                  | Subject to terms, conditions and
        eligibility criteria, the product has a cashback offer for opening an
        account or by spending at a certain
        retailer.                                                                                                                 
        | The amount of the cashback offer (in
        AUD)                                                                          
        |

        | COMPLEMENTARY_PRODUCT_DISCOUNTS | Indicates that complementary,
        discounted offerings (such as gift cards, or discounted travel) is
        available                                                                                                                                                           
        | Description of the complementary
        offering                                                                          
        |

        | DIGITAL_BANKING                 | Access is available to online
        banking features for the
        product                                                                                                                                                                                                       
        |
        NA                                                                                                                 
        |

        | DIGITAL_WALLET                  | A Digital wallet can be attached to
        the
        product                                                                                                                                                                                                                      
        | The name or brand of the
        wallet                                                                                    
        |

        | DONATE_INTEREST                 | Indicates that interest generated
        from the product can be automatically donated to a charity or community
        group                                                                                                                                                      
        |
        NA                                                                                                                 
        |

        | EXTRA_REPAYMENTS                | Indicates that the product has the
        option to accept extra repayments without incurring additional charges
        (for example Buy Now, Pay Later (BNPL) or line of credit products may
        offer the facility to repay instalments on an adhoc
        basis).                           |
        NA                                                                                                                 
        |

        | FRAUD_PROTECTION                | The product includes fraud
        protection
        features.                                                                                                                                                                                                                      
        |
        NA                                                                                                                 
        |

        | FREE_TXNS                       | A set number of free transactions
        available per
        month                                                                                                                                                                                                                
        | The number of free
        transactions                                                                                    
        |

        | FREE_TXNS_ALLOWANCE             | A set amount of transaction fee
        value that is discounted per
        month                                                                                                                                                                                                   
        | The amount of transaction fee discounted (in
        AUD)                                                                   |

        | FUNDS_AVAILABLE_AFTER           | Deposited funds are available after
        a specified time period. This is distinct from a term deposit
        duration.                                                                                                                                                          
        |
        NA                                                                                                                 
        |

        | GUARANTOR                       | Subject to terms and conditions, the
        customer may be able to nominate a guarantor during the origination
        process.                                                                                                                                                    
        |
        NA                                                                                                                 
        |

        | INSURANCE                       | Insurance is provided as an
        additional feature of the
        product                                                                                                                                                                                                        
        | Text description of the type of insurance (e.g. Travel
        Insurance)                                                   |

        | INSTALMENT_PLAN                 | The product has the option to pay
        for eligible purchases over time with a set number of
        payments.                                                                                                                                                                    
        |
        NA                                                                                                                 
        |

        | INTEREST_FREE                   | Interest free period for
        purchases                                                                                                                                                                                                                                   
        | Interest free period. Formatted according to [ISO 8601
        Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations) |

        | INTEREST_FREE_TRANSFERS         | Interest free period for balance
        transfers                                                                                                                                                                                                                           
        | Interest free period. Formatted according to [ISO 8601
        Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations) |

        | LOYALTY_PROGRAM                 | A points based loyalty program is
        available                                                                                                                                                                                                                          
        | Name of the loyalty
        program                                                                                        
        |

        | NOTIFICATIONS                   | Advanced notifications are available
        for the
        product                                                                                                                                                                                                                 
        | Description of the notification
        capability                                                                         
        |

        | NPP_ENABLED                     | An account of this product type can
        be used to receive funds as a result of a BSB/Number based NPP
        payment                                                                                                                                                           
        |
        NA                                                                                                                 
        |

        | NPP_PAYID                       | An account of this product type can
        be used as the target of an NPP
        PayID                                                                                                                                                                                            
        |
        NA                                                                                                                 
        |

        | OFFSET                          | An offset account can be connected
        to the
        product                                                                                                                                                                                                                    
        |
        NA                                                                                                                 
        |

        | OTHER                           | Another feature that can not be
        included in any of the other categories.  The additionalInfo field is
        mandatory for this
        type                                                                                                                                        
        |
        NA                                                                                                                 
        |

        | OVERDRAFT                       | An overdraft can be applied
        for                                                                                                                                                                                                                                      
        |
        NA                                                                                                                 
        |

        | REDRAW                          | Redraw of repaid principal above
        minimum required is
        available                                                                                                                                                                                                       
        |
        NA                                                                                                                 
        |

        | RELATIONSHIP_MANAGEMENT         | Relationship management is available
        for eligible
        customers.                                                                                                                                                                                                         
        |
        NA                                                                                                                 
        |

        | UNLIMITED_TXNS                  | Unlimited free transactions
        available                                                                                                                                                                                                                                
        |
        NA                                                                                                                 
        |

        | EXTRA_DOWN_PAYMENT              | When a transaction value would
        exceed the credit limit available for an instalment plan, there is an
        ability to make a larger than usual initial down payment to enable the
        creation of a plan based on a reduced amount outstanding, so it remains
        within the limit. |
        NA                                                                                                                 
        |

      enum:
        - ADDITIONAL_CARDS
        - BALANCE_TRANSFERS
        - BILL_PAYMENT
        - BONUS_REWARDS
        - CASHBACK_OFFER
        - CARD_ACCESS
        - COMPLEMENTARY_PRODUCT_DISCOUNTS
        - DIGITAL_BANKING
        - DIGITAL_WALLET
        - DONATE_INTEREST
        - EXTRA_REPAYMENTS
        - FRAUD_PROTECTION
        - FREE_TXNS
        - FREE_TXNS_ALLOWANCE
        - FUNDS_AVAILABLE_AFTER
        - GUARANTOR
        - INSTALMENT_PLAN
        - INSURANCE
        - INTEREST_FREE
        - INTEREST_FREE_TRANSFERS
        - LOYALTY_PROGRAM
        - NOTIFICATIONS
        - NPP_ENABLED
        - NPP_PAYID
        - OFFSET
        - OTHER
        - OVERDRAFT
        - REDRAW
        - RELATIONSHIP_MANAGEMENT
        - UNLIMITED_TXNS
        - EXTRA_DOWN_PAYMENT
      type: string
      example: CARD_ACCESS
    BankingProductFeatureV4:
      properties:
        additionalInfo:
          description: >-
            Display text providing more information on the feature. Mandatory if
            the [feature
            type](https://consumerdatastandardsaustralia.github.io/standards/#tocSproductfeaturetypedoc)
            value is OTHER
          type: string
          example: Additional Feature Information
        additionalInfoUri:
          description: Link to a web page with more information on this feature
          type: string
          format: uri
          x-cds-type: URIString
        additionalValue:
          description: >-
            Generic field containing additional information relevant to the
            [featureType](https://consumerdatastandardsaustralia.github.io/standards/#tocSproductfeaturetypedoc)
            specified. Whether mandatory or not is dependent on the value of the
            [featureType.](https://consumerdatastandardsaustralia.github.io/standards/#tocSproductfeaturetypedoc)
          example: Type specific value, see docs
          type: string
        featureType:
          $ref: '#/components/schemas/EnumBankingProductFeatureTypeV4'
      required:
        - featureType
      type: object
      x-conditional:
        - additionalValue
        - additionalInfo
    BankingProductFeatureWithActivatedV4:
      allOf:
        - $ref: '#/components/schemas/BankingProductFeatureV4'
        - properties:
            isActivated:
              default: UNKNOWN
              description: >-
                <ul><li>`ACTIVATED` if the feature has been activated by the
                customer or is a standard feature of the
                product</li><li>`NOT_ACTIVATED` if the feature is not activated
                but is available for activation</li><li>`UNKNOWN` or absent if
                the activation state is unknown.</ul>**Note:** This is an
                additional field appended to the feature structure defined in
                the Product Reference payload.
              enum:
                - ACTIVATED
                - NOT_ACTIVATED
                - UNKNOWN
              type: string
          type: object
      type: object
    BankingProductInstalmentsV1:
      description: Details of instalment features on the account.
      properties:
        maximumConcurrentPlans:
          description: >-
            Maximum number of concurrent active instalment plans that may be
            created on the account. If `null`, there is no predetermined maximum
            number.
          type: integer
          x-cds-type: NaturalNumber
        instalmentsLimit:
          description: >-
            Maximum combined limit of all instalment plans that may be created
            on the account. If `null` or not present, an opened account balance
            _creditLimit_ may be assumed to provide a maximum limit for
            instalments.
          type: string
          x-cds-type: AmountString
        minimumPlanValue:
          description: Minimum value that can be opened as an instalment plan.
          type: string
          x-cds-type: AmountString
        maximumPlanValue:
          description: >-
            Maximum value that can be opened as an instalment plan. If `null` or
            not present, _instalmentsLimit_ is assumed to be the maximum
            individual plan value.
          type: string
          x-cds-type: AmountString
        minimumSplit:
          description: Minimum number of instalment payments a plan can be created with.
          example: 4
          type: integer
          x-cds-type: PositiveInteger
        maximumSplit:
          description: Maximum number of instalment payments a plan can be created with.
          example: 4
          type: integer
          x-cds-type: PositiveInteger
      required:
        - maximumSplit
        - minimumSplit
      type: object
    AdapterBankingAccountV4:
      properties:
        id:
          description: A unique ID of the account
          type: string
          maxLength: 255
          example: 28d05b54b88d191b04fa44b47a0afa8b83a34c8987dc76d21cb2c36b907f265c
        internalId:
          description: Internal Account Identifier
          type: string
        accountCustomers:
          description: List of Account Customer entries
          type: array
          items:
            $ref: '#/components/schemas/AdapterAccountCustomerV2'
        productCategory:
          $ref: '#/components/schemas/EnumBankingProductCategoryV2'
        productName:
          description: The Product Name associated with the Account
          type: string
          example: ACME Savings Maximiser
        bundleName:
          description: >-
            Optional field to indicate if this account is part of a bundle that
            is providing additional benefit for to the customer
          type: string
          example: Great Bundle Savings
        creationDate:
          description: Date that the account was created (if known)
          type: string
          format: date
        displayName:
          description: >-
            The display name of the account as defined by the bank. This should
            not incorporate account numbers or PANs.
          type: string
          example: ACME Savings Account
        nickname:
          description: A customer supplied nick name for the account
          type: string
          example: Holiday Fund
        status:
          $ref: '#/components/schemas/EnumAccountOpenStatusV1'
        bsb:
          description: >-
            The BSB for the account.

            If a string is supplied and it is a valid integer it will be parsed
            and then zero padded on return.
          type: integer
          minimum: 1
          example: 999999
        accountNumber:
          description: >-
            The Account Number for the account. Note: As from 1.12.1, this field
            has changed from a Number to a String.  This change is backwards
            compatible and will currently accept a JSON number returned from the
            adapter but this  behaviour is now deprecated and will be removed in
            a future release.
          type: string
          example: '1231234'
        balances:
          description: Balances for this Account
          items:
            $ref: '#/components/schemas/DioAccountBalanceV1'
          type: array
        addresses:
          description: The addresses for the account to be used for correspondence
          items:
            $ref: '#/components/schemas/CommonPhysicalAddressV1'
          type: array
        features:
          description: >-
            Array of features of the account based on the equivalent structure
            in Product Reference with the following additional field
          items:
            $ref: '#/components/schemas/BankingProductFeatureWithActivatedV4'
          type: array
        depositRate:
          description: >-
            current rate to calculate interest earned being applied to deposit
            balances as it stands at the time of the API call
          type: number
          minimum: -1
          maximum: 1
          example: 0.02
        depositRates:
          description: >-
            Fully described deposit rates for this account based on the
            equivalent structure in Product Reference
          items:
            $ref: '#/components/schemas/BankingProductDepositRateV3'
          type: array
        fees:
          description: >-
            Fees and charges applicable to the account based on the equivalent
            structure in Product Reference
          items:
            $ref: '#/components/schemas/BankingProductFeeV2'
          type: array
        lendingRate:
          description: >-
            The current rate to calculate interest payable being applied to
            lending balances as it stands at the time of the API call
          type: number
          minimum: -1
          maximum: 1
          example: 0.02
        lendingRates:
          description: >-
            Fully described deposit rates for this account based on the
            equivalent structure in Product Reference
          items:
            $ref: '#/components/schemas/BankingProductLendingRateV3'
          type: array
        accountType:
          description: The type of structure to present account specific fields.
          enum:
            - TERM_DEPOSIT
            - CREDIT_CARD
            - LOAN
          type: string
          example: LOAN
        creditCard:
          $ref: '#/components/schemas/BankingCreditCardAccountV1'
        loan:
          $ref: '#/components/schemas/BankingLoanAccountV3'
        termDeposit:
          items:
            $ref: '#/components/schemas/BankingTermDepositAccountV1'
          type: array
        jointAccountSharingStatus:
          $ref: '#/components/schemas/EnumAdapterJointAccountSharingStatusV1'
        instalments:
          $ref: '#/components/schemas/BankingProductInstalmentsV1'
        isInstalmentDetailAvailable:
          default: false
          description: >-
            `true` if any active or inactive instalment plans are available in
            the Get Instalment Plans endpoints. `false` if instalment plans are
            not applicable to the account.
          type: boolean
      type: object
      required:
        - id
        - bsb
        - balances
        - accountNumber
        - displayName
        - productCategory
        - productName
    ResponseListBankingAccounts:
      oneOf:
        - $ref: '#/components/schemas/ResponseListBankingAccountsV0'
        - $ref: '#/components/schemas/ResponseListBankingAccountsV1'
        - $ref: '#/components/schemas/ResponseListBankingAccountsV2'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/ResponseListBankingAccountsV0'
          V1: '#/components/schemas/ResponseListBankingAccountsV1'
          V2: '#/components/schemas/ResponseListBankingAccountsV2'
    ResponseListBankingTransactionsV0:
      properties:
        version:
          type: string
          default: V0
        data:
          description: List of Transactions matching the filter requirements
          items:
            $ref: '#/components/schemas/DioTransactionV1'
          type: array
        meta:
          $ref: '#/components/schemas/MetaPaginatedTransactionV1'
      required:
        - data
        - meta
      type: object
    ResponseListBankingTransactionsV1:
      properties:
        version:
          type: string
          default: V1
        data:
          description: List of Transactions matching the filter requirements
          items:
            $ref: '#/components/schemas/DioTransactionV3'
          type: array
        meta:
          $ref: '#/components/schemas/MetaPaginatedTransactionV1'
      required:
        - version
        - data
        - meta
      type: object
    DioTransactionV1:
      properties:
        id:
          description: Unique Transaction Identifier
          type: string
          example: 964e06a838a236f3883cb5b19369ddcf63f95f746f7f4035b7d1f67063800298
        amount:
          description: >-
            The value of the transaction. Negative values mean money was
            outgoing from the account
          type: number
          example: 55.66
        amountType:
          description: The general type associated with the amount
          enum:
            - FEE
            - INTEREST_CHARGED
            - INTEREST_PAID
            - TRANSFER_OUTGOING
            - TRANSFER_INCOMING
            - PAYMENT
            - DIRECT_DEBIT
            - OTHER
          example: PAYMENT
          type: string
        currency:
          description: The currency for the transaction amount. AUD assumed if not present
          type: string
          pattern: ^\w{3}$
          default: AUD
        description:
          description: The transaction description as applied by the financial institution
          type: string
          example: Payment for furniture accessories
        reference:
          description: >-
            The reference for the transaction provided by the originating
            institution. Empty string if no data provided
          type: string
          default: ''
        status:
          description: >-
            Status of the transaction whether pending or posted. Note that there
            is currently no provision in the standards to guarantee the ability
            to correlate a pending transaction with an associated posted
            transaction
          enum:
            - PENDING
            - POSTED
          type: string
          example: POSTED
        executionDateTime:
          description: >-
            The time the transaction was executed by the originating customer,
            if available
          type: string
          format: date-time
        postingDateTime:
          description: >-
            The time the transaction was posted. This field is Mandatory if the
            transaction has status POSTED.  This is the time that appears on a
            standard statement
          type: string
          format: date-time
        valueDateTime:
          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
          type: string
          format: date-time
        transactionType:
          description: The type of transaction represented
          enum:
            - BPAY
            - CREDIT_CARD
            - DIRECT_DEPOSIT
            - X2P101
          type: string
          example: BPAY
        bpay:
          $ref: '#/components/schemas/DioTransactionBPAYV1'
        creditCard:
          $ref: '#/components/schemas/DioTransactionCreditCardV1'
        directDeposit:
          $ref: '#/components/schemas/DioTransactionDirectDepositV1'
        x2p101:
          $ref: '#/components/schemas/DioTransactionX2P101V2'
      required:
        - id
        - amount
        - description
        - reference
        - status
        - amountType
      type: object
    MetaPaginatedTransactionV1:
      properties:
        totalPages:
          description: >-
            The total number of pages in the full set. See
            [pagination](https://consumerdatastandardsaustralia.github.io/standards/#pagination).
          type: integer
          x-cds-type: NaturalNumber
          minimum: 0
          example: 1
        totalRecords:
          description: >-
            The total number of records in the full set. See
            [pagination](https://consumerdatastandardsaustralia.github.io/standards/#pagination).
          type: integer
          x-cds-type: NaturalNumber
          minimum: 0
          example: 10
        isQueryParamUnsupported:
          description: Specified if the text filter is not supported
          type: boolean
          example: true
      required:
        - totalPages
        - totalRecords
      type: object
    ResponseListBankingTransactions:
      oneOf:
        - $ref: '#/components/schemas/ResponseListBankingTransactionsV0'
        - $ref: '#/components/schemas/ResponseListBankingTransactionsV1'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/ResponseListBankingTransactionsV0'
          V1: '#/components/schemas/ResponseListBankingTransactionsV1'
    ErrorFieldMissingV1:
      type: object
      properties:
        code:
          description: >-
            Holds an endpoint specific error code. This MAY be a standard CDR
            error code or an application-specific error code.
          type: string
          default: urn:au-cds:error:cds-all:Field/Missing
        title:
          description: Holds a human readable label of the error that is constant per code
          type: string
          default: Missing Required Field
        detail:
          description: >-
            Holds a human readable description of this specific error. The error
            detail SHOULD be the parameter name of the missing field.
          type: string
          example: fieldName missing
        meta:
          description: Holds additional endpoint specific data relevant to the error
          properties:
            urn:
              description: Holds a standard CDR error code
              type: string
              format: uri
              x-cds-type: URIString
              default: urn:au-cds:error:cds-all:Field/Missing
          type: object
      required:
        - code
        - title
        - detail
    ErrorFieldInvalidPageSizeV1:
      type: object
      properties:
        code:
          description: >-
            Holds an endpoint specific error code. This MAY be a standard CDR
            error code or an application-specific error code.
          type: string
          default: urn:au-cds:error:cds-all:Field/InvalidPageSize
        title:
          description: Holds a human readable label of the error that is constant per code
          type: string
          default: Invalid Page Size
        detail:
          description: Holds a human readable description of this specific error.
          type: string
          example: Invalid Page Size Field
        meta:
          description: Holds additional endpoint specific data relevant to the error
          properties:
            urn:
              description: Holds a standard CDR error code
              type: string
              format: uri
              x-cds-type: URIString
              default: urn:au-cds:error:cds-all:Field/InvalidPageSize
          type: object
      required:
        - code
        - title
        - detail
    ErrorFieldInvalidDateTimeV1:
      type: object
      properties:
        code:
          description: >-
            Holds an endpoint specific error code. This MAY be a standard CDR
            error code or an application-specific error code.
          type: string
          default: urn:au-cds:error:cds-all:Field/InvalidDateTime
        title:
          description: Holds a human readable label of the error that is constant per code
          type: string
          default: Invalid Date
        detail:
          description: >-
            Holds a human readable description of this specific error. The error
            detail SHOULD be the parameter name of the invalid date field. The
            error detail MAY include further details explaining the expected
            date value.
          type: string
          example: Invalid Date Time field specified
        meta:
          description: Holds additional endpoint specific data relevant to the error
          properties:
            urn:
              description: Holds a standard CDR error code
              type: string
              format: uri
              x-cds-type: URIString
              default: urn:au-cds:error:cds-all:Field/InvalidDateTime
          type: object
      required:
        - code
        - title
        - detail
    ListBankingTransactions400Item:
      oneOf:
        - $ref: '#/components/schemas/ErrorFieldMissingV1'
        - $ref: '#/components/schemas/ErrorFieldInvalidV1'
        - $ref: '#/components/schemas/ErrorFieldInvalidPageSizeV1'
        - $ref: '#/components/schemas/ErrorFieldInvalidDateTimeV1'
        - $ref: '#/components/schemas/ErrorGeneralExpectedV1'
        - $ref: '#/components/schemas/ErrorHeaderInvalidV1'
      discriminator:
        propertyName: code
        mapping:
          urn:au-cds:error:cds-all:Field/Missing: '#/components/schemas/ErrorFieldMissingV1'
          urn:au-cds:error:cds-all:Field/Invalid: '#/components/schemas/ErrorFieldInvalidV1'
          urn:au-cds:error:cds-all:Field/InvalidPageSize: '#/components/schemas/ErrorFieldInvalidPageSizeV1'
          urn:au-cds:error:cds-all:Field/InvalidDateTime: '#/components/schemas/ErrorFieldInvalidDateTimeV1'
          urn:au-cds:error:cds-all:GeneralError/Expected: '#/components/schemas/ErrorGeneralExpectedV1'
          urn:au-cds:error:cds-all:Header/Invalid: '#/components/schemas/ErrorHeaderInvalidV1'
    ErrorFieldInvalidPageV1:
      type: object
      properties:
        code:
          description: >-
            Holds an endpoint specific error code. This MAY be a standard CDR
            error code or an application-specific error code.
          type: string
          default: urn:au-cds:error:cds-all:Field/InvalidPage
        title:
          description: Holds a human readable label of the error that is constant per code
          type: string
          default: Invalid Page
        detail:
          description: >-
            The page being requested it out of of range. For example, the valid
            pagination range is 5 pages and the client requested page=10). The
            error detail SHOULD be the maximum number of pages that are
            available.
          type: string
          example: Invalid Page
        meta:
          description: Holds additional endpoint specific data relevant to the error
          properties:
            urn:
              description: Holds a standard CDR error code
              type: string
              format: uri
              x-cds-type: URIString
              default: urn:au-cds:error:cds-all:Field/InvalidPage
          type: object
      required:
        - code
        - title
        - detail
    ListBankingTransactions422Item:
      oneOf:
        - $ref: '#/components/schemas/ErrorFieldInvalidPageV1'
      discriminator:
        propertyName: code
        mapping:
          urn:au-cds:error:cds-all:Field/InvalidPage: '#/components/schemas/ErrorFieldInvalidPageV1'
    AdapterNotificationToV1:
      type: object
      properties:
        principalId:
          type: string
          maxLength: 512
          example: f8013e29-f1da-4055-8a13-f4ac747a9217
          deprecated: true
          description: >-
            **Deprecated**  Use `userId` when looking up the User to send a
            notification to. For context about the principal context that
            triggered the notification (if there is one), look at the
            `from.principalId`. 
        userId:
          type: string
          maxLength: 512
          example: 2607fd26-81f6-4563-9e70-7e87e3d61b7c
      required:
        - principalId
        - userId
    AdapterNotificationFromAccountDetailsV1:
      description: Account details.
      type: object
      properties:
        accountId:
          type: string
          maxLength: 255
          example: 0905f95b-4655-4e77-8556-869724f0460e
        relationship:
          $ref: '#/components/schemas/EnumAdapterAccountRelationshipTypeV1'
      required:
        - accountId
        - relationship
    AdapterNotificationFromV1:
      description: Information regarding the user that triggered the notification.
      type: object
      properties:
        principalId:
          type: string
          maxLength: 512
          example: e8013e29-f1da-4055-8a13-f4ac747a9218
        userId:
          type: string
          maxLength: 512
          example: 3607fd26-81f6-4563-9e70-7e87e3d61b7d
        accountDetails:
          type: array
          items:
            $ref: '#/components/schemas/AdapterNotificationFromAccountDetailsV1'
      required:
        - principalId
        - userId
        - accountDetails
    EnumRegisterSoftwareProductStatusV1:
      type: string
      description: Software product status in the CDR Register
      enum:
        - ACTIVE
        - INACTIVE
        - REMOVED
      example: ACTIVE
      x-cds-type: Enum
    EnumRegisterDataRecipientBrandStatusV1:
      type: string
      description: Data Recipient Brand Status in the CDR Register
      enum:
        - ACTIVE
        - INACTIVE
        - REMOVED
      example: ACTIVE
      x-cds-type: Enum
    AdapterNotificationRecipientDetailsV1:
      description: ADR information regarding the arrangement.
      type: object
      properties:
        legalEntityId:
          type: string
          example: 9278f2f1-a08d-47b8-8743-79a478e63734
        legalEntityName:
          type: string
          example: Test Legal Entity
        softwareProductId:
          type: string
          example: 9cc57c33-040a-480f-9df6-03a83d466656
        softwareProductName:
          type: string
          example: Test Software Product
        softwareProductDescription:
          type: string
          example: This is an example of a software product's description
        softwareProductLogoUri:
          type: string
          format: uri
          example: https://biza.io/logo.png
        softwareProductStatus:
          $ref: '#/components/schemas/EnumRegisterSoftwareProductStatusV1'
        dataRecipientBrandName:
          type: string
          example: Test Recipient Brand
        dataRecipientBrandStatus:
          $ref: '#/components/schemas/EnumRegisterDataRecipientBrandStatusV1'
        dataRecipientAccreditationNumber:
          type: string
          example: TESTACCNO000123
      required:
        - legalEntityId
        - legalEntityName
        - softwareProductId
        - softwareProductName
        - softwareProductDescription
        - softwareProductLogoUri
        - softwareProductStatus
        - dataRecipientBrandName
        - dataRecipientBrandStatus
        - dataRecipientAccreditationNumber
    EnumAdapterNotificationTypeV1:
      description: >-

        The Notification Type enumeration lists the types of notifications that
        can be sent. These are explained in the following tables:


        **Notification Type**


        | Enum                              |
        Description                                                                                            
        |

        |-----------------------------------|---------------------------------------------------------------------------------------------------------|

        | ARRANGEMENT_ACTION                | Send a notification regarding an
        arrangement action (e.g. started, amended, stopped, revoked, expired). |

        | SHARING_DISABLED                  | Send a notification regarding a
        pre-approval to non-disclosure event.                                  
        |

        | SHARING_REQUESTED                 | Send a notification regarding a
        non-disclosure to pre-approval sharing request.                        
        |

        | SHARING_REQUEST_ACTION_ONE        | Send a notification regarding a
        sharing request being acted on.                                        
        |

        | SHARING_REQUEST_COMPLETE          | Send a notification regarding a
        sharing request being fully approved or denied.                        
        |

        | SECONDARY_USER_INSTRUCTION_ACTION | Send a notification regarding a
        secondary user instruction being added or removed.                     
        |

        | OTP                               | Send a One Time Password to the
        specified location |

        | PERIODIC_SUMMARY | Send a notification regarding a summary of events
        for a certain time period |
      type: string
      enum:
        - ARRANGEMENT_ACTION
        - SHARING_DISABLED
        - SHARING_REQUESTED
        - SHARING_REQUEST_ACTION_ONE
        - SHARING_REQUEST_COMPLETE
        - SECONDARY_USER_INSTRUCTION_ACTION
        - OTP
        - PERIODIC_SUMMARY
      example: ARRANGEMENT_ACTION
    EnumArrangementActionV1:
      description: Defines an arrangement action.
      type: string
      example: STARTED
      enum:
        - STARTED
        - AMENDED
        - REVOKED
        - EXPIRED
    AdapterNotificationArrangementActionV1:
      description: Send a notification regarding an arrangement action event.
      type: object
      properties:
        grantId:
          type: string
          example: 4f1cc672-88be-4cd8-bbe7-3fb6981b6958
          format: uuid
          description: Grant Identifier associated with this arrangement action
        action:
          $ref: '#/components/schemas/EnumArrangementActionV1'
      required:
        - grantId
        - action
    AdapterNotificationSharingRequestedV1:
      description: >-
        Send a notification regarding a non-disclosure to pre-approval sharing
        request.
      type: object
      properties:
        requestId:
          type: string
          format: uuid
          description: The DOMS Request Identifier this notification relates to
        expiry:
          type: string
          format: date-time
          description: The expiry time of the sharing request.
          example: '2022-08-01'
      required:
        - expiry
    EnumSharingRequestActionV1:
      type: string
      example: APPROVED
      description: The type of action in response to the sharing request.
      enum:
        - APPROVED
        - DENIED
        - EXPIRED
    AdapterNotificationSharingRequestActionV1:
      description: Send a notification regarding a sharing request being acted on.
      type: object
      properties:
        requestId:
          type: string
          format: uuid
          description: The DOMS Request Identifier this notification relates to
        action:
          $ref: '#/components/schemas/EnumSharingRequestActionV1'
        expiry:
          type: string
          format: date-time
          description: The expiry time of the sharing request.
          example: '2023-02-03'
      required:
        - action
        - expiry
    EnumSecondaryUserInstructionActionV1:
      type: string
      description: The type of action applied to the secondary user instruction.
      example: ADDED
      enum:
        - ADDED
        - REMOVED
    AdapterNotificationSecondaryUserV1:
      type: object
      properties:
        principalId:
          type: string
          maxLength: 512
          example: cd309f8be82b0ecdb5cbfe00355eb7a29f1583fd863da8fd4c87eb09dc5b4d61
          deprecated: true
        userId:
          type: string
          maxLength: 512
          example: 835e3f01f36c0bbc60d8841c29398d0ec6f8c596833b0e99bcdd7f2a97cb01e4
      required:
        - principalId
        - userId
    AdapterNotificationSecondaryUserInstructionActionV1:
      description: >-
        Send a notification regarding a secondary user instruction being added
        or removed.
      type: object
      properties:
        action:
          $ref: '#/components/schemas/EnumSecondaryUserInstructionActionV1'
        secondaryUser:
          $ref: '#/components/schemas/AdapterNotificationSecondaryUserV1'
      required:
        - action
        - secondaryUser
    AdapterNotificationOTPActionV1:
      description: Send a One Time Password
      type: object
      properties:
        otpValue:
          type: string
          example: '123456'
        otpType:
          $ref: '#/components/schemas/EnumOtpTypeV1'
        emailAddresses:
          description: Array is mandatory but may be empty
          items:
            $ref: '#/components/schemas/CommonEmailAddressV1'
          type: array
          default: []
        phoneNumbers:
          description: Array is mandatory but may be empty
          items:
            $ref: '#/components/schemas/CommonPhoneNumberV1'
          type: array
          example:
            - fullNumber: '+61439123123'
              number: '0439123123'
              isPreferred: true
              purpose: MOBILE
          default: []
      required:
        - otpType
    EnumAdapterNotificationSummaryPeriodV1:
      description: The period of time this notification summary covers
      type: string
      example: WEEKLY
      enum:
        - WEEKLY
        - MONTHLY
    AdapterNotificationSharingEventV1:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/EnumArrangementActionV1'
        from:
          $ref: '#/components/schemas/AdapterNotificationFromV1'
        recipientDetails:
          $ref: '#/components/schemas/AdapterNotificationRecipientDetailsV1'
        timestamp:
          type: string
          format: date-time
          description: The date and time that this event occurred.
      required:
        - type
        - from
    AdapterNotificationSecondaryUserInstructionV1:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/EnumSecondaryUserInstructionActionV1'
        from:
          $ref: '#/components/schemas/AdapterNotificationFromV1'
        secondaryUser:
          $ref: '#/components/schemas/AdapterNotificationSecondaryUserV1'
        timestamp:
          type: string
          format: date-time
          description: The date and time that this event occurred.
      required:
        - type
        - from
        - secondaryUser
    AdapterNotificationSummaryPeriodicV1:
      description: >-
        A periodic summary of notifications.

        For this type of notification the root fields for `from` and
        `recipientDetails` should be ignored as their values are overridden by
        the individual summary items.
      type: object
      properties:
        period:
          $ref: '#/components/schemas/EnumAdapterNotificationSummaryPeriodV1'
        sharingEvents:
          type: array
          description: List of data sharing events
          items:
            $ref: '#/components/schemas/AdapterNotificationSharingEventV1'
        secondaryUserInstructions:
          type: array
          description: List of secondary user instruction events
          items:
            $ref: '#/components/schemas/AdapterNotificationSecondaryUserInstructionV1'
      required:
        - period
        - sharingEvents
        - secondaryUserInstructions
    AdapterNotificationV1:
      type: object
      description: Individual Notification Event
      properties:
        to:
          type: array
          description: >-
            Information regarding the users that the notification is intended
            for.
          items:
            $ref: '#/components/schemas/AdapterNotificationToV1'
          example:
            - principalId: 6d33f5df-d550-4b35-9618-556155e78c28
              userId: 2a9e9706-30c2-4155-98c9-18d94e523a7a
        from:
          $ref: '#/components/schemas/AdapterNotificationFromV1'
        recipientDetails:
          $ref: '#/components/schemas/AdapterNotificationRecipientDetailsV1'
        notificationType:
          $ref: '#/components/schemas/EnumAdapterNotificationTypeV1'
        arrangementAction:
          $ref: '#/components/schemas/AdapterNotificationArrangementActionV1'
        sharingRequested:
          $ref: '#/components/schemas/AdapterNotificationSharingRequestedV1'
        sharingRequestAction:
          $ref: '#/components/schemas/AdapterNotificationSharingRequestActionV1'
        secondaryUserInstructionAction:
          $ref: >-
            #/components/schemas/AdapterNotificationSecondaryUserInstructionActionV1
        otp:
          $ref: '#/components/schemas/AdapterNotificationOTPActionV1'
        periodicSummary:
          $ref: '#/components/schemas/AdapterNotificationSummaryPeriodicV1'
      required:
        - to
        - notificationType
    RequestSendNotificationV0:
      type: object
      description: Send Notification Request
      properties:
        version:
          type: string
          default: V0
        data:
          description: List of Notifications to be sent as a batch.
          type: array
          items:
            $ref: '#/components/schemas/AdapterNotificationV1'
    RequestSendNotification:
      oneOf:
        - $ref: '#/components/schemas/RequestSendNotificationV0'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/RequestSendNotificationV0'
    ResponseSendNotificationV0:
      properties:
        version:
          type: string
          default: V0
        data:
          $ref: '#/components/schemas/AdapterNotificationReceiptV1'
      required:
        - data
      type: object
    AdapterNotificationReceiptV1:
      description: Response payload from sending a notification.
      type: object
      properties:
        receiptId:
          type: string
          example: d093323e-4ea5-4c94-a7a0-bf2f173bdaae
      required:
        - receiptId
    ResponseSendNotification:
      oneOf:
        - $ref: '#/components/schemas/ResponseSendNotificationV0'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/ResponseSendNotificationV0'
    ResponseGetClosedPrincipalsV0:
      properties:
        version:
          type: string
          default: V0
        data:
          description: List of principal ids that have been recently closed.
          items:
            type: object
            properties:
              principalId:
                description: >-
                  The internal identifier of the entity being shared via CDR. It
                  is the ID that will be supplied to the data sharing calls for
                  customer details, listing accounts, etc.
                type: string
                maxLength: 512
                example: 552375cb-9c00-4fde-a0a0-592904a55355
              timeClosed:
                type: string
                format: date-time
                example: '2017-07-21T17:32:28Z'
            required:
              - principalId
              - timeClosed
          type: array
      required:
        - data
      type: object
    ResponseGetClosedPrincipals:
      oneOf:
        - $ref: '#/components/schemas/ResponseGetClosedPrincipalsV0'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/ResponseGetClosedPrincipalsV0'
    ResponseGetCustomerV0:
      properties:
        version:
          type: string
          default: V0
        data:
          $ref: '#/components/schemas/AdapterCustomerV2'
      required:
        - data
      type: object
    CommonPhysicalAddressWithPurposeV1:
      allOf:
        - $ref: '#/components/schemas/CommonPhysicalAddressV1'
        - properties:
            purpose:
              description: >-
                Enumeration of values indicating the purpose of the physical
                address
              enum:
                - MAIL
                - OTHER
                - PHYSICAL
                - REGISTERED
                - WORK
              type: string
              example: MAIL
          required:
            - purpose
          type: object
    AdapterOrganisationV2:
      properties:
        name:
          description: Name of the organisation
          type: string
          example: Acme Pty Ltd
        tradingName:
          description: Trading Name for organisation, will use name if not specified
          type: string
        abn:
          description: Australian Business Number for the organisation
          type: string
        acn:
          description: >-
            Australian Company Number for the organisation. Required only if an
            ACN is applicable for the organisation type
          type: string
        agentFirstName:
          description: >-
            The first name of the individual providing access on behalf of the
            organisation. For people with single names this field need not be
            present.  The single name should be in the lastName field

            **Deprecated:** Replaced by `firstName` in Get User API
          type: string
          deprecated: true
        agentLastName:
          description: >-
            The last name of the individual providing access on behalf of the
            organisation. For people with single names the single name should be
            in this field

            **Deprecated:** Replaced by `lastName` in Get User API
          type: string
          deprecated: true
          example: Doe
        agentRole:
          description: >-
            The role of the individual identified as the agent who is providing
            authorisation.  Expected to be used for display. Default to
            Unspecified if the role is not known

            **Deprecated:** Replaced by `role` in Get User API
          type: string
          default: Unspecified
          deprecated: true
        establishmentDate:
          description: The date the organisation described was established
          type: string
          format: date
        industryCode:
          description: >-
            [ANZSIC (2006)](http://www.abs.gov.au/anzsic) code for the
            organisation.
          type: string
        acncRegistered:
          description: >-
            True if registered with the ACNC.  False if not. Absent or null if
            not confirmed.
          type: boolean
        lastUpdateTime:
          description: >-
            The date and time that this record was last updated by the customer.
            If no update has occurred then this date should reflect the initial
            creation date for the data
          type: string
          format: date-time
        legalName:
          description: Legal name, if different to the business name
          type: string
        organisationType:
          description: Legal organisation type
          enum:
            - SOLE_TRADER
            - COMPANY
            - PARTNERSHIP
            - TRUST
            - GOVERNMENT_ENTITY
            - OTHER
          type: string
          example: COMPANY
        registeredCountry:
          description: >-
            [ISO 3166 Alpha-3](https://www.iso.org/iso-3166-country-codes.html)
            country code. Assumed to be AUS if absent
          type: string
          default: AUS
          pattern: ^\w{3}$
        physicalAddresses:
          description: >-
            Array is mandatory but may be empty if no valid addresses are held.
            One and only one address may have the purpose of REGISTERED.  Zero
            or one, and no more than one, record may have the purpose of MAIL.
            If zero then the REGISTERED address is to be used for mail
          items:
            $ref: '#/components/schemas/CommonPhysicalAddressWithPurposeV1'
          type: array
      required:
        - agentLastName
        - agentRole
        - name
        - organisationType
      type: object
    DioPersonV1:
      properties:
        firstName:
          description: >-
            For people with single names this field need not be present.  The
            single name should be in the lastName field
          type: string
        lastName:
          description: For people with single names the single name should be in this field
          type: string
          example: Doe
        lastUpdateTime:
          description: >-
            The date and time that this record was last updated by the
            customer.  If no update has occurred then this date should reflect
            the initial creation date for the data
          type: string
          format: date-time
        middleNames:
          description: Field is mandatory but array may be empty
          items:
            type: string
          type: array
          default: []
        occupationCode:
          description: >-
            Value is a valid [ANZSCO v1.2](http://www.abs.gov.au/ANZSCO)
            Standard Occupation classification.
          type: string
        prefix:
          description: >-
            Also known as title or salutation.  The prefix to the name (e.g. Mr,
            Mrs, Ms, Miss, Sir, etc)
          type: string
        suffix:
          description: Used for a trailing suffix to the name (e.g. Jr)
          type: string
        emailAddresses:
          description: >-
            Email Addresses associated with this Person. Array is mandatory but
            may be empty if no email address is held
          items:
            $ref: '#/components/schemas/CommonEmailAddressV1'
          type: array
        phoneNumbers:
          description: Array is mandatory but may be empty if no phone numbers are held
          items:
            $ref: '#/components/schemas/CommonPhoneNumberV1'
          type: array
          default: []
        physicalAddresses:
          description: >-
            Array is mandatory but may be empty if no valid addresses are held.
            One and only one address may have the purpose of REGISTERED.  Zero
            or one, and no more than one, record may have the purpose of MAIL.
            If zero then the REGISTERED address is to be used for mail
          items:
            $ref: '#/components/schemas/CommonPhysicalAddressWithPurposeV1'
          type: array
      required:
        - lastName
        - middleNames
        - emailAddresses
        - phoneNumbers
        - physicalAddresses
      type: object
    AdapterCustomerV2:
      properties:
        id:
          description: Unique Customer Identifier
          type: string
          example: 164063905f23916d5ebe671b7f89ebaa083b7e9125b2d3ae6be2a10e3cb3ba22
        customerType:
          description: The type of customer object that is present
          enum:
            - PERSON
            - ORGANISATION
          type: string
          example: PERSON
        organisation:
          $ref: '#/components/schemas/AdapterOrganisationV2'
        person:
          $ref: '#/components/schemas/DioPersonV1'
      type: object
      required:
        - customerType
    ResponseGetCustomer:
      oneOf:
        - $ref: '#/components/schemas/ResponseGetCustomerV0'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/ResponseGetCustomerV0'
    EnumAccountOpenStatusWithAllV1:
      description: Account Open Status with ALL
      default: ALL
      enum:
        - ALL
        - CLOSED
        - OPEN
      type: string
    ResponseListEnergyAccountsV0:
      properties:
        version:
          type: string
          default: V0
        data:
          description: List of Energy Accounts matching the filter requirements
          items:
            $ref: '#/components/schemas/AdapterEnergyAccountDetailV1'
          type: array
      required:
        - data
      type: object
    ResponseListEnergyAccountsV1:
      properties:
        version:
          type: string
          default: V1
        data:
          description: List of Energy Accounts matching the filter requirements
          items:
            $ref: '#/components/schemas/AdapterEnergyAccountDetailV2'
          type: array
      required:
        - version
        - data
      type: object
    ResponseListEnergyAccountsV2:
      properties:
        version:
          type: string
          default: V2
        data:
          description: List of Energy Accounts matching the filter requirements
          items:
            $ref: '#/components/schemas/AdapterEnergyAccountDetailV3'
          type: array
      required:
        - version
        - data
      type: object
    AdapterAccountCustomerV3:
      properties:
        userId:
          description: The User identifier for the Account relationship.
          type: string
          maxLength: 512
          example: 5bbdb5d20e474ee2f10ecd08deca1b16c89f0eaa94e69167c2475b417db7ec58
        relationship:
          $ref: '#/components/schemas/EnumAdapterAccountRelationshipTypeV1'
        vulnerable:
          description: >-
            Used to flag if the customer is deemed vulnerable by the data
            holder. Has implications for the consent dashboard and joint account
            notifications.

            **Note:** Required if the Adapter is authoritative for the
            `Vulnerability Status` truth cluster.
          type: boolean
      type: object
      required:
        - userId
        - relationship
    EnumElectricityServicePointDeviceTypeV1:
      description: The device type of service point
      type: string
      enum:
        - NMI
      default: NMI
    AdapterServicePointV1:
      type: object
      properties:
        servicePointId:
          type: string
          example: 5bbdb5d20e474ee2f10ecd08deca1b16c89f0eaa94e69167c2475b417db7ec58
        deviceType:
          $ref: '#/components/schemas/EnumElectricityServicePointDeviceTypeV1'
      required:
        - servicePointId
        - deviceType
    EnergyAccountPlanOverviewV1:
      description: Mandatory if openStatus is OPEN
      properties:
        displayName:
          description: The name of the plan if one exists
          type: string
          example: Solar Saver
        startDate:
          description: The start date of the applicability of this plan
          type: string
          format: date
          x-cds-type: DateString
          example: '2021-01-01'
        endDate:
          description: The end date of the applicability of this plan
          type: string
          format: date
          x-cds-type: DateString
          example: '2023-07-01'
      required:
        - startDate
      type: object
    EnumEnergyFuelTypeV1:
      description: The fuel types covered by the plan
      enum:
        - ELECTRICITY
        - GAS
        - DUAL
      type: string
      example: ELECTRICITY
    EnergyMeteringChargeV1:
      properties:
        displayName:
          description: Display name of the charge
          type: string
          example: Base Metering Charge
        description:
          description: Description of the charge
          type: string
          example: A metering charge applied to all bills
        minimumValue:
          description: >-
            Minimum value of the charge if the charge is a range or the absolute
            value of the charge if no range is specified
          type: string
          x-cds-type: AmountString
          example: '1.00'
        maximumValue:
          description: The upper limit of the charge if the charge could occur in a range
          type: string
          x-cds-type: AmountString
          example: '15.00'
        period:
          description: >-
            The charges that occur on a schedule indicates the frequency.
            Formatted according to [ISO 8601
            Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations)
            (excludes recurrence syntax)
          type: string
          x-cds-type: DurationString
          example: P1M
      required:
        - displayName
        - minimumValue
      type: object
    EnumEnergyPlanContractPricingModelV1:
      description: >
        The pricing model for the contract.  Contracts for gas must

        use SINGLE_RATE.


        Note that the detail for the enumeration values are:


        - **SINGLE_RATE**: all energy usage is charged at a single unit rate no
        matter when it is consumed. Multiple unit rates may exist that
        correspond to varying volumes of usage i.e. a 'block' or 'step' tariff
        (first 50kWh @ X cents, next 50kWh at Y cents etc

        - **SINGLE_RATE_CONT_LOAD**: As per *SINGLE_RATE* but with an
        additional, separate unit rate charged for all energy usage from a
        controlled load i.e. separately metered appliance like hot water
        service, pool pump etc.

        - **TIME_OF_USE**: energy usage is charged at unit rates that vary
        dependent on time of day and day of week that the energy is consumed

        - **TIME_OF_USE_CONT_LOAD**: Same as *TIME_OF_USE*, but with an
        additional, separate unit rate charged for all energy usage from a
        controlled load i.e. separately metered appliance like hot water
        service, pool pump etc.

        - **FLEXIBLE**: energy usage is charged at unit rates that vary based on
        external factors

        - **FLEXIBLE_CONT_LOAD**: Same as *FLEXIBLE* but with an additional,
        separate unit rate charged for all energy usage from a controlled load
        i.e. separately metered appliance like hot water service, pool pump etc.

        - **QUOTA**: All energy usage is charged at a single fixed rate, up to a
        specified usage quota/allowance. All excess usage beyond the allowance
        is then charged at a single unit rate (may not be the best way to
        explain it but it is essentially a 'subscription'

        or telco style product i.e. $50/month for up to 150kWh included usage)
      enum:
        - SINGLE_RATE
        - SINGLE_RATE_CONT_LOAD
        - TIME_OF_USE
        - TIME_OF_USE_CONT_LOAD
        - FLEXIBLE
        - FLEXIBLE_CONT_LOAD
        - QUOTA
      type: string
      example: SINGLE_RATE
    EnumEnergyPlanContractTimeZoneV1:
      description: >-
        Required if pricingModel is set to TIME_OF_USE.  Defines the time zone
        to use for calculation of the time of use thresholds. Defaults to AEST
        if absent
      enum:
        - LOCAL
        - AEST
      type: string
      example: AEST
    EnumEnergyPaymentMethodV1:
      description: Payment method
      enum:
        - PAPER_BILL
        - CREDIT_CARD
        - DIRECT_DEBIT
        - BPAY
        - OTHER
      type: string
      example: CREDIT_CARD
    EnergyPlanIntrinsicGreenPowerV1:
      description: >-
        Describes intrinsic green power for the plan.  If present then the plan
        includes a percentage of green power in the base plan. Should not be
        present for gas contracts
      properties:
        greenPercentage:
          description: Percentage of green power intrinsically included in the plan
          type: string
          x-cds-type: RateString
          example: '0.95'
      required:
        - greenPercentage
      type: object
    EnumEnergyUsageMeasureUnitV1:
      description: The measurement unit. Assumed to be KWH if absent
      enum:
        - KWH
        - KVA
        - KVAR
        - KVARH
        - KW
        - DAYS
        - METER
        - MONTH
      default: KWH
      type: string
      example: KWH
    EnergyPlanRateV1:
      description: Rate
      properties:
        unitPrice:
          description: Unit price of usage per measure unit (exclusive of GST)
          type: string
          x-cds-type: AmountString
          example: '0.044'
        measureUnit:
          $ref: '#/components/schemas/EnumEnergyUsageMeasureUnitV1'
        volume:
          description: >-
            Volume that this rate applies to. Only applicable for 'stepped'
            rates where different rates apply for different volumes of usage in
            a period
          type: number
          example: 145
      required:
        - unitPrice
      type: object
    EnergyPlanControlledLoadSingleRateV1:
      description: >-
        Object representing a single controlled load rate.  Required if
        rateBlockUType is singleRate
      properties:
        displayName:
          description: Display name of the controlled load rate
          type: string
          example: Single Rate Charge
        description:
          description: Description of the controlled load rate
          type: string
        dailySupplyCharge:
          description: >-
            The daily supply charge (exclusive of GST) for this controlled load
            tier
          type: string
          x-cds-type: AmountString
        rates:
          description: Array of controlled load rates in order of usage volume
          items:
            $ref: '#/components/schemas/EnergyPlanRateV1'
          type: array
      required:
        - displayName
        - rates
      type: object
    EnumEnergyDayV1:
      description: Day
      enum:
        - SUN
        - MON
        - TUE
        - WED
        - THU
        - FRI
        - SAT
        - PUBLIC_HOLIDAYS
      type: string
      example: MON
    EnumEnergyControlledLoadTimeOfUseRateTypeV1:
      description: The type of usage that the rate applies to
      enum:
        - PEAK
        - OFF_PEAK
        - SHOULDER
        - SOLAR_SPONGE
      type: string
      example: PEAK
    EnergyPlanControlledLoadTimeOfUseRateV1:
      properties:
        displayName:
          description: Display name of the controlled load rate
          type: string
          example: Time of use charge applied
        description:
          description: Description of the controlled load rate
          type: string
        dailySupplyCharge:
          description: >-
            The daily supply charge (exclusive of GST) for this controlled load
            tier
          type: string
          x-cds-type: AmountString
        rates:
          description: Array of controlled load rates in order of usage volume
          items:
            $ref: '#/components/schemas/EnergyPlanRateV1'
          type: array
        timeOfUse:
          description: Array of times of use.
          items:
            properties:
              days:
                description: The days that the rate applies to
                items:
                  $ref: '#/components/schemas/EnumEnergyDayV1'
                type: array
                example:
                  - PUBLIC_HOLIDAYS
              startTime:
                description: >-
                  The beginning of the time period per day for which the
                  controlled load rate applies. Required if endTime provided

                  Formatted according to [ISO 8601
                  Times](https://en.wikipedia.org/wiki/ISO_8601#Times). If the
                  time is provided without a UTC offset, the time zone will be
                  determined by the value of EnergyPlanContract.timeZone.
                type: string
                x-cds-type: TimeString
                example: 17:00:00.000+10:00
              endTime:
                description: >-
                  The end of the time period per day for which the controlled
                  load rate applies. Required if startTime provided

                  Formatted according to [ISO 8601
                  Times](https://en.wikipedia.org/wiki/ISO_8601#Times). If the
                  time is provided without a UTC offset, the time zone will be
                  determined by the value of EnergyPlanContract.timeZone.
                type: string
                x-cds-type: TimeString
                example: 20:59:59.999+10:00
              additionalInfo:
                description: >-
                  Display text providing more information on the controlled
                  load, for e.g. controlled load availability if specific
                  day/time is not known. Required if startTime and endTime
                  absent or if additionalInfoUri provided
                type: string
              additionalInfoUri:
                description: >-
                  Optional link to additional information regarding the
                  controlled load
                type: string
                format: uri
                x-cds-type: URIString
            type: object
            x-conditional:
              - startTime
              - endTime
              - additionalInfo
          type: array
        type:
          $ref: '#/components/schemas/EnumEnergyControlledLoadTimeOfUseRateTypeV1'
      required:
        - displayName
        - rates
        - timeOfUse
        - type
      type: object
    EnergyPlanControlledLoadV1:
      properties:
        displayName:
          description: A display name for the controlled load
          type: string
          example: Electric hot water system
        rateBlockUType:
          description: Specifies the type of controlled load rate
          enum:
            - singleRate
            - timeOfUseRates
          type: string
          example: singleRate
        startDate:
          description: Optional start date of the application of the controlled load rate
          type: string
          format: date
          x-cds-type: DateString
          example: '2021-10-23'
        endDate:
          description: Optional end date of the application of the controlled load rate
          type: string
          format: date
          x-cds-type: DateString
          example: '2022-04-30'
        singleRate:
          $ref: '#/components/schemas/EnergyPlanControlledLoadSingleRateV1'
        timeOfUseRates:
          description: >-
            Array of objects representing time of use rates.  Required if
            rateBlockUType is timeOfUseRates
          items:
            $ref: '#/components/schemas/EnergyPlanControlledLoadTimeOfUseRateV1'
          type: array
      required:
        - displayName
        - rateBlockUType
      type: object
      x-conditional:
        - singleRate
        - timeOfUseRates
    EnumEnergyPlanIncentiveCategoryV1:
      description: The type of the incentive
      enum:
        - GIFT
        - ACCOUNT_CREDIT
        - OTHER
      type: string
      example: ACCOUNT_CREDIT
    EnergyPlanIncentiveV1:
      description: Incentives related to an Energy Plan
      properties:
        displayName:
          description: The display name of the incentive
          type: string
          example: Pay Early Discount
        description:
          description: The description of the incentive
          type: string
          example: Pay Early and Receive a 5% Discount
        category:
          $ref: '#/components/schemas/EnumEnergyPlanIncentiveCategoryV1'
        eligibility:
          description: A display message outlining an eligibility criteria that may apply
          type: string
          example: Pay by the due date and you will be credited 5% off your next bill
      required:
        - category
        - description
        - displayName
      type: object
    EnumEnergyPlanDiscountTypeV1:
      description: The type of the discount
      enum:
        - CONDITIONAL
        - GUARANTEED
        - OTHER
      type: string
      example: CONDITIONAL
    EnumEnergyPlanDiscountCategoryV1:
      description: >-
        The type of the discount.  Mandatory if the discount type is
        `CONDITIONAL`
      enum:
        - PAY_ON_TIME
        - DIRECT_DEBIT
        - GUARANTEED_DISCOUNT
        - OTHER
      type: string
      example: GUARANTEED_DISCOUNT
    EnumEnergyPlanDiscountMethodV1:
      description: The method of calculation of the discount
      enum:
        - percentOfBill
        - percentOfUse
        - fixedAmount
        - percentOverThreshold
      type: string
      example: percentOfBill
    EnergyPlanDiscountPercentOfBillV1:
      description: Required if methodUType is percentOfBill
      properties:
        rate:
          description: The rate of the discount applied to the bill amount
          type: string
          x-cds-type: RateString
          example: '0.05'
      required:
        - rate
      type: object
    EnergyPlanDiscountPercentOfUseV1:
      description: Required if methodUType is percentOfUse
      properties:
        rate:
          description: The rate of the discount applied to the usageamount
          type: string
          x-cds-type: RateString
          example: '0.05'
      required:
        - rate
      type: object
    EnergyPlanDiscountFixedAmountV1:
      description: Required if methodUType is fixedAmount
      properties:
        amount:
          description: The amount of the discount
          type: string
          x-cds-type: AmountString
          example: '15.00'
      required:
        - amount
      type: object
    EnergyPlanDiscountPercentOverThresholdV1:
      description: Required if methodUType is percentOverThreshold
      properties:
        rate:
          description: The rate of the discount over the usage amount
          type: string
          x-cds-type: RateString
          example: '0.05'
        usageAmount:
          description: The usage amount threshold above which the discount applies
          type: string
          x-cds-type: AmountString
          example: '1.15'
      required:
        - rate
        - usageAmount
      type: object
    EnergyPlanDiscountV1:
      description: Discount to apply to an Energy Plan
      properties:
        displayName:
          description: The display name of the discount
          type: string
          example: Pensioner Discount
        description:
          description: The description of the discount
          type: string
          example: Provide Pensioner card and you will receive a 15% discount
        type:
          $ref: '#/components/schemas/EnumEnergyPlanDiscountTypeV1'
        category:
          $ref: '#/components/schemas/EnumEnergyPlanDiscountCategoryV1'
        endDate:
          description: >-
            Optional end date for the discount after which the discount is no
            longer available
          type: string
          format: date
          x-cds-type: DateString
          example: '2023-01-01'
        methodUType:
          $ref: '#/components/schemas/EnumEnergyPlanDiscountMethodV1'
        percentOfBill:
          $ref: '#/components/schemas/EnergyPlanDiscountPercentOfBillV1'
        percentOfUse:
          $ref: '#/components/schemas/EnergyPlanDiscountPercentOfUseV1'
        fixedAmount:
          $ref: '#/components/schemas/EnergyPlanDiscountFixedAmountV1'
        percentOverThreshold:
          $ref: '#/components/schemas/EnergyPlanDiscountPercentOverThresholdV1'
      required:
        - displayName
        - methodUType
        - type
      type: object
      x-conditional:
        - percentOfBill
        - percentOfUse
        - fixedAmount
        - percentOverThreshold
    EnumEnergyPlanGreenPowerChargeSchemeV1:
      description: The applicable green power scheme
      enum:
        - GREENPOWER
        - OTHER
      type: string
      example: GREENPOWER
    EnumEnergyPlanGreenPowerChargeTypeV1:
      description: The type of charge
      enum:
        - FIXED_PER_DAY
        - FIXED_PER_WEEK
        - FIXED_PER_MONTH
        - FIXED_PER_UNIT
        - PERCENT_OF_USE
        - PERCENT_OF_BILL
      type: string
      example: FIXED_PER_DAY
    EnergyPlanGreenPowerChargeTierV1:
      description: >-
        Charge tier based on the percentage of green power used for the period
        implied by the type.
      properties:
        percentGreen:
          description: The upper percentage of green power used applicable for this tier
          type: string
          x-cds-type: RateString
          example: '0.90'
        rate:
          description: The rate of the charge if the type implies the application of a rate
          type: string
          x-cds-type: RateString
          example: '0.345'
        amount:
          description: >-
            The amount of the charge if the type implies the application of a
            fixed amount
          type: string
          x-cds-type: AmountString
          example: '10.00'
      required:
        - percentGreen
      type: object
      x-conditional:
        - rate
        - amount
    EnergyPlanGreenPowerChargeV1:
      properties:
        displayName:
          description: The display name of the charge
          type: string
          example: Green Power Surcharge
        description:
          description: The description of the charge
          type: string
          example: A surcharge applied for saving the planet
        scheme:
          $ref: '#/components/schemas/EnumEnergyPlanGreenPowerChargeSchemeV1'
        type:
          $ref: '#/components/schemas/EnumEnergyPlanGreenPowerChargeTypeV1'
        tiers:
          description: >-
            Array of charge tiers based on the percentage of green power used
            for the period implied by the type.  Array is in order of increasing
            percentage of green power
          items:
            $ref: '#/components/schemas/EnergyPlanGreenPowerChargeTierV1'
          type: array
      required:
        - displayName
        - scheme
        - tiers
        - type
      type: object
    EnumEnergyPlanEligibilityTypeV1:
      description: >-
        The type of the eligibility restriction. The `CONTINGENT_PLAN` value
        indicates that the plan is contingent on the customer taking up an
        alternate fuel plan from the same retailer (for instance, if the
        fuelType is `ELECTRICITY` then a `GAS` plan from the same retailer must
        be taken up)
      enum:
        - EXISTING_CUST
        - EXISTING_POOL
        - EXISTING_SOLAR
        - EXISTING_BATTERY
        - EXISTING_SMART_METER
        - EXISTING_BASIC_METER
        - SENIOR_CARD
        - SMALL_BUSINESS
        - NO_SOLAR_FIT
        - NEW_CUSTOMER
        - ONLINE_ONLY
        - REQ_EQUIP_SUPPLIER
        - THIRD_PARTY_ONLY
        - SPORT_CLUB_MEMBER
        - ORG_MEMBER
        - SPECIFIC_LOCATION
        - MINIMUM_USAGE
        - LOYALTY_MEMBER
        - GROUP_BUY_MEMBER
        - CONTINGENT_PLAN
        - OTHER
      type: string
      example: EXISTING_CUST
    EnergyPlanEligibilityV1:
      properties:
        type:
          $ref: '#/components/schemas/EnumEnergyPlanEligibilityTypeV1'
        information:
          description: >-
            Information of the eligibility restriction specific to the type of
            the restriction
          type: string
          example: Eligibility restrictions apply for this restriction
        description:
          description: A description of the eligibility restriction
          type: string
          example: Must be a remote property
      required:
        - information
        - type
      type: object
    EnumEnergyPlanFeeTypeV1:
      description: The type of the fee
      enum:
        - EXIT
        - ESTABLISHMENT
        - LATE_PAYMENT
        - DISCONNECTION
        - DISCONNECT_MOVE_OUT
        - DISCONNECT_NON_PAY
        - RECONNECTION
        - CONNECTION
        - PAYMENT_PROCESSING
        - CC_PROCESSING
        - CHEQUE_DISHONOUR
        - DD_DISHONOUR
        - MEMBERSHIP
        - CONTRIBUTION
        - PAPER_BILL
        - OTHER
      type: string
      example: ESTABLISHMENT
    EnumEnergyPlanFeeTermV1:
      description: The term of the fee
      enum:
        - FIXED
        - 1_YEAR
        - 2_YEAR
        - 3_YEAR
        - 4_YEAR
        - 5_YEAR
        - PERCENT_OF_BILL
        - ANNUAL
        - DAILY
        - WEEKLY
        - MONTHLY
        - BIANNUAL
        - VARIABLE
      type: string
      example: FIXED
    EnergyPlanFeeV1:
      description: Energy Plan Fee Value
      properties:
        type:
          $ref: '#/components/schemas/EnumEnergyPlanFeeTypeV1'
        term:
          $ref: '#/components/schemas/EnumEnergyPlanFeeTermV1'
        amount:
          description: The fee amount. Required if term is not `PERCENT_OF_BILL`
          type: string
          x-cds-type: AmountString
          example: '1.55'
        rate:
          description: The fee rate. Required if term is `PERCENT_OF_BILL`
          type: string
          x-cds-type: RateString
          example: '0.10'
        description:
          description: A description of the fee
          type: string
          example: Initial Setup Charge
      required:
        - term
        - type
      type: object
      x-conditional:
        - amount
        - rate
    EnumEnergyPlanSolarFeedInTariffSchemeTypeV1:
      description: The applicable scheme
      enum:
        - PREMIUM
        - OTHER
      type: string
      example: PREMIUM
    EnumEnergyPlanSolarFeedInTariffPayerTypeV1:
      description: The type of the payer
      enum:
        - GOVERNMENT
        - RETAILER
      type: string
      example: RETAILER
    EnumEnergyTariffTimeVaryingTariffTypeV1:
      description: The type of the charging time period. If absent applies to all periods
      enum:
        - PEAK
        - OFF_PEAK
        - SHOULDER
      type: string
      example: PEAK
    EnergyPlanSolarFeedInTariffV1:
      properties:
        displayName:
          description: The name of the tariff
          type: string
          example: Solar Feed In Tariff
        description:
          description: A description of the tariff
          type: string
          example: A base charge for feeding back into the grid
        scheme:
          $ref: '#/components/schemas/EnumEnergyPlanSolarFeedInTariffSchemeTypeV1'
        payerType:
          $ref: '#/components/schemas/EnumEnergyPlanSolarFeedInTariffPayerTypeV1'
        tariffUType:
          description: The type of the tariff
          enum:
            - singleTariff
            - timeVaryingTariffs
          type: string
          example: singleTariff
        singleTariff:
          description: >-
            Represents a constant tariff.  Mandatory if tariffUType is set to
            singleTariff
          properties:
            amount:
              description: The tariff amount
              type: string
              x-cds-type: AmountString
              example: '0.05'
          required:
            - amount
          type: object
        timeVaryingTariffs:
          description: >-
            Represents a tariff based on time.  Mandatory if tariffUType is set
            to timeVaryingTariffs
          properties:
            type:
              $ref: '#/components/schemas/EnumEnergyTariffTimeVaryingTariffTypeV1'
            amount:
              description: The tariff amount
              type: string
              x-cds-type: AmountString
              example: '0.13'
            timeVariations:
              description: Array of time periods for which this tariff is applicable
              items:
                properties:
                  days:
                    description: >-
                      The days that the tariff applies to. At least one entry
                      required
                    items:
                      $ref: '#/components/schemas/EnumEnergyDayV1'
                    type: array
                    minItems: 1
                  startTime:
                    description: >-
                      The beginning of the time period per day for which the
                      tariff applies.  If absent assumes start of day (ie.
                      midnight)
                    type: string
                    x-cds-type: TimeString
                    example: '12:00'
                  endTime:
                    description: >-
                      The end of the time period per day for which the tariff
                      applies.  If absent assumes end of day (ie. one second
                      before midnight)
                    type: string
                    x-cds-type: TimeString
                    example: '23:00'
                required:
                  - days
                type: object
              type: array
          required:
            - amount
            - timeVariations
          type: object
      required:
        - displayName
        - payerType
        - scheme
        - tariffUType
      type: object
      x-conditional:
        - singleTariff
        - timeVaryingTariffs
    EnumEnergyPlanTariffTypeV1:
      description: Type of charge. Assumed to be `OTHER` if absent
      default: OTHER
      enum:
        - ENVIRONMENTAL
        - REGULATED
        - NETWORK
        - METERING
        - RETAIL_SERVICE
        - RCTI
        - OTHER
      type: string
      example: OTHER
    EnumEnergyTariffPeriodTimeZoneV1:
      description: >-
        Specifies the charge specific time zone for calculation of the time of
        use thresholds. If absent, timezone value in EnergyPlanContract is
        assumed
      enum:
        - LOCAL
        - AEST
      type: string
      example: AEST
    EnergyPlanTariffPeriodSingleRateV1:
      description: >-
        Object representing a single rate.  Required if rateBlockUType is
        singleRate
      properties:
        displayName:
          description: Display name of the rate
          type: string
          example: Single Rate Charge
        description:
          description: Description of the rate
          type: string
          example: A single universal rate
        generalUnitPrice:
          description: >-
            The block rate (unit price) for any usage above the included fixed
            usage, in dollars per kWh inclusive of GST.  Only required if
            pricingModel field is `QUOTA`
          type: string
          x-cds-type: AmountString
          example: '0.12'
        rates:
          description: Array of controlled load rates in order of usage volume
          items:
            $ref: '#/components/schemas/EnergyPlanRateV1'
          type: array
        period:
          description: >-
            Usage period for which the block rate applies. Formatted according
            to [ISO 8601
            Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations)
            (excludes recurrence syntax)
          type: string
          x-cds-type: DurationString
          example: PT2H30M
      required:
        - displayName
        - rates
      type: object
      x-conditional:
        - generalUnitPrice
    EnumEnergyTariffPeriodTimeOfUseRateTypeV1:
      description: The type of usage that the rate applies to
      enum:
        - PEAK
        - OFF_PEAK
        - SHOULDER
        - SHOULDER1
        - SHOULDER2
      type: string
      example: PEAK
    EnergyPlanTariffPeriodTimeOfUseRateV1:
      properties:
        displayName:
          description: Display name of the rate
          type: string
          example: Time of use charge applied
        description:
          description: Description of the rate
          type: string
          example: Rate applied based on the time the energy is used
        rates:
          description: Array of controlled load rates in order of usage volume
          items:
            $ref: '#/components/schemas/EnergyPlanRateV1'
          type: array
        timeOfUse:
          description: Array of times of use
          items:
            properties:
              days:
                description: The days that the rate applies to
                items:
                  $ref: '#/components/schemas/EnumEnergyDayV1'
                type: array
                example:
                  - MON
                  - TUE
                  - WED
                  - THU
                  - FRI
              startTime:
                description: >-
                  Start of the period

                  Formatted according to [ISO 8601
                  Times](https://en.wikipedia.org/wiki/ISO_8601#Times). If the
                  time is provided without a UTC offset, the time zone will be
                  determined by the value of EnergyPlanContract.timeZone.
                type: string
                x-cds-type: TimeString
                example: 17:00:00.000+10:00
              endTime:
                description: >-
                  End of the period

                  Formatted according to [ISO 8601
                  Times](https://en.wikipedia.org/wiki/ISO_8601#Times). If the
                  time is provided without a UTC offset, the time zone will be
                  determined by the value of EnergyPlanContract.timeZone.
                type: string
                x-cds-type: TimeString
                example: 20:59:59.999+10:00
            required:
              - days
              - endTime
              - startTime
            type: object
          type: array
        type:
          $ref: '#/components/schemas/EnumEnergyTariffPeriodTimeOfUseRateTypeV1'
      required:
        - displayName
        - rates
        - timeOfUse
        - type
      type: object
    EnumEnergyDemandMeasureUnitV1:
      description: The measurement unit of rate. Assumed to be KVA if absent
      enum:
        - KWH
        - KVA
        - KVAR
        - KVARH
        - KW
        - DAYS
        - METER
        - MONTH
      type: string
      example: KWH
    EnumEnergyPlanTariffMeasurementPeriodV1:
      description: Application period for the demand tariff
      enum:
        - DAY
        - MONTH
        - TARIFF_PERIOD
      type: string
      example: DAY
    EnumEnergyPlanTariffChargePeriodV1:
      description: Charge period for the demand tariff
      enum:
        - DAY
        - MONTH
        - TARIFF_PERIOD
      type: string
      example: DAY
    EnergyPlanTariffDemandChargeV1:
      properties:
        displayName:
          description: Display name of the charge
          type: string
          example: Demand Charge
        description:
          description: Description of the charge
          type: string
          example: A tariff applied based on the level of demand
        amount:
          description: The charge amount per  measure unit exclusive of GST
          type: string
          x-cds-type: AmountString
          example: '0.2444'
        measureUnit:
          $ref: '#/components/schemas/EnumEnergyDemandMeasureUnitV1'
        startTime:
          description: Start of the period
          type: string
          x-cds-type: TimeString
          example: 06:45:00Z
        endTime:
          description: End of the period
          type: string
          x-cds-type: TimeString
          example: 21:45:00Z
        days:
          description: The days that the demand tariff applies to
          items:
            $ref: '#/components/schemas/EnumEnergyDayV1'
          type: array
        minDemand:
          default: '0.00'
          description: >-
            Minimum demand for this demand tariff in kW.  If absent then 0 is
            assumed
          type: string
          x-cds-type: AmountString
        maxDemand:
          description: >-
            Maximum demand for this demand tariff in kW.  If present, must be
            higher than the value of the minDemand field
          type: string
          x-cds-type: AmountString
          example: '15.00'
        measurementPeriod:
          $ref: '#/components/schemas/EnumEnergyPlanTariffMeasurementPeriodV1'
        chargePeriod:
          $ref: '#/components/schemas/EnumEnergyPlanTariffChargePeriodV1'
      required:
        - amount
        - chargePeriod
        - displayName
        - endTime
        - measurementPeriod
        - startTime
      type: object
    EnergyPlanTariffPeriodV1:
      properties:
        type:
          $ref: '#/components/schemas/EnumEnergyPlanTariffTypeV1'
        displayName:
          description: The name of the tariff period
          type: string
          example: Plan Tariff
        startDate:
          description: >-
            The start date of the tariff period in a calendar year.  Formatted
            in mm-dd format
          type: string
          pattern: ^\d\d-\d\d$
          example: 08-01
        endDate:
          description: >-
            The end date of the tariff period in a calendar year.  Formatted in
            mm-dd format
          type: string
          pattern: ^\d\d-\d\d$
          example: 12-01
        dailySupplyCharges:
          description: >-
            The amount of access charge for the tariff period, in dollars per
            day exclusive of GST.
          type: string
          x-cds-type: AmountString
          example: '1.00'
        timeZone:
          $ref: '#/components/schemas/EnumEnergyTariffPeriodTimeZoneV1'
        rateBlockUType:
          description: Specifies the type of rate applicable to this tariff period
          enum:
            - singleRate
            - timeOfUseRates
            - demandCharges
          type: string
          example: singleRate
        singleRate:
          $ref: '#/components/schemas/EnergyPlanTariffPeriodSingleRateV1'
        timeOfUseRates:
          description: >-
            Array of objects representing time of use rates.  Required if
            rateBlockUType is timeOfUseRates
          items:
            $ref: '#/components/schemas/EnergyPlanTariffPeriodTimeOfUseRateV1'
          type: array
        demandCharges:
          description: >-
            Array of demand charges.  Required if rateBlockUType is
            demandCharges
          items:
            $ref: '#/components/schemas/EnergyPlanTariffDemandChargeV1'
          type: array
      required:
        - displayName
        - endDate
        - rateBlockUType
        - startDate
      type: object
      x-conditional:
        - singleRate
        - timeOfUseRates
        - demandCharges
    EnergyPlanContractV1:
      properties:
        additionalFeeInformation:
          description: >-
            Free text field containing additional information of the fees for
            this contract
          type: string
          example: Additional Solar Feed In Fee
        pricingModel:
          $ref: '#/components/schemas/EnumEnergyPlanContractPricingModelV1'
        timeZone:
          $ref: '#/components/schemas/EnumEnergyPlanContractTimeZoneV1'
        isFixed:
          description: Flag indicating whether prices are fixed or variable
          type: boolean
          example: true
        variation:
          description: >-
            Free text description of price variation policy and conditions for
            the contract.  Mandatory if isFixed is false
          type: string
          example: Price Variations possible by calling support center
        onExpiryDescription:
          description: >-
            Free text field that describes what will occur on or prior to expiry
            of the fixed contract term or benefit period
          type: string
          example: >-
            On expiry of the contract the price will revert to the spot price at
            any given time
        paymentOption:
          description: Payment options for this contract
          items:
            $ref: '#/components/schemas/EnumEnergyPaymentMethodV1'
          type: array
        intrinsicGreenPower:
          $ref: '#/components/schemas/EnergyPlanIntrinsicGreenPowerV1'
        controlledLoad:
          description: >-
            Required if pricing model is SINGLE_RATE_CONT_LOAD or
            TIME_OF_USE_CONT_LOAD or FLEXIBLE_CONT_LOAD
          items:
            $ref: '#/components/schemas/EnergyPlanControlledLoadV1'
          type: array
        incentives:
          description: Optional list of incentives available for the contract
          items:
            $ref: '#/components/schemas/EnergyPlanIncentiveV1'
          type: array
        discounts:
          description: Optional list of discounts available for the contract
          items:
            $ref: '#/components/schemas/EnergyPlanDiscountV1'
          type: array
        greenPowerCharges:
          description: Optional list of charges applicable to green power
          items:
            $ref: '#/components/schemas/EnergyPlanGreenPowerChargeV1'
          type: array
        eligibility:
          description: Eligibility restrictions or requirements
          items:
            $ref: '#/components/schemas/EnergyPlanEligibilityV1'
          type: array
        fees:
          description: An array of fees applicable to the plan
          items:
            $ref: '#/components/schemas/EnergyPlanFeeV1'
          type: array
        solarFeedInTariff:
          description: Array of feed in tariffs for solar power
          items:
            $ref: '#/components/schemas/EnergyPlanSolarFeedInTariffV1'
          type: array
        tariffPeriod:
          description: Array of tariff periods
          items:
            $ref: '#/components/schemas/EnergyPlanTariffPeriodV1'
          type: array
      required:
        - isFixed
        - paymentOption
        - pricingModel
        - tariffPeriod
      type: object
      x-conditional:
        - timeZone
        - variation
        - controlledLoad
    EnergyAccountPlanDetailV1:
      description: >-
        Detail on the plan applicable to this account. Mandatory if openStatus
        is OPEN
      properties:
        fuelType:
          $ref: '#/components/schemas/EnumEnergyFuelTypeV1'
        isContingentPlan:
          default: false
          description: >-
            Flag that indicates that the plan is contingent on the customer
            taking up an alternate fuel plan from the same retailer (for
            instance, if the fuelType is `ELECTRICITY` then a `GAS` plan from
            the same retailer must be taken up). Has no meaning if the plan has
            a fuelType of `DUAL`. If absent the value is assumed to be false
          type: boolean
        meteringCharges:
          description: Charges for metering included in the plan
          items:
            $ref: '#/components/schemas/EnergyMeteringChargeV1'
          type: array
        gasContract:
          $ref: '#/components/schemas/EnergyPlanContractV1'
        electricityContract:
          $ref: '#/components/schemas/EnergyPlanContractV1'
      required:
        - fuelType
      type: object
      x-conditional:
        - gasContract
        - electricityContract
    EnergyAccountAuthorisedContactV1:
      properties:
        firstName:
          description: >-
            For people with single names this field need not be present. The
            single name should be in the lastName field
          type: string
          example: John
        lastName:
          description: For people with single names the single name should be in this field
          type: string
          example: Doe
        middleNames:
          description: Field is mandatory but array may be empty
          items:
            type: string
          type: array
          example:
            - Jefferey
        prefix:
          description: >-
            Also known as title or salutation. The prefix to the name (e.g. Mr,
            Mrs, Ms, Miss, Sir, etc)
          type: string
          example: Mr.
        suffix:
          description: Used for a trailing suffix to the name (e.g. Jr)
          type: string
          example: Sr.
      required:
        - lastName
      type: object
    AdapterEnergyAccountPlanDetailItemV1:
      description: Detail on the plan applicable to this account
      properties:
        nickname:
          description: >-
            Optional display name for the plan provided by the customer to help
            differentiate multiple plans
          type: string
        servicePointIds:
          description: >-
            An array of objects describing service point identifiers with device
            types.
          items:
            $ref: '#/components/schemas/AdapterServicePointV1'
          type: array
        planOverview:
          $ref: '#/components/schemas/EnergyAccountPlanOverviewV1'
        planDetail:
          $ref: '#/components/schemas/EnergyAccountPlanDetailV1'
        authorisedContacts:
          description: >-
            An array of additional contacts that are authorised to act on this
            account
          items:
            $ref: '#/components/schemas/EnergyAccountAuthorisedContactV1'
      required:
        - servicePointIds
      type: object
      x-conditional:
        - planDetail
        - planOverview
    AdapterEnergyAccountDetailV1:
      properties:
        accountId:
          description: The ID of the account. Will be pairwised on presentation to ADR.
          type: string
          maxLength: 255
          example: 5bbdb5d20e474ee2f10ecd08deca1b16c89f0eaa94e69167c2475b417db7ec58
        accountNumber:
          description: >-
            Optional identifier of the account as defined by the data holder. 
            This must be the value presented on physical statements (if it
            exists) and must not be used for the value of accountId
          type: string
          example: '12981837'
        accountCustomers:
          description: List of Account Customer entries
          type: array
          items:
            $ref: '#/components/schemas/AdapterAccountCustomerV3'
        accountAddress:
          $ref: '#/components/schemas/CommonPhysicalAddressV1'
        status:
          $ref: '#/components/schemas/EnumAccountOpenStatusV1'
        displayName:
          description: >-
            An optional display name for the account if one exists or can be
            derived.  The content of this field is at the discretion of the data
            holder
          type: string
        creationDate:
          description: >-
            The date that the account was created or opened. Mandatory if status
            is OPEN
          type: string
          format: date
          x-cds-type: DateString
          example: '2022-03-04'
        plans:
          description: >-
            The array of plans containing service points and associated plan
            details
          items:
            $ref: '#/components/schemas/AdapterEnergyAccountPlanDetailItemV1'
          type: array
        jointAccountSharingStatus:
          $ref: '#/components/schemas/EnumAdapterJointAccountSharingStatusV1'
      required:
        - accountId
        - accountCustomers
        - accountAddress
        - plans
        - status
      type: object
      x-conditional:
        - creationDate
    EnergyPlanSolarFeedInTariffV2:
      properties:
        displayName:
          description: The name of the tariff
          type: string
          example: Solar Feed In Tariff
        description:
          description: A description of the tariff
          type: string
          example: A base charge for feeding back into the grid
        startDate:
          description: The start date of the application of the feed in tariff
          type: string
          format: date
          x-cds-type: DateString
          example: '2021-08-03'
        endDate:
          description: The end date of the application of the feed in tariff
          type: string
          format: date
          x-cds-type: DateString
          example: '2022-08-02'
        scheme:
          $ref: '#/components/schemas/EnumEnergyPlanSolarFeedInTariffSchemeTypeV1'
        payerType:
          $ref: '#/components/schemas/EnumEnergyPlanSolarFeedInTariffPayerTypeV1'
        tariffUType:
          description: The type of the tariff
          enum:
            - singleTariff
            - timeVaryingTariffs
          type: string
          example: singleTariff
        singleTariff:
          description: >-
            Represents a constant tariff.  Mandatory if tariffUType is set to
            singleTariff
          properties:
            rates:
              description: Array of feed in rates
              items:
                $ref: '#/components/schemas/EnergyPlanRateV1'
              type: array
          required:
            - rates
          type: object
        timeVaryingTariffs:
          description: >-
            Represents a tariff based on time.  Mandatory if tariffUType is set
            to timeVaryingTariffs
          properties:
            type:
              $ref: '#/components/schemas/EnumEnergyTariffTimeVaryingTariffTypeV1'
            rates:
              description: Array of feed in rates
              items:
                $ref: '#/components/schemas/EnergyPlanRateV1'
              type: array
            timeVariations:
              description: Array of time periods for which this tariff is applicable
              items:
                properties:
                  days:
                    description: >-
                      The days that the tariff applies to. At least one entry
                      required
                    items:
                      $ref: '#/components/schemas/EnumEnergyDayV1'
                    type: array
                    minItems: 1
                  startTime:
                    description: >-
                      The beginning of the time period per day for which the
                      tariff applies.  If absent assumes start of day (ie.
                      midnight)

                      Formatted according to [ISO 8601
                      Times](https://en.wikipedia.org/wiki/ISO_8601#Times). If
                      the time is provided without a UTC offset, the time zone
                      will be determined by the value of
                      EnergyPlanContract.timeZone.
                    type: string
                    x-cds-type: TimeString
                    example: 17:00:00.000+10:00
                  endTime:
                    description: >-
                      The end of the time period per day for which the tariff
                      applies.  If absent assumes end of day (ie. one second
                      before midnight)

                      Formatted according to [ISO 8601
                      Times](https://en.wikipedia.org/wiki/ISO_8601#Times). If
                      the time is provided without a UTC offset, the time zone
                      will be determined by the value of
                      EnergyPlanContract.timeZone.
                    type: string
                    x-cds-type: TimeString
                    example: 20:59:59.999+10:00
                required:
                  - days
                type: object
              type: array
          required:
            - rates
            - timeVariations
          type: object
      required:
        - displayName
        - payerType
        - scheme
        - tariffUType
      type: object
      x-conditional:
        - singleTariff
        - timeVaryingTariffs
    EnergyPlanContractV2:
      properties:
        additionalFeeInformation:
          description: >-
            Free text field containing additional information of the fees for
            this contract
          type: string
          example: Additional Solar Feed In Fee
        pricingModel:
          $ref: '#/components/schemas/EnumEnergyPlanContractPricingModelV1'
        timeZone:
          $ref: '#/components/schemas/EnumEnergyPlanContractTimeZoneV1'
        isFixed:
          description: Flag indicating whether prices are fixed or variable
          type: boolean
          example: true
        variation:
          description: >-
            Free text description of price variation policy and conditions for
            the contract.  Mandatory if isFixed is false
          type: string
          example: Price Variations possible by calling support center
        onExpiryDescription:
          description: >-
            Free text field that describes what will occur on or prior to expiry
            of the fixed contract term or benefit period
          type: string
          example: >-
            On expiry of the contract the price will revert to the spot price at
            any given time
        paymentOption:
          description: Payment options for this contract
          items:
            $ref: '#/components/schemas/EnumEnergyPaymentMethodV1'
          type: array
        intrinsicGreenPower:
          $ref: '#/components/schemas/EnergyPlanIntrinsicGreenPowerV1'
        controlledLoad:
          description: >-
            Required if pricing model is SINGLE_RATE_CONT_LOAD or
            TIME_OF_USE_CONT_LOAD or FLEXIBLE_CONT_LOAD
          items:
            $ref: '#/components/schemas/EnergyPlanControlledLoadV1'
          type: array
        incentives:
          description: Optional list of incentives available for the contract
          items:
            $ref: '#/components/schemas/EnergyPlanIncentiveV1'
          type: array
        discounts:
          description: Optional list of discounts available for the contract
          items:
            $ref: '#/components/schemas/EnergyPlanDiscountV1'
          type: array
        greenPowerCharges:
          description: Optional list of charges applicable to green power
          items:
            $ref: '#/components/schemas/EnergyPlanGreenPowerChargeV1'
          type: array
        eligibility:
          description: Eligibility restrictions or requirements
          items:
            $ref: '#/components/schemas/EnergyPlanEligibilityV1'
          type: array
        fees:
          description: An array of fees applicable to the plan
          items:
            $ref: '#/components/schemas/EnergyPlanFeeV1'
          type: array
        solarFeedInTariff:
          description: Array of feed in tariffs for solar power
          items:
            $ref: '#/components/schemas/EnergyPlanSolarFeedInTariffV2'
          type: array
        tariffPeriod:
          description: Array of tariff periods
          items:
            $ref: '#/components/schemas/EnergyPlanTariffPeriodV1'
          type: array
      required:
        - isFixed
        - paymentOption
        - pricingModel
        - tariffPeriod
      type: object
      x-conditional:
        - timeZone
        - variation
        - controlledLoad
    EnergyAccountPlanDetailV2:
      description: >-
        Detail on the plan applicable to this account. Mandatory if openStatus
        is OPEN
      properties:
        fuelType:
          $ref: '#/components/schemas/EnumEnergyFuelTypeV1'
        isContingentPlan:
          default: false
          description: >-
            Flag that indicates that the plan is contingent on the customer
            taking up an alternate fuel plan from the same retailer (for
            instance, if the fuelType is `ELECTRICITY` then a `GAS` plan from
            the same retailer must be taken up). Has no meaning if the plan has
            a fuelType of `DUAL`. If absent the value is assumed to be false
          type: boolean
        meteringCharges:
          description: Charges for metering included in the plan
          items:
            $ref: '#/components/schemas/EnergyMeteringChargeV1'
          type: array
        gasContract:
          $ref: '#/components/schemas/EnergyPlanContractV2'
        electricityContract:
          $ref: '#/components/schemas/EnergyPlanContractV2'
      required:
        - fuelType
      type: object
      x-conditional:
        - gasContract
        - electricityContract
    AdapterEnergyAccountPlanDetailItemV2:
      description: Detail on the plan applicable to this account
      properties:
        nickname:
          description: >-
            Optional display name for the plan provided by the customer to help
            differentiate multiple plans
          type: string
        servicePointIds:
          description: >-
            An array of objects describing service point identifiers with device
            types.
          items:
            $ref: '#/components/schemas/AdapterServicePointV1'
          type: array
        planOverview:
          $ref: '#/components/schemas/EnergyAccountPlanOverviewV1'
        planDetail:
          $ref: '#/components/schemas/EnergyAccountPlanDetailV2'
        authorisedContacts:
          description: >-
            An array of additional contacts that are authorised to act on this
            account
          items:
            $ref: '#/components/schemas/EnergyAccountAuthorisedContactV1'
      required:
        - servicePointIds
      type: object
      x-conditional:
        - planDetail
        - planOverview
    AdapterEnergyAccountDetailV2:
      properties:
        accountId:
          description: The ID of the account. Will be pairwised on presentation to ADR.
          type: string
          maxLength: 255
          example: 5bbdb5d20e474ee2f10ecd08deca1b16c89f0eaa94e69167c2475b417db7ec58
        accountNumber:
          description: >-
            Optional identifier of the account as defined by the data holder. 
            This must be the value presented on physical statements (if it
            exists) and must not be used for the value of accountId
          type: string
          example: '12981837'
        accountCustomers:
          description: List of Account Customer entries
          type: array
          items:
            $ref: '#/components/schemas/AdapterAccountCustomerV3'
        accountAddress:
          $ref: '#/components/schemas/CommonPhysicalAddressV1'
        status:
          $ref: '#/components/schemas/EnumAccountOpenStatusV1'
        displayName:
          description: >-
            An optional display name for the account if one exists or can be
            derived.  The content of this field is at the discretion of the data
            holder
          type: string
        creationDate:
          description: >-
            The date that the account was created or opened. Mandatory if status
            is OPEN
          type: string
          format: date
          x-cds-type: DateString
          example: '2022-03-04'
        plans:
          description: >-
            The array of plans containing service points and associated plan
            details
          items:
            $ref: '#/components/schemas/AdapterEnergyAccountPlanDetailItemV2'
          type: array
      required:
        - accountId
        - accountCustomers
        - accountAddress
        - plans
        - status
      type: object
      x-conditional:
        - creationDate
    EnergyPlanControlledLoadSingleRateV2:
      description: >-
        Object representing a single controlled load rate.  Required if
        rateBlockUType is singleRate
      properties:
        displayName:
          description: Display name of the controlled load rate
          type: string
          example: Single Rate Charge
        description:
          description: Description of the controlled load rate
          type: string
        dailySupplyCharge:
          description: >-
            The daily supply charge (exclusive of GST) for this controlled load
            tier
          type: string
          x-cds-type: AmountString
        rates:
          description: Array of controlled load rates in order of usage volume
          items:
            $ref: '#/components/schemas/EnergyPlanRateV1'
          type: array
        period:
          description: >-
            Usage period for which the block rate applies. Formatted according
            to [ISO 8601
            Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations)
            (excludes recurrence syntax). Defaults to P1Y if absent.
          type: string
          x-cds-type: DurationString
      required:
        - displayName
        - rates
      type: object
    EnergyPlanControlledLoadTimeOfUseRateV2:
      properties:
        displayName:
          description: Display name of the controlled load rate
          type: string
          example: Time of use charge applied
        description:
          description: Description of the controlled load rate
          type: string
        dailySupplyCharge:
          description: >-
            The daily supply charge (exclusive of GST) for this controlled load
            tier
          type: string
          x-cds-type: AmountString
        rates:
          description: Array of controlled load rates in order of usage volume
          items:
            $ref: '#/components/schemas/EnergyPlanRateV1'
          type: array
        period:
          description: >-
            Usage period for which the block rate applies. Formatted according
            to [ISO 8601
            Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations)
            (excludes recurrence syntax). Defaults to P1Y if absent.
          type: string
          x-cds-type: DurationString
        timeOfUse:
          description: Array of times of use.
          items:
            properties:
              days:
                description: The days that the rate applies to
                items:
                  $ref: '#/components/schemas/EnumEnergyDayV1'
                type: array
                example:
                  - PUBLIC_HOLIDAYS
              startTime:
                description: >-
                  The beginning of the time period per day for which the
                  controlled load rate applies. Required if endTime provided

                  Formatted according to [ISO 8601
                  Times](https://en.wikipedia.org/wiki/ISO_8601#Times). If the
                  time is provided without a UTC offset, the time zone will be
                  determined by the value of EnergyPlanContract.timeZone.
                type: string
                x-cds-type: TimeString
                example: 17:00:00.000+10:00
              endTime:
                description: >-
                  The end of the time period per day for which the controlled
                  load rate applies. Required if startTime provided

                  Formatted according to [ISO 8601
                  Times](https://en.wikipedia.org/wiki/ISO_8601#Times). If the
                  time is provided without a UTC offset, the time zone will be
                  determined by the value of EnergyPlanContract.timeZone.
                type: string
                x-cds-type: TimeString
                example: 20:59:59.999+10:00
              additionalInfo:
                description: >-
                  Display text providing more information on the controlled
                  load, for e.g. controlled load availability if specific
                  day/time is not known. Required if startTime and endTime
                  absent or if additionalInfoUri provided
                type: string
              additionalInfoUri:
                description: >-
                  Optional link to additional information regarding the
                  controlled load
                type: string
                format: uri
                x-cds-type: URIString
            type: object
            x-conditional:
              - startTime
              - endTime
              - additionalInfo
          type: array
        type:
          $ref: '#/components/schemas/EnumEnergyControlledLoadTimeOfUseRateTypeV1'
      required:
        - displayName
        - rates
        - timeOfUse
        - type
      type: object
    EnergyPlanControlledLoadV2:
      properties:
        displayName:
          description: A display name for the controlled load
          type: string
          example: Electric hot water system
        rateBlockUType:
          description: Specifies the type of controlled load rate
          enum:
            - singleRate
            - timeOfUseRates
          type: string
          example: singleRate
        startDate:
          description: Optional start date of the application of the controlled load rate
          type: string
          format: date
          x-cds-type: DateString
          example: '2021-10-23'
        endDate:
          description: Optional end date of the application of the controlled load rate
          type: string
          format: date
          x-cds-type: DateString
          example: '2022-04-30'
        singleRate:
          $ref: '#/components/schemas/EnergyPlanControlledLoadSingleRateV2'
        timeOfUseRates:
          description: >-
            Array of objects representing time of use rates.  Required if
            rateBlockUType is timeOfUseRates
          items:
            $ref: '#/components/schemas/EnergyPlanControlledLoadTimeOfUseRateV2'
          type: array
      required:
        - displayName
        - rateBlockUType
      type: object
      x-conditional:
        - singleRate
        - timeOfUseRates
    EnumEnergyPlanSolarFeedInTariffSchemeTypeV2:
      description: The applicable scheme
      enum:
        - PREMIUM
        - CURRENT
        - VARIABLE
        - OTHER
      type: string
      example: PREMIUM
    EnergyPlanSolarFeedInTariffV3:
      properties:
        displayName:
          description: The name of the tariff
          type: string
          example: Solar Feed In Tariff
        description:
          description: A description of the tariff
          type: string
          example: A base charge for feeding back into the grid
        startDate:
          description: The start date of the application of the feed in tariff
          type: string
          format: date
          x-cds-type: DateString
          example: '2021-08-03'
        endDate:
          description: The end date of the application of the feed in tariff
          type: string
          format: date
          x-cds-type: DateString
          example: '2022-08-02'
        scheme:
          $ref: '#/components/schemas/EnumEnergyPlanSolarFeedInTariffSchemeTypeV2'
        payerType:
          $ref: '#/components/schemas/EnumEnergyPlanSolarFeedInTariffPayerTypeV1'
        tariffUType:
          description: Reference to the applicable tariff structure
          enum:
            - singleTariff
            - timeVaryingTariffs
          type: string
          example: singleTariff
        singleTariff:
          description: >-
            Represents a constant tariff.  Mandatory if tariffUType is set to
            singleTariff
          properties:
            rates:
              description: Array of feed in rates
              items:
                $ref: '#/components/schemas/EnergyPlanRateV1'
              type: array
            period:
              description: >-
                Usage period for which the block rate applies. Formatted
                according to [ISO 8601
                Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations)
                (excludes recurrence syntax). Defaults to P1Y if absent.
              type: string
              x-cds-type: DurationString
          required:
            - rates
          type: object
        timeVaryingTariffs:
          description: >-
            Represents a tariff based on time.  Mandatory if tariffUType is set
            to timeVaryingTariffs
          items:
            properties:
              type:
                $ref: '#/components/schemas/EnumEnergyTariffTimeVaryingTariffTypeV1'
              displayName:
                description: Display name of the tariff
                type: string
                example: Solar Feed In Tariff Time Varying Tariff
              rates:
                description: Array of feed in rates
                items:
                  $ref: '#/components/schemas/EnergyPlanRateV1'
                type: array
              period:
                description: >-
                  Usage period for which the block rate applies. Formatted
                  according to [ISO 8601
                  Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations)
                  (excludes recurrence syntax). Defaults to P1Y if absent.
                type: string
                x-cds-type: DurationString
              timeVariations:
                description: Array of time periods for which this tariff is applicable
                items:
                  properties:
                    days:
                      description: >-
                        The days that the tariff applies to. At least one entry
                        required
                      items:
                        $ref: '#/components/schemas/EnumEnergyDayV1'
                      type: array
                      minItems: 1
                    startTime:
                      description: >-
                        The beginning of the time period per day for which the
                        tariff applies.  If absent assumes start of day (ie.
                        midnight)

                        Formatted according to [ISO 8601
                        Times](https://en.wikipedia.org/wiki/ISO_8601#Times). If
                        the time is provided without a UTC offset, the time zone
                        will be determined by the value of
                        EnergyPlanContract.timeZone.
                      type: string
                      x-cds-type: TimeString
                      example: '12:00'
                    endTime:
                      description: >-
                        The end of the time period per day for which the tariff
                        applies.  If absent assumes end of day (ie. one second
                        before midnight)

                        Formatted according to [ISO 8601
                        Times](https://en.wikipedia.org/wiki/ISO_8601#Times). If
                        the time is provided without a UTC offset, the time zone
                        will be determined by the value of
                        EnergyPlanContract.timeZone.
                      type: string
                      x-cds-type: TimeString
                      example: '23:00'
                  required:
                    - days
                  type: object
                type: array
            required:
              - timeVariations
              - displayName
            type: object
          type: array
      required:
        - displayName
        - payerType
        - scheme
        - tariffUType
      type: object
      x-conditional:
        - singleTariff
        - timeVaryingTariffs
    EnumEnergyPlanTariffDailySupplyChargeTypeV1:
      description: Specifies if daily supply charge is single or banded.
      enum:
        - SINGLE
        - BAND
      type: string
      example: SINGLE
    EnumEnergyBandedDailySupplyMeasureUnitV1:
      description: The measurement unit of rate. Assumed to be DAYS if absent
      enum:
        - KWH
        - KVA
        - KVAR
        - KVARH
        - KW
        - DAYS
        - METER
        - MONTH
      type: string
      example: DAYS
    EnergyPlanBandedDailySupplyChargeV1:
      type: object
      properties:
        unitPrice:
          description: >-
            The amount of daily supply charge for the band, in dollars per day
            exclusive of GST
          type: string
          x-cds-type: AmountString
          example: '0.35'
        measureUnit:
          $ref: '#/components/schemas/EnumEnergyBandedDailySupplyMeasureUnitV1'
        volume:
          description: Volume the charge applies to
          type: number
      required:
        - unitPrice
    EnergyPlanTariffPeriodTimeOfUseRateV2:
      properties:
        displayName:
          description: Display name of the rate
          type: string
          example: Time of use charge applied
        description:
          description: Description of the rate
          type: string
          example: Rate applied based on the time the energy is used
        rates:
          description: Array of controlled load rates in order of usage volume
          items:
            $ref: '#/components/schemas/EnergyPlanRateV1'
          type: array
        period:
          description: >-
            Usage period for which the block rate applies. Formatted according
            to [ISO 8601
            Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations)
            (excludes recurrence syntax). Defaults to P1Y if absent.
          type: string
          x-cds-type: DurationString
        timeOfUse:
          description: Array of times of use
          items:
            properties:
              days:
                description: The days that the rate applies to
                items:
                  $ref: '#/components/schemas/EnumEnergyDayV1'
                type: array
                example:
                  - MON
                  - TUE
                  - WED
                  - THU
                  - FRI
              startTime:
                description: >-
                  Start of the period

                  Formatted according to [ISO 8601
                  Times](https://en.wikipedia.org/wiki/ISO_8601#Times). If the
                  time is provided without a UTC offset, the time zone will be
                  determined by the value of EnergyPlanContract.timeZone.
                type: string
                x-cds-type: TimeString
                example: 17:00:00.000+10:00
              endTime:
                description: >-
                  End of the period

                  Formatted according to [ISO 8601
                  Times](https://en.wikipedia.org/wiki/ISO_8601#Times). If the
                  time is provided without a UTC offset, the time zone will be
                  determined by the value of EnergyPlanContract.timeZone.
                type: string
                x-cds-type: TimeString
                example: 20:59:59.999+10:00
            required:
              - days
              - endTime
              - startTime
            type: object
          type: array
        type:
          $ref: '#/components/schemas/EnumEnergyTariffPeriodTimeOfUseRateTypeV1'
      required:
        - displayName
        - rates
        - timeOfUse
        - type
      type: object
    EnergyPlanTariffPeriodV2:
      properties:
        type:
          $ref: '#/components/schemas/EnumEnergyPlanTariffTypeV1'
        displayName:
          description: The name of the tariff period
          type: string
          example: Plan Tariff
        startDate:
          description: >-
            The start date of the tariff period in a calendar year.  Formatted
            in mm-dd format
          type: string
          pattern: ^\d\d-\d\d$
          example: 08-01
        endDate:
          description: >-
            The end date of the tariff period in a calendar year.  Formatted in
            mm-dd format
          type: string
          pattern: ^\d\d-\d\d$
          example: 12-01
        dailySupplyChargeType:
          $ref: '#/components/schemas/EnumEnergyPlanTariffDailySupplyChargeTypeV1'
        dailySupplyCharge:
          description: >-
            The amount of access charge for the tariff period, in dollars per
            day exclusive of GST. Mandatory if dailySupplyChargeType is SINGLE
          type: string
          x-cds-type: AmountString
          example: '1.00'
        bandedDailySupplyCharges:
          type: array
          description: >-
            Array representing banded daily supply charge rates.  Mandatory if
            dailySupplyChargeType is BAND
          items:
            $ref: '#/components/schemas/EnergyPlanBandedDailySupplyChargeV1'
        timeZone:
          $ref: '#/components/schemas/EnumEnergyTariffPeriodTimeZoneV1'
        rateBlockUType:
          description: Specifies the type of rate applicable to this tariff period
          enum:
            - singleRate
            - timeOfUseRates
            - demandCharges
          type: string
          example: singleRate
        singleRate:
          $ref: '#/components/schemas/EnergyPlanTariffPeriodSingleRateV1'
        timeOfUseRates:
          description: >-
            Array of objects representing time of use rates.  Required if
            rateBlockUType is timeOfUseRates
          items:
            $ref: '#/components/schemas/EnergyPlanTariffPeriodTimeOfUseRateV2'
          type: array
        demandCharges:
          description: >-
            Array of demand charges.  Required if rateBlockUType is
            demandCharges
          items:
            $ref: '#/components/schemas/EnergyPlanTariffDemandChargeV1'
          type: array
      required:
        - displayName
        - endDate
        - rateBlockUType
        - startDate
      type: object
      x-conditional:
        - singleRate
        - timeOfUseRates
        - demandCharges
        - dailySupplyCharge
        - bandedDailySupplyCharges
    EnergyPlanContractV3:
      properties:
        additionalFeeInformation:
          description: >-
            Free text field containing additional information of the fees for
            this contract
          type: string
          example: Additional Solar Feed In Fee
        pricingModel:
          $ref: '#/components/schemas/EnumEnergyPlanContractPricingModelV1'
        timeZone:
          $ref: '#/components/schemas/EnumEnergyPlanContractTimeZoneV1'
        isFixed:
          description: Flag indicating whether prices are fixed or variable
          type: boolean
          example: true
        variation:
          description: >-
            Free text description of price variation policy and conditions for
            the contract.  Mandatory if isFixed is false
          type: string
          example: Price Variations possible by calling support center
        onExpiryDescription:
          description: >-
            Free text field that describes what will occur on or prior to expiry
            of the fixed contract term or benefit period
          type: string
          example: >-
            On expiry of the contract the price will revert to the spot price at
            any given time
        paymentOption:
          description: Payment options for this contract
          items:
            $ref: '#/components/schemas/EnumEnergyPaymentMethodV1'
          type: array
        intrinsicGreenPower:
          $ref: '#/components/schemas/EnergyPlanIntrinsicGreenPowerV1'
        controlledLoad:
          description: >-
            Required if pricing model is SINGLE_RATE_CONT_LOAD or
            TIME_OF_USE_CONT_LOAD or FLEXIBLE_CONT_LOAD
          items:
            $ref: '#/components/schemas/EnergyPlanControlledLoadV2'
          type: array
        incentives:
          description: Optional list of incentives available for the contract
          items:
            $ref: '#/components/schemas/EnergyPlanIncentiveV1'
          type: array
        discounts:
          description: Optional list of discounts available for the contract
          items:
            $ref: '#/components/schemas/EnergyPlanDiscountV1'
          type: array
        greenPowerCharges:
          description: Optional list of charges applicable to green power
          items:
            $ref: '#/components/schemas/EnergyPlanGreenPowerChargeV1'
          type: array
        eligibility:
          description: Eligibility restrictions or requirements
          items:
            $ref: '#/components/schemas/EnergyPlanEligibilityV1'
          type: array
        fees:
          description: An array of fees applicable to the plan
          items:
            $ref: '#/components/schemas/EnergyPlanFeeV1'
          type: array
        solarFeedInTariff:
          description: Array of feed in tariffs for solar power
          items:
            $ref: '#/components/schemas/EnergyPlanSolarFeedInTariffV3'
          type: array
        tariffPeriod:
          description: Array of tariff periods
          items:
            $ref: '#/components/schemas/EnergyPlanTariffPeriodV2'
          type: array
      required:
        - isFixed
        - paymentOption
        - pricingModel
        - tariffPeriod
      type: object
      x-conditional:
        - timeZone
        - variation
        - controlledLoad
    EnergyAccountPlanDetailV3:
      description: >-
        Detail on the plan applicable to this account. Mandatory if openStatus
        is OPEN
      properties:
        fuelType:
          $ref: '#/components/schemas/EnumEnergyFuelTypeV1'
        isContingentPlan:
          default: false
          description: >-
            Flag that indicates that the plan is contingent on the customer
            taking up an alternate fuel plan from the same retailer (for
            instance, if the fuelType is `ELECTRICITY` then a `GAS` plan from
            the same retailer must be taken up). Has no meaning if the plan has
            a fuelType of `DUAL`. If absent the value is assumed to be false
          type: boolean
        meteringCharges:
          description: Charges for metering included in the plan
          items:
            $ref: '#/components/schemas/EnergyMeteringChargeV1'
          type: array
        gasContract:
          $ref: '#/components/schemas/EnergyPlanContractV3'
        electricityContract:
          $ref: '#/components/schemas/EnergyPlanContractV3'
      required:
        - fuelType
      type: object
      x-conditional:
        - gasContract
        - electricityContract
    AdapterEnergyAccountPlanDetailItemV3:
      description: Detail on the plan applicable to this account
      properties:
        nickname:
          description: >-
            Optional display name for the plan provided by the customer to help
            differentiate multiple plans
          type: string
        servicePointIds:
          description: >-
            An array of objects describing service point identifiers with device
            types.
          items:
            $ref: '#/components/schemas/AdapterServicePointV1'
          type: array
        planOverview:
          $ref: '#/components/schemas/EnergyAccountPlanOverviewV1'
        planDetail:
          $ref: '#/components/schemas/EnergyAccountPlanDetailV3'
        authorisedContacts:
          description: >-
            An array of additional contacts that are authorised to act on this
            account
          items:
            $ref: '#/components/schemas/EnergyAccountAuthorisedContactV1'
      required:
        - servicePointIds
      type: object
      x-conditional:
        - planDetail
        - planOverview
    AdapterEnergyAccountDetailV3:
      properties:
        accountId:
          description: The ID of the account. Will be pairwised on presentation to ADR.
          type: string
          maxLength: 255
          example: 5bbdb5d20e474ee2f10ecd08deca1b16c89f0eaa94e69167c2475b417db7ec58
        accountNumber:
          description: >-
            Optional identifier of the account as defined by the data holder. 
            This must be the value presented on physical statements (if it
            exists) and must not be used for the value of accountId
          type: string
          example: '12981837'
        accountCustomers:
          description: List of Account Customer entries
          type: array
          items:
            $ref: '#/components/schemas/AdapterAccountCustomerV3'
        accountAddress:
          $ref: '#/components/schemas/CommonPhysicalAddressV1'
        status:
          $ref: '#/components/schemas/EnumAccountOpenStatusV1'
        displayName:
          description: >-
            An optional display name for the account if one exists or can be
            derived.  The content of this field is at the discretion of the data
            holder
          type: string
        creationDate:
          description: >-
            The date that the account was created or opened. Mandatory if status
            is OPEN
          type: string
          format: date
          x-cds-type: DateString
          example: '2022-03-04'
        plans:
          description: >-
            The array of plans containing service points and associated plan
            details
          items:
            $ref: '#/components/schemas/AdapterEnergyAccountPlanDetailItemV3'
          type: array
      required:
        - accountId
        - accountCustomers
        - accountAddress
        - plans
        - status
      type: object
      x-conditional:
        - creationDate
    ResponseListEnergyAccounts:
      oneOf:
        - $ref: '#/components/schemas/ResponseListEnergyAccountsV0'
        - $ref: '#/components/schemas/ResponseListEnergyAccountsV1'
        - $ref: '#/components/schemas/ResponseListEnergyAccountsV2'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/ResponseListEnergyAccountsV0'
          V1: '#/components/schemas/ResponseListEnergyAccountsV1'
          V2: '#/components/schemas/ResponseListEnergyAccountsV2'
    ResponseGetEnergyPaymentScheduleV0:
      properties:
        version:
          type: string
          default: V0
        data:
          type: object
          properties:
            schedules:
              description: >-
                Array of payment schedules. Array may be empty if no payment
                schedule exist
              items:
                $ref: '#/components/schemas/EnergyPaymentScheduleV1'
              type: array
          required:
            - schedules
      required:
        - data
      type: object
    EnumBankingCardSchemeV1:
      description: The type of credit card held on file
      enum:
        - VISA
        - MASTERCARD
        - AMEX
        - DINERS
        - OTHER
        - UNKNOWN
      type: string
      example: VISA
    EnumEnergyPaymentScheduleCalculationTypeV1:
      description: >+
        The mechanism by which the payment amount is calculated.  Explanation

        of values are as follows:


        - **STATIC**: Indicates a consistent, static amount, per payment

        - **BALANCE** - Indicates that the outstanding balance for the account
        is paid per period

        - **CALCULATED** - Indicates that the payment amount is variable and
        calculated using a pre-defined algorithm

      enum:
        - STATIC
        - BALANCE
        - CALCULATED
      type: string
      example: CALCULATED
    EnergyPaymentScheduleCreditCardV1:
      description: >-
        Represents a regular credit card payment schedule. Mandatory if
        paymentScheduleUType is set to cardDebit
      properties:
        cardScheme:
          $ref: '#/components/schemas/EnumBankingCardSchemeV1'
        paymentFrequency:
          description: >-
            The frequency that payments will occur.  Formatted according to [ISO
            8601 Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations)
            (excludes recurrence syntax)
          type: string
          x-cds-type: DurationString
          example: P3M
        calculationType:
          $ref: '#/components/schemas/EnumEnergyPaymentScheduleCalculationTypeV1'
      required:
        - calculationType
        - cardScheme
        - paymentFrequency
      type: object
    EnergyPaymentScheduleDirectDebitV1:
      description: >-
        Represents a regular direct debit from a specified bank account.
        Mandatory if paymentScheduleUType is set to directDebit
      properties:
        isTokenised:
          description: >-
            Flag indicating that the account details are tokenised, or held in a
            closed system, and is not accessible through any other channels.
            False if absent
          type: boolean
        bsb:
          description: >-
            The unmasked BSB for the account to be debited. Is expected to be
            formatted as digits only with leading zeros included and no
            punctuation or spaces.  Is required if isTokenised is absent or
            false
          type: string
        accountNumber:
          description: >-
            The unmasked account number for the account to be debited. Is
            expected to be formatted as digits only with leading zeros included
            and no punctuation or spaces.  Is required if isTokenised is absent
            or false
          type: string
        paymentFrequency:
          description: >-
            The frequency that payments will occur.  Formatted according to [ISO
            8601 Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations)
            (excludes recurrence syntax)
          type: string
          x-cds-type: DurationString
          example: P3M
        calculationType:
          $ref: '#/components/schemas/EnumEnergyPaymentScheduleCalculationTypeV1'
      required:
        - calculationType
        - paymentFrequency
      type: object
      x-conditional:
        - bsb
        - accountNumber
    EnumEnergyDigitalWalletIdentifierTypeV1:
      description: |
        The type of the digital wallet identifier:
        - **EMAIL**: An email address
        - **CONTACT_NAME**: Contact name
        - **TELEPHONE**: Telephone number
      enum:
        - EMAIL
        - CONTACT_NAME
        - TELEPHONE
      type: string
      example: EMAIL
    EnumEnergyDigitalWalletProviderV1:
      description: >-
        The provider of the digital wallet service. PAYPAL_AU for PayPal, OTHER
        for other service provider.
      enum:
        - PAYPAL_AU
        - OTHER
      type: string
      example: OTHER
    EnergyPaymentScheduleDigitalWalletV1:
      description: >-
        Represents a regular payment from a digital wallet. Mandatory if
        paymentScheduleUType is set to digitalWallet
      properties:
        name:
          description: >-
            The display name of the wallet as given by the customer, else a
            default value defined by the data holder
          type: string
          example: My Digital Wallet
        identifier:
          description: The identifier of the digital wallet (dependent on type)
          type: string
          example: user@digital.wallet.com
        type:
          $ref: '#/components/schemas/EnumEnergyDigitalWalletIdentifierTypeV1'
        provider:
          $ref: '#/components/schemas/EnumEnergyDigitalWalletProviderV1'
        paymentFrequency:
          description: >-
            The frequency that payments will occur. Formatted according to [ISO
            8601 Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations)
            (excludes recurrence syntax)
          type: string
          x-cds-type: DurationString
          example: P3M
        calculationType:
          $ref: '#/components/schemas/EnumEnergyPaymentScheduleCalculationTypeV1'
      required:
        - calculationType
        - identifier
        - name
        - paymentFrequency
        - provider
        - type
      type: object
    EnergyPaymentScheduleManualPaymentV1:
      description: >-
        Represents a manual payment schedule where the customer pays in response
        to a delivered statement. Mandatory if paymentScheduleUType is set to
        manualPayment
      properties:
        billFrequency:
          description: >-
            The frequency with which a bill will be issued.  Formatted according
            to [ISO 8601
            Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations)
            (excludes recurrence syntax)
          type: string
          x-cds-type: DurationString
          example: P3M
      required:
        - billFrequency
      type: object
    EnergyPaymentScheduleV1:
      properties:
        amount:
          description: >-
            Optional payment amount indicating that a constant payment amount is
            scheduled to be paid (used in bill smoothing scenarios)
          type: string
          x-cds-type: AmountString
        paymentScheduleUType:
          description: The type of object present in this response
          enum:
            - cardDebit
            - directDebit
            - digitalWallet
            - manualPayment
          type: string
          example: manualPayment
        cardDebit:
          $ref: '#/components/schemas/EnergyPaymentScheduleCreditCardV1'
        directDebit:
          $ref: '#/components/schemas/EnergyPaymentScheduleDirectDebitV1'
        digitalWallet:
          $ref: '#/components/schemas/EnergyPaymentScheduleDigitalWalletV1'
        manualPayment:
          $ref: '#/components/schemas/EnergyPaymentScheduleManualPaymentV1'
      required:
        - paymentScheduleUType
      type: object
      x-conditional:
        - cardDebit
        - directDebit
        - digitalWallet
        - manualPayment
    ResponseGetEnergyPaymentSchedule:
      oneOf:
        - $ref: '#/components/schemas/ResponseGetEnergyPaymentScheduleV0'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/ResponseGetEnergyPaymentScheduleV0'
    ResponseGetEnergyConcessionsV0:
      properties:
        version:
          type: string
          default: V0
        data:
          type: object
          properties:
            concessions:
              description: List of concessions. Array may be empty if no concessions exist
              items:
                $ref: '#/components/schemas/EnergyConcessionV1'
              type: array
          required:
            - concessions
      required:
        - data
      type: object
    EnumEnergyConcessionTypeV1:
      description: Indicator of the method of concession calculation
      enum:
        - FIXED_AMOUNT
        - FIXED_PERCENTAGE
        - VARIABLE
      type: string
      example: FIXED_AMOUNT
    EnumEnergyConcessionApplicationV1:
      description: Specify what an energy account concession applies to
      enum:
        - INVOICE
        - USAGE
        - SERVICE_CHARGE
        - CONTROLLED_LOAD
      type: string
      example: INVOICE
    EnergyConcessionV1:
      properties:
        type:
          $ref: '#/components/schemas/EnumEnergyConcessionTypeV1'
        displayName:
          description: The display name of the concession
          type: string
          example: Pensioner Discount
        additionalInfo:
          description: >-
            Display text providing more information on the concession. Mandatory
            if type is VARIABLE
          type: string
        additionalInfoUri:
          description: Optional link to additional information regarding the concession
          type: string
          x-cds-type: URIString
          format: uri
        startDate:
          description: Optional start date for the application of the concession
          type: string
          format: date
          x-cds-type: DateString
        endDate:
          description: Optional end date for the application of the concession
          type: string
          format: date
          x-cds-type: DateString
        discountFrequency:
          description: >-
            Conditional attribute for frequency at which a concession is
            applied. Required if type is FIXED_AMOUNT or FIXED_PERCENTAGE.
            Formatted according to [ISO 8601
            Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations)
            (excludes recurrence syntax)
          type: string
          x-cds-type: DurationString
        amount:
          description: >-
            Conditional attribute for the amount of discount for the concession-
            required if type is FIXED_AMOUNT
          type: string
          x-cds-type: AmountString
          example: '67.39'
        percentage:
          description: >-
            Conditional attribute for the percentage of discount of concession -
            required if type is FIXED_PERCENTAGE
          type: string
          x-cds-type: RateString
          example: '0.05'
        appliedTo:
          description: >-
            Array of ENUM's to specify what the concession applies to. Multiple
            ENUM values can be provided. If absent, USAGE is assumed
          items:
            $ref: '#/components/schemas/EnumEnergyConcessionApplicationV1'
          type: array
      required:
        - displayName
        - type
      type: object
      x-conditional:
        - additionalInfo
        - discountFrequency
        - amount
        - percentage
    ResponseGetEnergyConcessions:
      oneOf:
        - $ref: '#/components/schemas/ResponseGetEnergyConcessionsV0'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/ResponseGetEnergyConcessionsV0'
    ResponseListEnergyBalancesV0:
      properties:
        version:
          type: string
          default: V0
        data:
          type: object
          properties:
            balances:
              description: Array of account balances
              items:
                $ref: '#/components/schemas/EnergyAccountBalanceV1'
              type: array
          required:
            - balances
      required:
        - data
      type: object
    EnergyAccountBalanceV1:
      properties:
        accountId:
          description: >-
            The ID of the account.  To be created in accordance with CDR ID
            permanence requirements
          type: string
          example: jdnmwucgrchzngrqieryhiovpvzknokkwsediggdlnxgxizegvwpwfflgavkrbay
        balance:
          description: >-
            The current balance of the account. A positive value indicates that
            amount is owing to be paid. A negative value indicates that the
            account is in credit
          type: string
          x-cds-type: AmountString
          example: '15.66'
      required:
        - accountId
        - balance
      type: object
    ResponseListEnergyBalances:
      oneOf:
        - $ref: '#/components/schemas/ResponseListEnergyBalancesV0'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/ResponseListEnergyBalancesV0'
    ListEnergyBalances400Item:
      oneOf:
        - $ref: '#/components/schemas/ErrorFieldMissingV1'
        - $ref: '#/components/schemas/ErrorFieldInvalidV1'
        - $ref: '#/components/schemas/ErrorGeneralExpectedV1'
        - $ref: '#/components/schemas/ErrorHeaderInvalidV1'
      discriminator:
        propertyName: code
        mapping:
          urn:au-cds:error:cds-all:Field/Missing: '#/components/schemas/ErrorFieldMissingV1'
          urn:au-cds:error:cds-all:Field/Invalid: '#/components/schemas/ErrorFieldInvalidV1'
          urn:au-cds:error:cds-all:GeneralError/Expected: '#/components/schemas/ErrorGeneralExpectedV1'
          urn:au-cds:error:cds-all:Header/Invalid: '#/components/schemas/ErrorHeaderInvalidV1'
    ResponseListEnergyInvoicesV0:
      properties:
        version:
          type: string
          default: V0
        data:
          type: object
          properties:
            invoices:
              description: >-
                Array of invoices sorted by issue date in descending order.
                Invoices with same issue date are further sorted by due date in
                descending order (null last)
              items:
                $ref: '#/components/schemas/EnergyInvoiceV1'
              type: array
          required:
            - invoices
        meta:
          $ref: '#/components/schemas/MetaPaginatedV1'
      required:
        - data
        - meta
      type: object
    EnergyInvoicePeriodV1:
      description: >-
        Object containing the start and end date for the period covered by the
        invoice.  Mandatory if any usage or demand based charges are included in
        the invoice
      properties:
        startDate:
          description: The start date of the period covered by this invoice
          type: string
          format: date
          x-cds-type: DateString
          example: '2022-01-01'
        endDate:
          description: The end date of the period covered by this invoice
          type: string
          format: date
          x-cds-type: DateString
          example: '2022-06-30'
      required:
        - endDate
        - startDate
      type: object
    EnergyInvoicePayOnTimeDiscountV1:
      description: A discount for on time payment
      properties:
        discountAmount:
          description: >-
            The amount that will be discounted if the invoice is paid by the
            date specified
          type: string
          x-cds-type: AmountString
          example: '5.00'
        gstAmount:
          description: >-
            The GST amount that will be discounted if the invoice is paid by the
            date specified.  If absent then zero is assumed
          type: string
          x-cds-type: AmountString
          example: '0.50'
        date:
          description: >-
            The date by which the invoice must be paid to receive the pay on
            time discount
          type: string
          format: date
          x-cds-type: DateString
          example: '2022-07-15'
      required:
        - date
        - discountAmount
      type: object
    EnergyInvoiceChargeUsageOtherV1:
      properties:
        type:
          $ref: '#/components/schemas/EnumEnergyPlanTariffTypeV1'
        amount:
          description: The aggregate total of charges for this item (exclusive of GST)
          type: string
          x-cds-type: AmountString
          example: '5.00'
        description:
          description: A free text description of the type of charge
          type: string
          example: Other Usage
      required:
        - amount
        - description
      type: object
    EnergyInvoiceChargeUsageV1:
      properties:
        totalUsageCharges:
          description: >-
            The aggregate total of usage charges for the period covered by the
            invoice (exclusive of GST)
          type: string
          x-cds-type: AmountString
          example: '10.00'
        totalGenerationCredits:
          description: >-
            The aggregate total of generation credits for the period covered by
            the invoice (exclusive of GST)
          type: string
          x-cds-type: AmountString
          example: '7.00'
        totalOnceOffCharges:
          description: >-
            The aggregate total of any once off charges arising from usage for
            the period covered by the invoice (exclusive of GST)
          type: string
          x-cds-type: AmountString
          example: '10.00'
        totalOnceOffDiscounts:
          description: >-
            The aggregate total of any once off discounts or credits arising
            from usage for the period covered by the invoice (exclusive of GST)
          type: string
          x-cds-type: AmountString
          example: '10.00'
        otherCharges:
          description: >-
            Optional array of charges that may be part of the invoice (for e.g.
            environmental charges for C&I consumers) (exclusive of GST)
          items:
            $ref: '#/components/schemas/EnergyInvoiceChargeUsageOtherV1'
          type: array
        totalGst:
          description: The total GST for all usage charges.  If absent then zero is assumed
          type: string
          x-cds-type: AmountString
          example: '1.36'
      required:
        - totalGenerationCredits
        - totalOnceOffCharges
        - totalOnceOffDiscounts
        - totalUsageCharges
      type: object
    EnergyInvoiceChargeAccountV1:
      description: >-
        Object contains account level charges and credits related to electricity
        usage
      properties:
        totalCharges:
          description: >-
            The aggregate total of account level charges for the period covered
            by the invoice
          type: string
          x-cds-type: AmountString
          example: '15.00'
        totalDiscounts:
          description: >-
            The aggregate total of account level discounts or credits for the
            period covered by the invoice
          type: string
          x-cds-type: AmountString
          example: '10.00'
        totalGst:
          description: >-
            The total GST for all account level charges.  If absent then zero is
            assumed
          type: string
          x-cds-type: AmountString
          example: '1.36'
      required:
        - totalCharges
        - totalDiscounts
      type: object
    EnergyInvoiceV1:
      properties:
        accountId:
          description: The ID of the account for which the invoice was issued
          type: string
          example: jdnmwucgrchzngrqieryhiovpvzknokkwsediggdlnxgxizegvwpwfflgavkrbay
        invoiceNumber:
          description: The number assigned to this invoice by the energy Retailer
          type: string
          example: '109818233'
        issueDate:
          description: >-
            The date that the invoice was actually issued (as opposed to
            generated or calculated)
          type: string
          format: date
          x-cds-type: DateString
          example: '2022-08-01'
        dueDate:
          description: The date that the invoice is due to be paid
          type: string
          format: date
          x-cds-type: DateString
          example: '2022-09-01'
        period:
          $ref: '#/components/schemas/EnergyInvoicePeriodV1'
        invoiceAmount:
          description: The net amount due for this invoice regardless of previous balance
          type: string
          x-cds-type: AmountString
          example: '22.00'
        gstAmount:
          description: >-
            The total GST amount for this invoice.  If absent then zero is
            assumed
          type: string
          x-cds-type: AmountString
          example: '20.00'
        payOnTimeDiscount:
          $ref: '#/components/schemas/EnergyInvoicePayOnTimeDiscountV1'
        balanceAtIssue:
          description: The account balance at the time the invoice was issued
          type: string
          x-cds-type: AmountString
          example: '10.00'
        servicePoints:
          description: >-
            Array of service point IDs to which this invoice applies. May be
            empty if the invoice contains no electricity usage related charges
          items:
            type: string
          type: array
          example:
            - aa719cefa99b27d2a86482c0e51460910e4336f24fa42b5c60dc72dcda86b3fa
        gas:
          $ref: '#/components/schemas/EnergyInvoiceChargeUsageV1'
        electricity:
          $ref: '#/components/schemas/EnergyInvoiceChargeUsageV1'
        accountCharges:
          $ref: '#/components/schemas/EnergyInvoiceChargeAccountV1'
        paymentStatus:
          description: Indicator of the payment status for the invoice
          enum:
            - PAID
            - PARTIALLY_PAID
            - NOT_PAID
          type: string
          example: NOT_PAID
      required:
        - accountId
        - balanceAtIssue
        - invoiceNumber
        - issueDate
        - paymentStatus
        - servicePoints
      type: object
      x-conditional:
        - period
    ResponseListEnergyInvoices:
      oneOf:
        - $ref: '#/components/schemas/ResponseListEnergyInvoicesV0'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/ResponseListEnergyInvoicesV0'
    ListEnergyInvoices400Item:
      oneOf:
        - $ref: '#/components/schemas/ErrorFieldMissingV1'
        - $ref: '#/components/schemas/ErrorFieldInvalidV1'
        - $ref: '#/components/schemas/ErrorFieldInvalidPageSizeV1'
        - $ref: '#/components/schemas/ErrorFieldInvalidDateTimeV1'
        - $ref: '#/components/schemas/ErrorGeneralExpectedV1'
        - $ref: '#/components/schemas/ErrorHeaderInvalidV1'
      discriminator:
        propertyName: code
        mapping:
          urn:au-cds:error:cds-all:Field/Missing: '#/components/schemas/ErrorFieldMissingV1'
          urn:au-cds:error:cds-all:Field/Invalid: '#/components/schemas/ErrorFieldInvalidV1'
          urn:au-cds:error:cds-all:Field/InvalidPageSize: '#/components/schemas/ErrorFieldInvalidPageSizeV1'
          urn:au-cds:error:cds-all:Field/InvalidDateTime: '#/components/schemas/ErrorFieldInvalidDateTimeV1'
          urn:au-cds:error:cds-all:GeneralError/Expected: '#/components/schemas/ErrorGeneralExpectedV1'
          urn:au-cds:error:cds-all:Header/Invalid: '#/components/schemas/ErrorHeaderInvalidV1'
    ListEnergyInvoices422Item:
      oneOf:
        - $ref: '#/components/schemas/ErrorFieldInvalidPageV1'
      discriminator:
        propertyName: code
        mapping:
          urn:au-cds:error:cds-all:Field/InvalidPage: '#/components/schemas/ErrorFieldInvalidPageV1'
    ResponseListEnergyBillingsV0:
      properties:
        version:
          type: string
          default: V0
        data:
          type: object
          properties:
            transactions:
              description: >-
                Array of transactions sorted by date and time in descending
                order
              items:
                $ref: '#/components/schemas/EnergyBillingTransactionV1'
              type: array
          required:
            - transactions
        meta:
          $ref: '#/components/schemas/MetaPaginatedV1'
      required:
        - data
        - meta
      type: object
    ResponseListEnergyBillingsV1:
      properties:
        version:
          type: string
          default: V1
        data:
          type: object
          properties:
            transactions:
              description: >-
                Array of transactions sorted by date and time in descending
                order
              items:
                $ref: '#/components/schemas/EnergyBillingTransactionV2'
              type: array
          required:
            - transactions
        meta:
          $ref: '#/components/schemas/MetaPaginatedV1'
      required:
        - version
        - data
        - meta
      type: object
    ResponseListEnergyBillingsV2:
      properties:
        version:
          type: string
          default: V2
        data:
          type: object
          properties:
            transactions:
              description: >-
                Array of transactions sorted by date and time in descending
                order
              items:
                $ref: '#/components/schemas/EnergyBillingTransactionV3'
              type: array
          required:
            - transactions
        meta:
          $ref: '#/components/schemas/MetaPaginatedV1'
      required:
        - version
        - data
        - meta
      type: object
    EnumEnergyBillingTransactionTimeOfUseTypeV1:
      description: The time of use type that the transaction applies to
      enum:
        - PEAK
        - OFF_PEAK
        - OFF_PEAK_DEMAND_CHARGE
        - SHOULDER
        - SHOULDER1
        - SHOULDER2
        - CONTROLLED_LOAD
        - SOLAR
        - AGGREGATE
      type: string
      example: PEAK
    EnergyBillingTransactionCalculationFactorV1:
      properties:
        value:
          description: The value of the calculation factor
          type: number
          example: 1.34
        type:
          description: The type of the calculation factor
          enum:
            - DLF
            - MLF
          type: string
          example: DLF
      required:
        - type
        - value
      type: object
    EnergyBillingTransactionAdjustmentV1:
      properties:
        amount:
          description: The amount of the adjustment
          type: string
          x-cds-type: AmountString
          example: '10.00'
        description:
          description: A free text description of the adjustment
          type: string
          example: Adjustment
      required:
        - amount
        - description
      type: object
    EnergyBillingTransactionUsageV1:
      description: >-
        Represents a usage charge or generation credit. Mandatory if
        transactionUType is equal to usage
      properties:
        servicePointId:
          description: The ID of the service point to which this transaction applies if any
          type: string
        invoiceNumber:
          description: >-
            The number of the invoice in which this transaction is included if
            it has been issued
          type: string
        timeOfUseType:
          $ref: '#/components/schemas/EnumEnergyBillingTransactionTimeOfUseTypeV1'
        description:
          description: >-
            Optional description of the transaction that can be used for display
            purposes
          type: string
        isEstimate:
          description: >-
            Flag indicating if the usage is estimated or actual.  True indicates
            estimate.  False or absent indicates actual
          type: boolean
          example: false
        startDate:
          description: Date and time when the usage period starts
          type: string
          format: date-time
          x-cds-type: DateTimeString
          example: '2022-08-20T03:01:42+00:00'
        endDate:
          description: Date and time when the usage period ends
          type: string
          format: date-time
          x-cds-type: DateTimeString
          example: '2022-09-20T03:01:42+00:00'
        measureUnit:
          $ref: '#/components/schemas/EnumEnergyUsageMeasureUnitV1'
        usage:
          description: >-
            The usage for the period in measure unit.  A negative value
            indicates power generated
          type: number
          example: 1.55
        amount:
          description: >-
            The amount charged or credited for this transaction prior to any
            adjustments being applied.  A negative value indicates a credit
          type: string
          x-cds-type: AmountString
          example: '1.56'
        calculationFactors:
          description: Additional calculation factors that inform the transaction
          items:
            $ref: '#/components/schemas/EnergyBillingTransactionCalculationFactorV1'
          type: array
        adjustments:
          description: Optional array of adjustments arising for this transaction
          items:
            $ref: '#/components/schemas/EnergyBillingTransactionAdjustmentV1'
          type: array
      required:
        - amount
        - endDate
        - startDate
        - timeOfUseType
        - usage
      type: object
    EnergyBillingTransactionDemandV1:
      description: >-
        Represents a demand charge or generation credit. Mandatory if
        transactionUType is equal to demand
      properties:
        servicePointId:
          description: The ID of the service point to which this transaction applies if any
          type: string
          example: aa719cefa99b27d2a86482c0e51460910e4336f24fa42b5c60dc72dcda86b3fa
        invoiceNumber:
          description: >-
            The number of the invoice in which this transaction is included if
            it has been issued
          type: string
        timeOfUseType:
          $ref: '#/components/schemas/EnumEnergyBillingTransactionTimeOfUseTypeV1'
        description:
          description: >-
            Optional description of the transaction that can be used for display
            purposes
          type: string
        isEstimate:
          description: >-
            Flag indicating if the usage is estimated or actual.  True indicates
            estimate.  False or absent indicates actual
          type: boolean
        startDate:
          description: Date and time when the demand period starts
          type: string
          format: date-time
          x-cds-type: DateTimeString
          example: '2022-07-20T03:01:42+00:00'
        endDate:
          description: Date and time when the demand period ends
          type: string
          format: date-time
          x-cds-type: DateTimeString
          example: '2022-08-20T03:01:42+00:00'
        rate:
          description: >-
            The rate for the demand charge in kVA.  A negative value indicates
            power generated
          type: number
          example: 0.044
        amount:
          description: >-
            The amount charged or credited for this transaction prior to any
            adjustments being applied.  A negative value indicates a credit
          type: string
          x-cds-type: AmountString
          example: '10.00'
        calculationFactors:
          description: Additional calculation factors that inform the transaction
          items:
            $ref: '#/components/schemas/EnergyBillingTransactionCalculationFactorV1'
          type: array
        adjustments:
          description: Optional array of adjustments arising for this transaction
          items:
            $ref: '#/components/schemas/EnergyBillingTransactionAdjustmentV1'
          type: array
      required:
        - amount
        - endDate
        - rate
        - startDate
        - timeOfUseType
      type: object
    EnergyBillingTransactionOnceOffV1:
      description: >-
        Represents a once off charge or credit. Mandatory if transactionUType is
        equal to onceOff
      properties:
        servicePointId:
          description: The ID of the service point to which this transaction applies if any
          type: string
          example: aa719cefa99b27d2a86482c0e51460910e4336f24fa42b5c60dc72dcda86b3fa
        invoiceNumber:
          description: >-
            The number of the invoice in which this transaction is included if
            it has been issued
          type: string
        amount:
          description: >-
            The amount of the charge or credit.  A positive value indicates a
            charge and a negative value indicates a credit
          type: string
          x-cds-type: AmountString
          example: '10.00'
        description:
          description: A free text description of the item
          type: string
          example: Once Off Setup Charge
      required:
        - amount
        - description
      type: object
    EnergyBillingTransactionOtherV1:
      description: >-
        Represents charge other than usage and once off. Mandatory if
        transactionUType is equal to otherCharge
      properties:
        servicePointId:
          description: The ID of the service point to which this transaction applies if any
          type: string
          example: aa719cefa99b27d2a86482c0e51460910e4336f24fa42b5c60dc72dcda86b3fa
        invoiceNumber:
          description: >-
            The number of the invoice in which this transaction is included if
            it has been issued
          type: string
        startDate:
          description: Optional start date for the application of the charge
          type: string
          format: date
          x-cds-type: DateString
        endDate:
          description: Optional end date for the application of the charge
          type: string
          format: date
          x-cds-type: DateString
        type:
          $ref: '#/components/schemas/EnumEnergyPlanTariffTypeV1'
        amount:
          description: The amount of the charge
          type: string
          x-cds-type: AmountString
          example: '14.55'
        description:
          description: A free text description of the item
          type: string
          example: Miscellaneous Supply Charge
        calculationFactors:
          description: Additional calculation factors that inform the transaction
          items:
            $ref: '#/components/schemas/EnergyBillingTransactionCalculationFactorV1'
          type: array
        adjustments:
          description: Optional array of adjustments arising for this transaction
          items:
            $ref: '#/components/schemas/EnergyBillingTransactionAdjustmentV1'
          type: array
      required:
        - amount
        - description
      type: object
    EnumEnergyBillingTransactionPaymentMethodV1:
      description: The method of payment
      enum:
        - DIRECT_DEBIT
        - CARD
        - TRANSFER
        - BPAY
        - CASH
        - CHEQUE
        - OTHER
      type: string
      example: CARD
    EnergyBillingTransactionPaymentV1:
      description: >-
        Represents a payment to the account. Mandatory if transactionUType is
        equal to payment
      properties:
        amount:
          description: The amount paid
          type: string
          x-cds-type: AmountString
          example: '1.00'
        method:
          $ref: '#/components/schemas/EnumEnergyBillingTransactionPaymentMethodV1'
      required:
        - amount
        - method
      type: object
    EnergyBillingTransactionV1:
      properties:
        accountId:
          description: The ID of the account for which transaction applies
          type: string
          example: jdnmwucgrchzngrqieryhiovpvzknokkwsediggdlnxgxizegvwpwfflgavkrbay
        executionDateTime:
          description: The date and time that the transaction occurred
          type: string
          format: date-time
          x-cds-type: DateTimeString
          example: '2022-08-20T03:01:42+00:00'
        gst:
          description: >-
            The GST incurred in the transaction.  Should not be included for
            credits or payments.  If absent zero is assumed
          type: string
          x-cds-type: AmountString
        transactionUType:
          description: Indicator of the type of transaction object present in this record
          enum:
            - usage
            - demand
            - onceOff
            - otherCharges
            - payment
          type: string
          example: onceOff
        usage:
          $ref: '#/components/schemas/EnergyBillingTransactionUsageV1'
        demand:
          $ref: '#/components/schemas/EnergyBillingTransactionDemandV1'
        onceOff:
          $ref: '#/components/schemas/EnergyBillingTransactionOnceOffV1'
        otherCharges:
          $ref: '#/components/schemas/EnergyBillingTransactionOtherV1'
        payment:
          $ref: '#/components/schemas/EnergyBillingTransactionPaymentV1'
      required:
        - accountId
        - executionDateTime
        - transactionUType
      type: object
      x-conditional:
        - usage
        - demand
        - onceOff
        - otherCharges
        - payment
    EnumEnergyBillingTransactionUsageTimeOfUseTypeV2:
      description: The time of use type that the transaction applies to
      enum:
        - PEAK
        - OFF_PEAK
        - OFF_PEAK_DEMAND_CHARGE
        - SHOULDER
        - SHOULDER1
        - SHOULDER2
        - CONTROLLED_LOAD
        - SOLAR
        - AGGREGATE
        - ALL_DAY
      type: string
      example: PEAK
    EnergyBillingTransactionUsageV2:
      description: >-
        Represents a usage charge or generation credit. Mandatory if
        transactionUType is equal to usage
      properties:
        servicePointId:
          description: The ID of the service point to which this transaction applies if any
          type: string
        invoiceNumber:
          description: >-
            The number of the invoice in which this transaction is included if
            it has been issued
          type: string
        timeOfUseType:
          $ref: >-
            #/components/schemas/EnumEnergyBillingTransactionUsageTimeOfUseTypeV2
        description:
          description: >-
            Optional description of the transaction that can be used for display
            purposes
          type: string
        isEstimate:
          description: >-
            Flag indicating if the usage is estimated or actual.  True indicates
            estimate.  False or absent indicates actual
          type: boolean
          example: false
        startDate:
          description: Date and time when the usage period starts
          type: string
          format: date-time
          x-cds-type: DateTimeString
          example: '2022-08-20T03:01:42+00:00'
        endDate:
          description: Date and time when the usage period ends
          type: string
          format: date-time
          x-cds-type: DateTimeString
          example: '2022-09-20T03:01:42+00:00'
        measureUnit:
          $ref: '#/components/schemas/EnumEnergyUsageMeasureUnitV1'
        usage:
          description: >-
            The usage for the period in measure unit.  A negative value
            indicates power generated
          type: number
          example: 1.55
        amount:
          description: >-
            The amount charged or credited for this transaction prior to any
            adjustments being applied.  A negative value indicates a credit
          type: string
          x-cds-type: AmountString
          example: '1.56'
        calculationFactors:
          description: Additional calculation factors that inform the transaction
          items:
            $ref: '#/components/schemas/EnergyBillingTransactionCalculationFactorV1'
          type: array
        adjustments:
          description: Optional array of adjustments arising for this transaction
          items:
            $ref: '#/components/schemas/EnergyBillingTransactionAdjustmentV1'
          type: array
      required:
        - amount
        - endDate
        - startDate
        - timeOfUseType
        - usage
      type: object
    EnumEnergyBillingTransactionDemandTimeOfUseTypeV2:
      description: The time of use type that the transaction applies to
      enum:
        - PEAK
        - OFF_PEAK
        - OFF_PEAK_DEMAND_CHARGE
        - SHOULDER
        - SHOULDER1
        - SHOULDER2
        - CONTROLLED_LOAD
        - SOLAR
        - AGGREGATE
        - ALL_DAY
        - EXCESS
      type: string
      example: PEAK
    EnergyBillingTransactionDemandV2:
      description: >-
        Represents a demand charge or generation credit. Mandatory if
        transactionUType is equal to demand
      properties:
        servicePointId:
          description: The ID of the service point to which this transaction applies if any
          type: string
          example: aa719cefa99b27d2a86482c0e51460910e4336f24fa42b5c60dc72dcda86b3fa
        invoiceNumber:
          description: >-
            The number of the invoice in which this transaction is included if
            it has been issued
          type: string
        timeOfUseType:
          $ref: >-
            #/components/schemas/EnumEnergyBillingTransactionDemandTimeOfUseTypeV2
        description:
          description: >-
            Optional description of the transaction that can be used for display
            purposes
          type: string
        isEstimate:
          description: >-
            Flag indicating if the usage is estimated or actual.  True indicates
            estimate.  False or absent indicates actual
          type: boolean
        startDate:
          description: Date and time when the demand period starts
          type: string
          format: date-time
          x-cds-type: DateTimeString
          example: '2022-07-20T03:01:42+00:00'
        endDate:
          description: Date and time when the demand period ends
          type: string
          format: date-time
          x-cds-type: DateTimeString
          example: '2022-08-20T03:01:42+00:00'
        rate:
          description: >-
            The rate for the demand charge in kVA.  A negative value indicates
            power generated
          type: number
          example: 0.044
        amount:
          description: >-
            The amount charged or credited for this transaction prior to any
            adjustments being applied.  A negative value indicates a credit
          type: string
          x-cds-type: AmountString
          example: '10.00'
        calculationFactors:
          description: Additional calculation factors that inform the transaction
          items:
            $ref: '#/components/schemas/EnergyBillingTransactionCalculationFactorV1'
          type: array
        adjustments:
          description: Optional array of adjustments arising for this transaction
          items:
            $ref: '#/components/schemas/EnergyBillingTransactionAdjustmentV1'
          type: array
      required:
        - amount
        - endDate
        - rate
        - startDate
        - timeOfUseType
      type: object
    EnergyBillingTransactionV2:
      properties:
        accountId:
          description: The ID of the account for which transaction applies
          type: string
          example: jdnmwucgrchzngrqieryhiovpvzknokkwsediggdlnxgxizegvwpwfflgavkrbay
        executionDateTime:
          description: The date and time that the transaction occurred
          type: string
          format: date-time
          x-cds-type: DateTimeString
          example: '2022-08-20T03:01:42+00:00'
        gst:
          description: >-
            The GST incurred in the transaction.  Should not be included for
            credits or payments.  If absent zero is assumed
          type: string
          x-cds-type: AmountString
        transactionUType:
          description: Indicator of the type of transaction object present in this record
          enum:
            - usage
            - demand
            - onceOff
            - otherCharges
            - payment
          type: string
          example: onceOff
        usage:
          $ref: '#/components/schemas/EnergyBillingTransactionUsageV2'
        demand:
          $ref: '#/components/schemas/EnergyBillingTransactionDemandV2'
        onceOff:
          $ref: '#/components/schemas/EnergyBillingTransactionOnceOffV1'
        otherCharges:
          $ref: '#/components/schemas/EnergyBillingTransactionOtherV1'
        payment:
          $ref: '#/components/schemas/EnergyBillingTransactionPaymentV1'
      required:
        - accountId
        - executionDateTime
        - transactionUType
      type: object
      x-conditional:
        - usage
        - demand
        - onceOff
        - otherCharges
        - payment
    EnergyBillingTransactionDemandV3:
      description: >-
        Represents a demand charge or generation credit. Mandatory if
        transactionUType is equal to demand
      properties:
        servicePointId:
          description: The ID of the service point to which this transaction applies if any
          type: string
          example: aa719cefa99b27d2a86482c0e51460910e4336f24fa42b5c60dc72dcda86b3fa
        invoiceNumber:
          description: >-
            The number of the invoice in which this transaction is included if
            it has been issued
          type: string
        timeOfUseType:
          $ref: >-
            #/components/schemas/EnumEnergyBillingTransactionDemandTimeOfUseTypeV2
        description:
          description: >-
            Optional description of the transaction that can be used for display
            purposes
          type: string
        isEstimate:
          description: >-
            Flag indicating if the usage is estimated or actual.  True indicates
            estimate.  False or absent indicates actual
          type: boolean
        startDate:
          description: Date and time when the demand period starts
          type: string
          format: date-time
          x-cds-type: DateTimeString
          example: '2022-07-20T03:01:42+00:00'
        endDate:
          description: Date and time when the demand period ends
          type: string
          format: date-time
          x-cds-type: DateTimeString
          example: '2022-08-20T03:01:42+00:00'
        measureUnit:
          $ref: '#/components/schemas/EnumEnergyDemandMeasureUnitV1'
        rate:
          description: >-
            The rate for the demand charge in measureUnit. Assumed to be KVA if
            measureUnit not provided. A negative value indicates power generated
          type: number
          example: 0.044
        amount:
          description: >-
            The amount charged or credited for this transaction prior to any
            adjustments being applied.  A negative value indicates a credit
          type: string
          x-cds-type: AmountString
          example: '10.00'
        calculationFactors:
          description: Additional calculation factors that inform the transaction
          items:
            $ref: '#/components/schemas/EnergyBillingTransactionCalculationFactorV1'
          type: array
        adjustments:
          description: Optional array of adjustments arising for this transaction
          items:
            $ref: '#/components/schemas/EnergyBillingTransactionAdjustmentV1'
          type: array
      required:
        - amount
        - endDate
        - rate
        - startDate
        - timeOfUseType
      type: object
    EnergyBillingTransactionV3:
      properties:
        accountId:
          description: The ID of the account for which transaction applies
          type: string
          example: jdnmwucgrchzngrqieryhiovpvzknokkwsediggdlnxgxizegvwpwfflgavkrbay
        executionDateTime:
          description: The date and time that the transaction occurred
          type: string
          format: date-time
          x-cds-type: DateTimeString
          example: '2022-08-20T03:01:42+00:00'
        gst:
          description: >-
            The GST incurred in the transaction.  Should not be included for
            credits or payments.  If absent zero is assumed
          type: string
          x-cds-type: AmountString
        transactionUType:
          description: Indicator of the type of transaction object present in this record
          enum:
            - usage
            - demand
            - onceOff
            - otherCharges
            - payment
          type: string
          example: onceOff
        usage:
          $ref: '#/components/schemas/EnergyBillingTransactionUsageV2'
        demand:
          $ref: '#/components/schemas/EnergyBillingTransactionDemandV3'
        onceOff:
          $ref: '#/components/schemas/EnergyBillingTransactionOnceOffV1'
        otherCharges:
          $ref: '#/components/schemas/EnergyBillingTransactionOtherV1'
        payment:
          $ref: '#/components/schemas/EnergyBillingTransactionPaymentV1'
      required:
        - accountId
        - executionDateTime
        - transactionUType
      type: object
      x-conditional:
        - usage
        - demand
        - onceOff
        - otherCharges
        - payment
    ResponseListEnergyBillings:
      oneOf:
        - $ref: '#/components/schemas/ResponseListEnergyBillingsV0'
        - $ref: '#/components/schemas/ResponseListEnergyBillingsV1'
        - $ref: '#/components/schemas/ResponseListEnergyBillingsV2'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/ResponseListEnergyBillingsV0'
          V1: '#/components/schemas/ResponseListEnergyBillingsV1'
          V2: '#/components/schemas/ResponseListEnergyBillingsV2'
    ListEnergyBillings400Item:
      oneOf:
        - $ref: '#/components/schemas/ErrorFieldMissingV1'
        - $ref: '#/components/schemas/ErrorFieldInvalidV1'
        - $ref: '#/components/schemas/ErrorFieldInvalidPageSizeV1'
        - $ref: '#/components/schemas/ErrorFieldInvalidDateTimeV1'
        - $ref: '#/components/schemas/ErrorGeneralExpectedV1'
        - $ref: '#/components/schemas/ErrorHeaderInvalidV1'
      discriminator:
        propertyName: code
        mapping:
          urn:au-cds:error:cds-all:Field/Missing: '#/components/schemas/ErrorFieldMissingV1'
          urn:au-cds:error:cds-all:Field/Invalid: '#/components/schemas/ErrorFieldInvalidV1'
          urn:au-cds:error:cds-all:Field/InvalidPageSize: '#/components/schemas/ErrorFieldInvalidPageSizeV1'
          urn:au-cds:error:cds-all:Field/InvalidDateTime: '#/components/schemas/ErrorFieldInvalidDateTimeV1'
          urn:au-cds:error:cds-all:GeneralError/Expected: '#/components/schemas/ErrorGeneralExpectedV1'
          urn:au-cds:error:cds-all:Header/Invalid: '#/components/schemas/ErrorHeaderInvalidV1'
    ListEnergyBillings422Item:
      oneOf:
        - $ref: '#/components/schemas/ErrorFieldInvalidPageV1'
      discriminator:
        propertyName: code
        mapping:
          urn:au-cds:error:cds-all:Field/InvalidPage: '#/components/schemas/ErrorFieldInvalidPageV1'
    RequestGetFRMPDetailsV0:
      type: object
      properties:
        version:
          type: string
          default: V0
        principalId:
          description: >-
            The internal identifier of the entity being shared via CDR. It is
            the ID that will be supplied to the data sharing calls for customer
            details, listing accounts, etc.
          type: string
          maxLength: 512
          example: 552375cb-9c00-4fde-a0a0-592904a55355
        nmi:
          description: An array of NMIs
          items:
            type: string
          type: array
        oldestDate:
          description: >-
            Constrain the request to records with effective date at or after
            this date.
          type: string
          format: date
          x-cds-type: DateString
          example: '2022-01-03'
      required:
        - principalId
        - nmi
        - oldestDate
    RequestGetFRMPDetailsV1:
      type: object
      properties:
        version:
          type: string
          default: V1
        principalId:
          description: >-
            The internal identifier of the entity being shared via CDR. It is
            the ID that will be supplied to the data sharing calls for customer
            details, listing accounts, etc.
          type: string
          maxLength: 512
          example: 552375cb-9c00-4fde-a0a0-592904a55355
        userId:
          description: The userId of the user that authorised the data sharing
          type: string
          maxLength: 512
          example: b9cbf422-c2ae-4cd3-a095-5fe6bde87f35
        nmi:
          description: An array of NMIs
          items:
            type: string
          type: array
        oldestDate:
          description: >-
            Constrain the request to records with effective date at or after
            this date.
          type: string
          format: date
          x-cds-type: DateString
          example: '2022-01-03'
      required:
        - version
        - principalId
        - userId
        - nmi
        - oldestDate
    RequestGetFRMPDetails:
      oneOf:
        - $ref: '#/components/schemas/RequestGetFRMPDetailsV0'
        - $ref: '#/components/schemas/RequestGetFRMPDetailsV1'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/RequestGetFRMPDetailsV0'
          V1: '#/components/schemas/RequestGetFRMPDetailsV1'
    ResponseGetFRMPDetailsV0:
      type: object
      properties:
        version:
          type: string
          default: V0
      additionalProperties:
        x-additionalPropertiesName: nmi
        type: array
        minItems: 1
        items:
          $ref: '#/components/schemas/FRMPDetailV1'
    FRMPDetailV1:
      type: object
      properties:
        frmpId:
          description: The identifier of the FRMP
          type: string
          example: ACMEENERGY
        startDate:
          type: string
          format: date
          x-cds-type: DateString
          example: '2022-01-03'
        endDate:
          type: string
          format: date
      required:
        - frmpId
        - startDate
    ResponseGetFRMPDetails:
      oneOf:
        - $ref: '#/components/schemas/ResponseGetFRMPDetailsV0'
      discriminator:
        propertyName: version
        mapping:
          V0: '#/components/schemas/ResponseGetFRMPDetailsV0'
  headers:
    XFAPIInteractionId:
      description: >-
        An [RFC4122](https://tools.ietf.org/html/rfc4122) UUID used as a
        correlation id. If provided, the data holder must play back this value
        in the _x-fapi-interaction-id_ response header. If not provided a
        [RFC4122](https://tools.ietf.org/html/rfc4122) UUID value is required to
        be provided in the response header to track the interaction. This header
        MUST be responded for success and error responses for authenticated
        APIs.
      explode: false
      schema:
        type: string
        format: uuid
        example: 6ba7b814-9dad-11d1-80b4-00c04fd430c8
      style: simple
  responses:
    GetHealth:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseGetHealth'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    DioGeneric400:
      description: >-
        Request has malformed, missing or non-compliant JSON body or URL
        parameters.
      content:
        application/json:
          schema:
            properties:
              errors:
                items:
                  $ref: '#/components/schemas/DioGeneric400Item'
                type: array
            required:
              - errors
            type: object
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    GetEndpointMeta:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseGetEndpointMeta'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    GetUser:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseGetUser'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    DioGeneric404:
      description: This resource does not exist in the upstream system
      content:
        application/json:
          schema:
            properties:
              errors:
                items:
                  $ref: '#/components/schemas/DioGeneric404Item'
                type: array
            required:
              - errors
            type: object
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    DioGeneric422:
      description: >-
        The request was well formed but was unable to be processed due to
        business logic specific to the request
      content:
        application/json:
          schema:
            properties:
              errors:
                items:
                  $ref: '#/components/schemas/DioGeneric422Item'
                type: array
            required:
              - errors
            type: object
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    DioGeneric429:
      description: >-
        The operation was refused as too many requests have been made within a
        certain timeframe.
      headers:
        retry-after:
          description: >-
            A non-negative decimal integer indicating the seconds to delay after
            the response is received.
          schema:
            type: integer
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    DioGeneric451:
      description: >-
        The request was well formed but was unable to be shared due to legal
        reasons
      content:
        application/json:
          schema:
            properties:
              errors:
                items:
                  $ref: '#/components/schemas/DioGeneric451Item'
                type: array
            required:
              - errors
            type: object
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    InitLogin:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseInitLogin'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    InitLogin400:
      description: Some details captured to identify the user were invalid or missing
      content:
        application/json:
          schema:
            properties:
              errors:
                items:
                  $ref: '#/components/schemas/InitLogin400Item'
                type: array
            required:
              - errors
            type: object
            deprecated: true
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    InitLogin422:
      description: >-
        The request was well formed but was unable to be processed due to
        business logic specific to the request. **NOTE:** Login Init should
        **never** fail except for login init field validation reasons .
      content:
        application/json:
          schema:
            properties:
              errors:
                items:
                  $ref: '#/components/schemas/InitLogin422Item'
                type: array
            required:
              - errors
            type: object
            deprecated: true
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    VerifyLogin:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseVerifyLogin'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    VerifyLogin422:
      description: >-
        The request was well formed but was unable to be processed due to
        business logic specific to the request.
      content:
        application/json:
          schema:
            properties:
              errors:
                items:
                  $ref: '#/components/schemas/VerifyLogin422Item'
                type: array
            required:
              - errors
            type: object
            deprecated: true
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    GetUserNotificationInfo:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseGetUserNotificationInfo'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    GetUsernameAttributes:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseGetUsernameAttributes'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    GetUsernameAttributes400:
      description: Some details captured to identify the user were invalid or missing
      content:
        application/json:
          schema:
            properties:
              errors:
                items:
                  $ref: '#/components/schemas/GetUsernameAttributes400Item'
                type: array
            required:
              - errors
            type: object
            deprecated: true
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    GetUserPrincipals:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseGetUserPrincipals'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    RequestBankingTransactionDetailList:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseGetBankingTransactionDetailListStatus'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    GetBankingTransactionDetailListStatus:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseGetBankingTransactionDetailListStatus'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    RetrieveBankingTransactionDetailList:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseRetrieveBankingTransactionDetailList'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    ListBankingPayees:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseListBankingPayees'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    ListBankingPayments:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseListBankingPayments'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    ListBankingAccounts:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseListBankingAccounts'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    ListBankingTransactions:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseListBankingTransactions'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    ListBankingTransactions400:
      description: Bad Request
      content:
        application/json:
          schema:
            properties:
              errors:
                items:
                  $ref: '#/components/schemas/ListBankingTransactions400Item'
                type: array
            required:
              - errors
            type: object
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    ListBankingTransactions422:
      description: Unprocessable Entity Error
      content:
        application/json:
          schema:
            properties:
              errors:
                items:
                  $ref: '#/components/schemas/ListBankingTransactions422Item'
                type: array
            required:
              - errors
            type: object
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    SendNotification:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseSendNotification'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    GetClosedPrincipals:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseGetClosedPrincipals'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    GetCustomer:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseGetCustomer'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    ListEnergyAccounts:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseListEnergyAccounts'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    GetEnergyPaymentSchedule:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseGetEnergyPaymentSchedule'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    GetEnergyConcessions:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseGetEnergyConcessions'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    ListEnergyBalances:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseListEnergyBalances'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    ListEnergyBalances400:
      description: >-
        Request has malformed, missing or non-compliant JSON body or URL
        parameters.
      content:
        application/json:
          schema:
            properties:
              errors:
                items:
                  $ref: '#/components/schemas/ListEnergyBalances400Item'
                type: array
            required:
              - errors
            type: object
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    ListEnergyInvoices:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseListEnergyInvoices'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    ListEnergyInvoices400:
      description: Bad Request
      content:
        application/json:
          schema:
            properties:
              errors:
                items:
                  $ref: '#/components/schemas/ListEnergyInvoices400Item'
                type: array
            required:
              - errors
            type: object
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    ListEnergyInvoices422:
      description: Unprocessable Entity Error
      content:
        application/json:
          schema:
            properties:
              errors:
                items:
                  $ref: '#/components/schemas/ListEnergyInvoices422Item'
                type: array
            required:
              - errors
            type: object
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    ListEnergyBillings:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseListEnergyBillings'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    ListEnergyBillings400:
      description: Bad Request
      content:
        application/json:
          schema:
            properties:
              errors:
                items:
                  $ref: '#/components/schemas/ListEnergyBillings400Item'
                type: array
            required:
              - errors
            type: object
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    ListEnergyBillings422:
      description: Unprocessable Entity Error
      content:
        application/json:
          schema:
            properties:
              errors:
                items:
                  $ref: '#/components/schemas/ListEnergyBillings422Item'
                type: array
            required:
              - errors
            type: object
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
    GetFRMPDetails:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseGetFRMPDetails'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/XFAPIInteractionId'
  requestBodies:
    GetUserRequest:
      description: Get User Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RequestGetUser'
          encoding:
            payload:
              contentType: application/json
      required: true
    InitLoginRequest:
      description: Initiate a login request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RequestInitLogin'
          encoding:
            payload:
              contentType: application/json
      required: true
    VerifyLoginRequest:
      description: Verify a login
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RequestVerifyLogin'
          encoding:
            payload:
              contentType: application/json
      required: true
    GetUserNotificationInfoRequest:
      description: Lookup User Attributes
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RequestGetUserNotificationInfo'
          encoding:
            payload:
              contentType: application/json
      required: true
    GetUsernameAttributesRequest:
      description: Lookup User Attributes
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RequestGetUsernameAttributes'
          encoding:
            payload:
              contentType: application/json
      required: true
    GetUserPrincipalsRequest:
      description: Lookup User Principals
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RequestGetUserPrincipals'
          encoding:
            payload:
              contentType: application/json
      required: true
    RequestBankingTransactionDetailList:
      description: Request Banking Transaction Detail list
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RequestBankingTransactionDetailList'
          encoding:
            payload:
              contentType: application/json
      required: true
    SendNotificationRequest:
      description: Content of the Notification Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RequestSendNotification'
          encoding:
            payload:
              contentType: application/json
      required: true
    GetFRMPDetailsRequest:
      description: Lookup FRMP Details using a set of NMI
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RequestGetFRMPDetails'
          encoding:
            payload:
              contentType: application/json
      required: true
x-tagGroups:
  - name: Specification
    tags:
      - Common
      - Banking
      - Energy
      - Auth
      - Admin
      - Notification
      - Device
