All Downloads are FREE. Search and download functionalities are using the official Maven repository.

erdatastandards.api-model.0.9.5.source-code.cds_full_0.9.4.json Maven / Gradle / Ivy

Go to download

This artefact describes the Consumer Data Standards using Java classes and annotations in a way suitable for automatic generation of Open API Specification, documentation, Server Stub, Client Libraries and Reference Test.

There is a newer version: 1.1.1
Show newest version
{
  "swagger": "2.0",
  "info": {
    "title": "Consumer Data Standards",
    "description": "API sets created by the Australian Consumer Data Standards to meet the needs of the Consumer Data Right",
    "version": "0.9.4",
    "contact": {
      "name": "Consumer Data Standards",
      "url": "https://consumerdatastandards.org.au/",
      "email": "[email protected]"
    },
    "license": {
      "name": "MIT License",
      "url": "https://opensource.org/licenses/MIT"
    }
  },
  "host": "data.provider.com.au",
  "basePath": "/cds-au/v1",
  "schemes": [
    "https"
  ],
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "paths": {
    "/banking/accounts": {
      "get": {
        "summary": "Get Accounts",
        "description": "Obtain a list of accounts",
        "operationId": "listAccounts",
        "x-scopes": [
          "bank_basic_accounts"
        ],
        "tags": [
          "Banking",
          "Accounts"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ParamProductCategory"
          },
          {
            "$ref": "#/parameters/ParamAccountOpenStatus"
          },
          {
            "$ref": "#/parameters/ParamAccountIsOwned"
          },
          {
            "$ref": "#/parameters/ParamPage"
          },
          {
            "$ref": "#/parameters/ParamPageSize"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-v"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-min-v"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "x-v": {
                "type": "string",
                "description": "The [version](##response-headers) of the API end point that the provider has responded with."
              }
            },
            "schema": {
              "$ref": "#/definitions/ResponseBankingAccountList"
            }
          }
        },
        "x-version": "1"
      }
    },
    "/banking/accounts/balances": {
      "get": {
        "summary": "Get Bulk Balances",
        "description": "Obtain balances for multiple, filtered accounts",
        "operationId": "listBalancesBulk",
        "x-scopes": [
          "bank_basic_accounts"
        ],
        "tags": [
          "Banking",
          "Accounts"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ParamProductCategory"
          },
          {
            "$ref": "#/parameters/ParamAccountOpenStatus"
          },
          {
            "$ref": "#/parameters/ParamAccountIsOwned"
          },
          {
            "$ref": "#/parameters/ParamPage"
          },
          {
            "$ref": "#/parameters/ParamPageSize"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-v"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-min-v"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "x-v": {
                "type": "string",
                "description": "The [version](##response-headers) of the API end point that the provider has responded with."
              }
            },
            "schema": {
              "$ref": "#/definitions/ResponseBankingAccountsBalanceList"
            }
          }
        },
        "x-version": "1"
      },
      "post": {
        "summary": "Get Balances For Specific Accounts",
        "description": "Obtain balances for a specified list of accounts",
        "operationId": "listBalancesSpecificAccounts",
        "x-scopes": [
          "bank_basic_accounts"
        ],
        "tags": [
          "Banking",
          "Accounts"
        ],
        "parameters": [
          {
            "name": "accountIds",
            "in": "body",
            "description": "The list of account IDs to obtain balances for",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RequestAccountIds"
            }
          },
          {
            "$ref": "#/parameters/ParamPage"
          },
          {
            "$ref": "#/parameters/ParamPageSize"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-v"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-min-v"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "x-v": {
                "type": "string",
                "description": "The [version](##response-headers) of the API end point that the provider has responded with."
              }
            },
            "schema": {
              "$ref": "#/definitions/ResponseBankingAccountsBalanceList"
            }
          },
          "422": {
            "description": "The request was well formed but was unable to be processed due to business logic specific to the request",
            "schema": {
              "$ref": "#/definitions/ResponseErrorList"
            }
          }
        },
        "x-version": "1"
      }
    },
    "/banking/accounts/{accountId}/balance": {
      "get": {
        "summary": "Get Account Balance",
        "description": "Obtain the balance for a single specified account",
        "operationId": "listBalance",
        "x-scopes": [
          "bank_basic_accounts"
        ],
        "tags": [
          "Banking",
          "Accounts"
        ],
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "ID of the specific account requested",
            "required": true,
            "type": "string",
            "x-cds-type": "ASCIIString"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-v"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-min-v"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "x-v": {
                "type": "string",
                "description": "The [version](##response-headers) of the API end point that the provider has responded with."
              }
            },
            "schema": {
              "$ref": "#/definitions/ResponseBankingAccountsBalanceById"
            }
          }
        },
        "x-version": "1"
      }
    },
    "/banking/accounts/{accountId}": {
      "get": {
        "summary": "Get Account Detail",
        "description": "Obtain detailed information on a single account",
        "operationId": "getAccountDetail",
        "x-scopes": [
          "bank_detailed_accounts"
        ],
        "tags": [
          "Banking",
          "Accounts"
        ],
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "A tokenised identifier for the account which is unique but not shareable",
            "required": true,
            "type": "string",
            "x-cds-type": "ASCIIString"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-v"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-min-v"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "x-v": {
                "type": "string",
                "description": "The [version](##response-headers) of the API end point that the provider has responded with."
              }
            },
            "schema": {
              "$ref": "#/definitions/ResponseBankingAccountById"
            }
          }
        },
        "x-version": "1"
      }
    },
    "/banking/accounts/{accountId}/transactions": {
      "get": {
        "summary": "Get Transactions For Account",
        "description": "Obtain transactions for a specific account.\n\nSome general notes that apply to all end points that retrieve transactions:\n\n- Where multiple transactions are returned, transactions should be ordered according to effective date in descending order\n- 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 provider will use the “effective” date/time which will be defined as:\n\t\t- Posted date/time if available, then\n\t\t- Execution date/time if available, then\n\t\t- A reasonable date/time nominated by the data provider using internal data structures\n- For transaction amounts it should be assumed that a negative value indicates a reduction of the available balance on the account while a positive value indicates an increase in the available balance on the account",
        "operationId": "getTransactions",
        "x-scopes": [
          "bank_transactions"
        ],
        "tags": [
          "Banking",
          "Accounts"
        ],
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "ID of the account to get transactions for.  Must have previously been returned by one of the account list end points.",
            "required": true,
            "type": "string",
            "x-cds-type": "ASCIIString"
          },
          {
            "$ref": "#/parameters/ParamTransactionOldestTime"
          },
          {
            "$ref": "#/parameters/ParamTransactionNewestTime"
          },
          {
            "$ref": "#/parameters/ParamTransactionMinAmount"
          },
          {
            "$ref": "#/parameters/ParamTransactionMaxAmount"
          },
          {
            "$ref": "#/parameters/ParamTransactionText"
          },
          {
            "$ref": "#/parameters/ParamPage"
          },
          {
            "$ref": "#/parameters/ParamPageSize"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-v"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-min-v"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "x-v": {
                "type": "string",
                "description": "The [version](##response-headers) of the API end point that the provider has responded with."
              }
            },
            "schema": {
              "$ref": "#/definitions/ResponseBankingTransactionList"
            }
          }
        },
        "x-version": "1"
      }
    },
    "/banking/accounts/{accountId}/transactions/{transactionId}": {
      "get": {
        "summary": "Get Transaction Detail",
        "description": "Obtain detailed information on a transaction for a specific account",
        "operationId": "getTransactionDetail",
        "x-scopes": [
          "bank_transactions"
        ],
        "tags": [
          "Banking",
          "Accounts"
        ],
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "ID of the account to get transactions for.  Must have previously been returned by one of the account list end points",
            "required": true,
            "type": "string",
            "x-cds-type": "ASCIIString"
          },
          {
            "name": "transactionId",
            "in": "path",
            "description": "ID of the transaction obtained from a previous call to one of the other transaction end points",
            "required": true,
            "type": "string",
            "x-cds-type": "ASCIIString"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-v"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-min-v"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "x-v": {
                "type": "string",
                "description": "The [version](##response-headers) of the API end point that the provider has responded with."
              }
            },
            "schema": {
              "$ref": "#/definitions/ResponseBankingTransactionById"
            }
          }
        },
        "x-version": "1"
      }
    },
    "/banking/accounts/transactions": {
      "get": {
        "summary": "Get Transactions For Multiple Accounts",
        "description": "Obtain transactions for multiple, filtered accounts",
        "operationId": "listTransactionsBulk",
        "x-scopes": [
          "bank_transactions"
        ],
        "tags": [
          "Banking",
          "Accounts"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ParamProductCategory"
          },
          {
            "$ref": "#/parameters/ParamAccountOpenStatus"
          },
          {
            "$ref": "#/parameters/ParamAccountIsOwned"
          },
          {
            "$ref": "#/parameters/ParamTransactionNewestTime"
          },
          {
            "$ref": "#/parameters/ParamTransactionOldestTime"
          },
          {
            "$ref": "#/parameters/ParamTransactionMinAmount"
          },
          {
            "$ref": "#/parameters/ParamTransactionMaxAmount"
          },
          {
            "$ref": "#/parameters/ParamTransactionText"
          },
          {
            "$ref": "#/parameters/ParamPage"
          },
          {
            "$ref": "#/parameters/ParamPageSize"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-v"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-min-v"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "x-v": {
                "type": "string",
                "description": "The [version](##response-headers) of the API end point that the provider has responded with."
              }
            },
            "schema": {
              "$ref": "#/definitions/ResponseBankingTransactionList"
            }
          }
        },
        "x-version": "1"
      },
      "post": {
        "summary": "Get Transactions For Specific Accounts",
        "description": "Obtain transactions for a specified list of transactions.",
        "operationId": "listTransactionsSpecificAccounts",
        "x-scopes": [
          "bank_transactions"
        ],
        "tags": [
          "Banking",
          "Accounts"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ParamTransactionNewestTime"
          },
          {
            "$ref": "#/parameters/ParamTransactionOldestTime"
          },
          {
            "$ref": "#/parameters/ParamTransactionMinAmount"
          },
          {
            "$ref": "#/parameters/ParamTransactionMaxAmount"
          },
          {
            "$ref": "#/parameters/ParamTransactionText"
          },
          {
            "$ref": "#/parameters/ParamPage"
          },
          {
            "$ref": "#/parameters/ParamPageSize"
          },
          {
            "name": "accountIds",
            "in": "body",
            "description": "The list of account IDs to obtain information for",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RequestAccountIds"
            }
          },
          {
            "$ref": "#/parameters/RequestHeader_x-v"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-min-v"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "x-v": {
                "type": "string",
                "description": "The [version](##response-headers) of the API end point that the provider has responded with."
              }
            },
            "schema": {
              "$ref": "#/definitions/ResponseBankingTransactionList"
            }
          },
          "422": {
            "description": "The request was well formed but was unable to be processed due to business logic specific to the request",
            "schema": {
              "$ref": "#/definitions/ResponseErrorList"
            }
          }
        },
        "x-version": "1"
      }
    },
    "/banking/accounts/{accountId}/direct-debits": {
      "get": {
        "summary": "Get Direct Debits For Account",
        "description": "Obtain direct debit authorisations for a specific account",
        "operationId": "listDirectDebits",
        "x-scopes": [
          "bank_regular_payments"
        ],
        "tags": [
          "Banking",
          "Direct Debits"
        ],
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "ID of the account to get direct debit authorisations for.  Must have previously been returned by one of the account list end points.",
            "required": true,
            "type": "string",
            "x-cds-type": "ASCIIString"
          },
          {
            "$ref": "#/parameters/ParamPage"
          },
          {
            "$ref": "#/parameters/ParamPageSize"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-v"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-min-v"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "x-v": {
                "type": "string",
                "description": "The [version](##response-headers) of the API end point that the provider has responded with."
              }
            },
            "schema": {
              "$ref": "#/definitions/ResponseBankingDirectDebitAuthorisationList"
            }
          }
        },
        "x-version": "1"
      }
    },
    "/banking/accounts/direct-debits": {
      "get": {
        "summary": "Get Bulk Direct Debits",
        "description": "Obtain direct debit authorisations for multiple, filtered accounts",
        "operationId": "listDirectDebitsBulk",
        "x-scopes": [
          "bank_regular_payments"
        ],
        "tags": [
          "Banking",
          "Direct Debits"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ParamProductCategory"
          },
          {
            "$ref": "#/parameters/ParamAccountOpenStatus"
          },
          {
            "$ref": "#/parameters/ParamAccountIsOwned"
          },
          {
            "$ref": "#/parameters/ParamPage"
          },
          {
            "$ref": "#/parameters/ParamPageSize"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-v"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-min-v"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "x-v": {
                "type": "string",
                "description": "The [version](##response-headers) of the API end point that the provider has responded with."
              }
            },
            "schema": {
              "$ref": "#/definitions/ResponseBankingDirectDebitAuthorisationList"
            }
          }
        },
        "x-version": "1"
      },
      "post": {
        "summary": "Get Direct Debits For Specific Accounts",
        "description": "Obtain direct debit authorisations for a specified list of accounts",
        "operationId": "listDirectDebitsSpecificAccounts",
        "x-scopes": [
          "bank_regular_payments"
        ],
        "tags": [
          "Banking",
          "Direct Debits"
        ],
        "parameters": [
          {
            "name": "accountIds",
            "in": "body",
            "description": "Array of specific accountIds to obtain authorisations for",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RequestAccountIds"
            }
          },
          {
            "$ref": "#/parameters/ParamPage"
          },
          {
            "$ref": "#/parameters/ParamPageSize"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-v"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-min-v"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "x-v": {
                "type": "string",
                "description": "The [version](##response-headers) of the API end point that the provider has responded with."
              }
            },
            "schema": {
              "$ref": "#/definitions/ResponseBankingDirectDebitAuthorisationList"
            }
          },
          "422": {
            "description": "The request was well formed but was unable to be processed due to business logic specific to the request",
            "schema": {
              "$ref": "#/definitions/ResponseErrorList"
            }
          }
        },
        "x-version": "1"
      }
    },
    "/banking/accounts/{accountId}/payments/scheduled": {
      "get": {
        "summary": "Get Scheduled Payments for Account",
        "description": "Obtain scheduled, outgoing payments for a specific account",
        "operationId": "listScheduledPayments",
        "x-scopes": [
          "bank_regular_payments"
        ],
        "tags": [
          "Banking",
          "Scheduled Payments"
        ],
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "ID of the account to get scheduled payments for. Must have previously been returned by one of the account list end points. The account specified is the source account for the payment",
            "required": true,
            "type": "string",
            "x-cds-type": "ASCIIString"
          },
          {
            "$ref": "#/parameters/ParamPage"
          },
          {
            "$ref": "#/parameters/ParamPageSize"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-v"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-min-v"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "x-v": {
                "type": "string",
                "description": "The [version](##response-headers) of the API end point that the provider has responded with."
              }
            },
            "schema": {
              "$ref": "#/definitions/ResponseBankingScheduledPaymentsList"
            }
          }
        },
        "x-version": "1"
      }
    },
    "/banking/payments/scheduled": {
      "get": {
        "summary": "Get Scheduled Payments Bulk",
        "description": "Obtain scheduled payments for multiple, filtered accounts that are the source of funds for the payments",
        "operationId": "listScheduledPaymentsBulk",
        "x-scopes": [
          "bank_regular_payments"
        ],
        "tags": [
          "Banking",
          "Scheduled Payments"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ParamProductCategory"
          },
          {
            "$ref": "#/parameters/ParamAccountOpenStatus"
          },
          {
            "$ref": "#/parameters/ParamAccountIsOwned"
          },
          {
            "$ref": "#/parameters/ParamPage"
          },
          {
            "$ref": "#/parameters/ParamPageSize"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-v"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-min-v"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "x-v": {
                "type": "string",
                "description": "The [version](##response-headers) of the API end point that the provider has responded with."
              }
            },
            "schema": {
              "$ref": "#/definitions/ResponseBankingScheduledPaymentsList"
            }
          }
        },
        "x-version": "1"
      },
      "post": {
        "summary": "Get Scheduled Payments For Specific Accounts",
        "description": "Obtain scheduled payments for a specified list of accounts",
        "operationId": "listScheduledPaymentsSpecificAccounts",
        "x-scopes": [
          "bank_regular_payments"
        ],
        "tags": [
          "Banking",
          "Scheduled Payments"
        ],
        "parameters": [
          {
            "name": "accountIds",
            "in": "body",
            "description": "Array of specific accountIds to obtain scheduled payments for.  The accounts specified are the source of funds for the payments returned",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RequestAccountIds"
            }
          },
          {
            "$ref": "#/parameters/ParamPage"
          },
          {
            "$ref": "#/parameters/ParamPageSize"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-v"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-min-v"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "x-v": {
                "type": "string",
                "description": "The [version](##response-headers) of the API end point that the provider has responded with."
              }
            },
            "schema": {
              "$ref": "#/definitions/ResponseBankingScheduledPaymentsList"
            }
          },
          "422": {
            "description": "The request was well formed but was unable to be processed due to business logic specific to the request",
            "schema": {
              "$ref": "#/definitions/ResponseErrorList"
            }
          }
        },
        "x-version": "1"
      }
    },
    "/banking/payees": {
      "get": {
        "summary": "Get Payees",
        "description": "Obtain a list of pre-registered payees",
        "operationId": "listPayees",
        "x-scopes": [
          "bank_basic_accounts"
        ],
        "tags": [
          "Banking",
          "Payees"
        ],
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "description": "Filter on the payee type field.  In addition to normal type field values, ALL can be specified to retrieve all payees.  If absent the assumed value is ALL",
            "required": false,
            "type": "string",
            "enum": [
              "DOMESTIC",
              "INTERNATIONAL",
              "BILLER",
              "ALL"
            ],
            "default": "ALL"
          },
          {
            "$ref": "#/parameters/ParamPage"
          },
          {
            "$ref": "#/parameters/ParamPageSize"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-v"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-min-v"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "x-v": {
                "type": "string",
                "description": "The [version](##response-headers) of the API end point that the provider has responded with."
              }
            },
            "schema": {
              "$ref": "#/definitions/ResponseBankingPayeeList"
            }
          }
        },
        "x-version": "1"
      }
    },
    "/banking/payees/{payeeId}": {
      "get": {
        "summary": "Get Payee Detail",
        "description": "Obtain detailed information on a single payee",
        "operationId": "getPayeeDetail",
        "x-scopes": [
          "bank_payees"
        ],
        "tags": [
          "Banking",
          "Payees"
        ],
        "parameters": [
          {
            "name": "payeeId",
            "in": "path",
            "description": "The ID used to locate the details of a particular payee",
            "required": true,
            "type": "string",
            "x-cds-type": "ASCIIString"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-v"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-min-v"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "x-v": {
                "type": "string",
                "description": "The [version](##response-headers) of the API end point that the provider has responded with."
              }
            },
            "schema": {
              "$ref": "#/definitions/ResponseBankingPayeeById"
            }
          }
        },
        "x-version": "1"
      }
    },
    "/banking/products": {
      "get": {
        "summary": "Get Products",
        "description": "Obtain a list of products that are currently openly offered to the market\n\nNote that the results returned by this end point are expected to be ordered according to updated-since\n\n### Conventions\nIn the product reference payloads there are a number of recurring conventions that are explained here, in one place.\n\n#### Arrays Of Features\n\nIn the product detail payload there are a number of arrays articulating generic features, constraints, prices, etc. The intent of these arrays is as follows:\n\n- Each element in an array has the same structure so that clients can reliably interpret the payloads\n- Each element as a type element that is an enumeration of the specific aspect of a product being described, such as types of fees.\n- Each element has a field name [additionalValue](#productfeaturetypedoc).  This is a generic field with contents that will vary based on the type of object being described. The contents of this field for the ADDITIONAL_CARDS feature is the number of cards allowed while the contents of this field for the MAX_LIMIT constraint would be the maximum credit limit allowed for the product.\n- An element in these arrays of the same type may appear more than once. For instance, a product may offer two separate loyalty programs that the customer can select from. A fixed term mortgage may have different rates for different term lengths.\n- An element in these arrays may contain an additionalInfo and additionalInfoUri field. The additionalInfo field is used to provide displayable text clarifying the purpose of the element in some way when the product is presented to a customer. The additionalInfoUri provides a link to externally hosted information specifically relevant to that feature of the product.\n- Depending on the type of data being represented there may be additional specific fields.\n\n#### URIs To More Information\n\nAs the complexities and nuances of a financial product can not easily be fully expressed in a data structure without a high degree of complexity it is necessary to provide additional reference information that a potential customer can access so that they are fully informed of the features and implications of the product. The payloads for product reference therefore contain numerous fields that are provided to allow the product provider to describe the product more fully using a web page hosted on their online channels.\n\nThese URIs do not need to all link to different pages. If desired, they can all link to a single hosted page and use difference HTML anchors to focus on a specific topic such as eligibility or fees.\n\n#### Linkage To Accounts\nFrom the moment that a customer applies for a product and an account is created the account and the product that spawned it will diverge.  Rates and features of the product may change and a discount may be negotiated for the account.\n\nFor this reason, while productCategory is a common field between accounts and products, there is no specific ID that can be used to link an account to a product within the regime.\n\nSimilarly, many of the fields and objects in the product payload will appear in the account detail payload but the structures and semantics are not identical as one refers to a product that can potentially be originated and one refers to an account that actual has been instantiated and created along with the associated decisions inherent in that process.\n\n#### Dates\nIt is expected that data consumers needing this data will call relatively frequently to ensure the data they have is representative of the current offering from a bank.  To minimise the volume and frequency of these calls the ability to set a lastUpdated field with the date and time of the last update to this product is included.  A call for a list of products can then be filtered to only return products that have been updated since the last time that data was obtained using the updated-since query parameter.\n\nIn addition, the concept of effective date and time has also been included.  This allows for a product to be marked for obsolescence, or introduction, from a certain time without the need for an update to show that a product has been changed.  The inclusion of these dates also removes the need to represent deleted products in the payload.  Products that are no long offered can be marked not effective for a few weeks before they are then removed from the product set as an option entirely.",
        "operationId": "listProducts",
        "tags": [
          "Banking",
          "Products"
        ],
        "parameters": [
          {
            "name": "effective",
            "in": "query",
            "description": "Allows for the filtering of products based on whether the current time is within the period of time defined as effective by the effectiveFrom and effectiveTo fields. Valid values are ‘CURRENT’, ‘FUTURE’ and ‘ALL’. If absent defaults to 'CURRENT'",
            "required": false,
            "type": "string",
            "enum": [
              "CURRENT",
              "FUTURE",
              "ALL"
            ],
            "default": "CURRENT"
          },
          {
            "name": "updated-since",
            "in": "query",
            "description": "Only include products that have been updated after the specified date and time. If absent defaults to include all products",
            "required": false,
            "type": "string",
            "x-cds-type": "DateTimeString"
          },
          {
            "name": "brand",
            "in": "query",
            "description": "Filter results based on a specific brand",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ParamProductCategory"
          },
          {
            "$ref": "#/parameters/ParamPage"
          },
          {
            "$ref": "#/parameters/ParamPageSize"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-v"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-min-v"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "x-v": {
                "type": "string",
                "description": "The [version](##response-headers) of the API end point that the provider has responded with."
              }
            },
            "schema": {
              "$ref": "#/definitions/ResponseBankingProductList"
            }
          }
        },
        "x-version": "1"
      }
    },
    "/banking/products/{productId}": {
      "get": {
        "summary": "Get Product Detail",
        "description": "Obtain detailed information on a single product offered openly to the market",
        "operationId": "getProductDetail",
        "tags": [
          "Banking",
          "Products"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "ID of the specific product requested",
            "required": true,
            "type": "string",
            "x-cds-type": "ASCIIString"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-v"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-min-v"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "x-v": {
                "type": "string",
                "description": "The [version](##response-headers) of the API end point that the provider has responded with."
              }
            },
            "schema": {
              "$ref": "#/definitions/ResponseBankingProductById"
            }
          }
        },
        "x-version": "1"
      }
    },
    "/common/customer": {
      "get": {
        "summary": "Get Customer",
        "description": "Obtain basic information on the customer that has authorised the current session",
        "operationId": "getCustomer",
        "x-scopes": [
          "common_basic_customer"
        ],
        "tags": [
          "Common",
          "Customer"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/RequestHeader_x-v"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-min-v"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "x-v": {
                "type": "string",
                "description": "The [version](##response-headers) of the API end point that the provider has responded with."
              }
            },
            "schema": {
              "$ref": "#/definitions/ResponseCommonCustomer"
            }
          }
        },
        "x-version": "1"
      }
    },
    "/common/customer/detail": {
      "get": {
        "summary": "Get Customer Detail",
        "description": "Obtain detailed information on the authorised customer within the current session.",
        "operationId": "getCustomerDetail",
        "x-scopes": [
          "common_detailed_customer"
        ],
        "tags": [
          "Common",
          "Customer"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/RequestHeader_x-v"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-min-v"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "x-v": {
                "type": "string",
                "description": "The [version](##response-headers) of the API end point that the provider has responded with."
              }
            },
            "schema": {
              "$ref": "#/definitions/ResponseCommonCustomerDetail"
            }
          }
        },
        "x-version": "1"
      }
    },
    "/discovery/status": {
      "get": {
        "summary": "Get Status",
        "description": "Obtain a health check status for the implementation",
        "operationId": "getStatus",
        "tags": [
          "Common",
          "Discovery"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/RequestHeader_x-v"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-min-v"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "x-v": {
                "type": "string",
                "description": "The [version](##response-headers) of the API end point that the provider has responded with."
              }
            },
            "schema": {
              "$ref": "#/definitions/ResponseDiscoveryStatus"
            }
          }
        },
        "x-version": "1"
      }
    },
    "/discovery/outages": {
      "get": {
        "summary": "Get Outages",
        "description": "Obtain a list of scheduled outages for the implementation",
        "operationId": "getOutages",
        "tags": [
          "Common",
          "Discovery"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/RequestHeader_x-v"
          },
          {
            "$ref": "#/parameters/RequestHeader_x-min-v"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "x-v": {
                "type": "string",
                "description": "The [version](##response-headers) of the API end point that the provider has responded with."
              }
            },
            "schema": {
              "$ref": "#/definitions/ResponseDiscoveryOutages"
            }
          }
        },
        "x-version": "1"
      }
    }
  },
  "parameters": {
    "RequestHeader_x-v": {
      "name": "x-v",
      "description": "Version of the API end point requested by the client. Must be set to a positive integer. If the version(s) requested is not supported then the provider should respond with a 406 Not Acceptable. See [here](##request-headers)",
      "in": "header",
      "type": "string",
      "required": true
    },
    "RequestHeader_x-min-v": {
      "name": "x-min-v",
      "description": "Minimum version of the API end point requested by the client. Must be set to a positive integer if provided. The provider should respond with the highest supported version between [x-min-v](##request-headers) and [x-v](##request-headers). If all versions requested are not supported then the provider should respond with a 406 Not Acceptable.",
      "in": "header",
      "type": "string"
    },
    "ParamAccountOpenStatus": {
      "name": "open-status",
      "in": "query",
      "description": "Used to filter results according to open/closed status. Values can be OPEN, CLOSED or ALL. If absent then ALL is assumed",
      "required": false,
      "type": "string",
      "enum": [
        "OPEN",
        "CLOSED",
        "ALL"
      ],
      "default": "ALL"
    },
    "ParamProductCategory": {
      "name": "product-category",
      "in": "query",
      "description": "Used to filter results on the productCategory field applicable to accounts. Any one of the valid values for this field can be supplied. If absent then all accounts returned.",
      "required": false,
      "type": "string",
      "enum": [
        "TRANS_AND_SAVINGS_ACCOUNTS",
        "TERM_DEPOSITS",
        "TRAVEL_CARDS",
        "REGULATED_TRUST_ACCOUNTS",
        "RESIDENTIAL_MORTGAGES",
        "CRED_AND_CHRG_CARDS",
        "PERS_LOANS",
        "MARGIN_LOANS",
        "LEASES",
        "TRADE_FINANCE",
        "OVERDRAFTS",
        "BUSINESS_LOANS"
      ]
    },
    "ParamAccountIsOwned": {
      "name": "is-owned",
      "in": "query",
      "description": "Filters accounts based on whether they are owned by the authorised customer.  True for owned accounts, false for unowned accounts and absent for all accounts",
      "required": false,
      "type": "boolean",
      "x-cds-type": "Boolean"
    },
    "ParamPage": {
      "name": "page",
      "in": "query",
      "description": "Page of results to request (standard pagination)",
      "required": false,
      "type": "integer",
      "x-cds-type": "PositiveInteger",
      "default": 1
    },
    "ParamPageSize": {
      "name": "page-size",
      "in": "query",
      "description": "Page size to request. Default is 25 (standard pagination)",
      "required": false,
      "type": "integer",
      "x-cds-type": "PositiveInteger",
      "default": 25
    },
    "ParamTransactionNewestTime": {
      "name": "newest-time",
      "in": "query",
      "description": "Constrain the transaction history request to transactions with effective time at or before this date/time.  If absent defaults to today.  Format is aligned to DateTimeString common type",
      "required": false,
      "type": "string",
      "x-cds-type": "DateTimeString"
    },
    "ParamTransactionOldestTime": {
      "name": "oldest-time",
      "in": "query",
      "description": "Constrain the transaction history request to transactions with effective time at or after this date/time. If absent defaults to newest-time minus 90 days.  Format is aligned to DateTimeString common type",
      "required": false,
      "type": "string",
      "x-cds-type": "DateTimeString"
    },
    "ParamTransactionMinAmount": {
      "name": "min-amount",
      "in": "query",
      "description": "Filter transactions to only transactions with amounts higher or equal to than this amount",
      "required": false,
      "type": "string",
      "x-cds-type": "AmountString"
    },
    "ParamTransactionMaxAmount": {
      "name": "max-amount",
      "in": "query",
      "description": "Filter transactions to only transactions with amounts less than or equal to than this amount",
      "required": false,
      "type": "string",
      "x-cds-type": "AmountString"
    },
    "ParamTransactionText": {
      "name": "text",
      "in": "query",
      "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",
      "required": false,
      "type": "string"
    }
  },
  "definitions": {
    "RequestAccountIds": {
      "type": "object",
      "required": [
        "data",
        "meta"
      ],
      "properties": {
        "data": {
          "type": "object",
          "required": [
            "accountIds"
          ],
          "properties": {
            "accountIds": {
              "type": "array",
              "items": {
                "type": "string",
                "description": "Array of specific accountIds to obtain authorisations for",
                "x-cds-type": "ASCIIString"
              }
            }
          }
        },
        "meta": {
          "$ref": "#/definitions/Meta"
        }
      }
    },
    "ResponseBankingProductList": {
      "type": "object",
      "required": [
        "data",
        "links",
        "meta"
      ],
      "properties": {
        "data": {
          "type": "object",
          "required": [
            "products"
          ],
          "properties": {
            "products": {
              "description": "The list of products returned.  If the filter results in an empty set then this array may have no records",
              "type": "array",
              "items": {
                "$ref": "#/definitions/BankingProduct"
              }
            }
          }
        },
        "links": {
          "$ref": "#/definitions/LinksPaginated"
        },
        "meta": {
          "$ref": "#/definitions/MetaPaginated"
        }
      }
    },
    "BankingProduct": {
      "type": "object",
      "required": [
        "productId",
        "lastUpdated",
        "productCategory",
        "name",
        "description",
        "brand",
        "isTailored"
      ],
      "properties": {
        "productId": {
          "type": "string",
          "description": "A provider specific unique identifier for this product. This identifier must be unique to a product but does not otherwise need to adhere to ID permanence guidelines.",
          "x-cds-type": "ASCIIString"
        },
        "effectiveFrom": {
          "type": "string",
          "description": "The date and time from which this product is effective (ie. is available for origination).  Used to enable the articulation of products to the regime before they are available for customers to originate",
          "x-cds-type": "DateTimeString"
        },
        "effectiveTo": {
          "type": "string",
          "description": "The date and time at which this product will be retired and will no longer be offered.  Used to enable the managed deprecation of products",
          "x-cds-type": "DateTimeString"
        },
        "lastUpdated": {
          "type": "string",
          "description": "The last date and time that the information for this product was changed (or the creation date for the product if it has never been altered)",
          "x-cds-type": "DateTimeString"
        },
        "productCategory": {
          "$ref": "#/definitions/BankingProductCategory"
        },
        "name": {
          "type": "string",
          "description": "The display name of the product"
        },
        "description": {
          "type": "string",
          "description": "A description of the product"
        },
        "brand": {
          "type": "string",
          "description": "A label of the brand for the product. Able to be used for filtering. For data providers with single brands this value is still required"
        },
        "brandName": {
          "type": "string",
          "description": "An optional display name of the brand"
        },
        "applicationUri": {
          "type": "string",
          "description": "A link to an application web page where this product can be applied for.",
          "x-cds-type": "URIString"
        },
        "isTailored": {
          "type": "boolean",
          "description": "Indicates whether the product is specifically tailored to a circumstance.  In this case fees and prices are significantly negotiated depending on context. While all products are open to a degree of tailoring this flag indicates that tailoring is expected and thus that the provision of specific fees and rates is not applicable",
          "x-cds-type": "Boolean"
        },
        "additionalInformation": {
          "description": "Object that contains links to additional information on specific topics",
          "type": "object",
          "properties": {
            "overviewUri": {
              "type": "string",
              "description": "General overview of the product",
              "x-cds-type": "URIString"
            },
            "termsUri": {
              "type": "string",
              "description": "Terms and conditions for the product",
              "x-cds-type": "URIString"
            },
            "eligibilityUri": {
              "type": "string",
              "description": "Eligibility rules and criteria for the product",
              "x-cds-type": "URIString"
            },
            "feesAndPricingUri": {
              "type": "string",
              "description": "Description of fees, pricing, discounts, exemptions and bonuses for the product",
              "x-cds-type": "URIString"
            },
            "bundleUri": {
              "type": "string",
              "description": "Description of a bundle that this product can be part of",
              "x-cds-type": "URIString"
            }
          }
        }
      }
    },
    "ResponseBankingProductById": {
      "type": "object",
      "required": [
        "data",
        "links",
        "meta"
      ],
      "properties": {
        "data": {
          "$ref": "#/definitions/BankingProductDetail"
        },
        "links": {
          "$ref": "#/definitions/Links"
        },
        "meta": {
          "$ref": "#/definitions/Meta"
        }
      }
    },
    "BankingProductDetail": {
      "allOf": [
        {
          "$ref": "#/definitions/BankingProduct"
        },
        {
          "type": "object",
          "properties": {
            "bundles": {
              "description": "An array of bundles that this product participates in.  Each bundle is described by free form information but also by a list of product IDs of the other products that are included in the bundle.  It is assumed that the current product is included in the bundle also",
              "type": "array",
              "items": {
                "$ref": "#/definitions/BankingProductBundle"
              }
            },
            "features": {
              "description": "Array of features available for the product",
              "type": "array",
              "items": {
                "$ref": "#/definitions/BankingProductFeature"
              }
            },
            "constraints": {
              "description": "Constraints on the application for or operation of the product such as minimum balances or limit thresholds",
              "type": "array",
              "items": {
                "$ref": "#/definitions/BankingProductConstraint"
              }
            },
            "eligibility": {
              "description": "Eligibility criteria for the product",
              "type": "array",
              "items": {
                "$ref": "#/definitions/BankingProductEligibility"
              }
            },
            "fees": {
              "description": "Fees applicable for the product",
              "type": "array",
              "items": {
                "$ref": "#/definitions/BankingProductFee"
              }
            },
            "depositRates": {
              "description": "Interest rates available for deposits",
              "type": "array",
              "items": {
                "$ref": "#/definitions/BankingProductDepositRate"
              }
            },
            "lendingRates": {
              "description": "Interest rates charged against lending balances",
              "type": "array",
              "items": {
                "$ref": "#/definitions/BankingProductLendingRate"
              }
            }
          }
        }
      ]
    },
    "BankingProductBundle": {
      "type": "object",
      "required": [
        "name",
        "description",
        "productIds"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the bundle"
        },
        "description": {
          "type": "string",
          "description": "Description of the bundle"
        },
        "additionalInfo": {
          "type": "string",
          "description": "Display text providing more information on the bundle"
        },
        "additionalInfoUri": {
          "type": "string",
          "description": "Link to a web page with more information on the bundle criteria and benefits",
          "x-cds-type": "URIString"
        },
        "productIds": {
          "type": "array",
          "description": "Array of product IDs for products included in the bundle",
          "items": {
            "type": "string",
            "x-cds-type": "ASCIIString"
          }
        }
      }
    },
    "BankingProductFeature": {
      "type": "object",
      "required": [
        "featureType"
      ],
      "x-conditional": [
        "additionalValue",
        "additionalInfo"
      ],
      "properties": {
        "featureType": {
          "type": "string",
          "description": "The type of feature described",
          "enum": [
            "CARD_ACCESS",
            "ADDITIONAL_CARDS",
            "UNLIMITED_TXNS",
            "FREE_TXNS",
            "FREE_TXNS_ALLOWANCE",
            "LOYALTY_PROGRAM",
            "OFFSET",
            "OVERDRAFT",
            "REDRAW",
            "INSURANCE",
            "BALANCE_TRANSFERS",
            "INTEREST_FREE",
            "INTEREST_FREE_TRANSFERS",
            "DIGITAL_WALLET",
            "DIGITAL_BANKING",
            "NPP_PAYID",
            "NPP_ENABLED",
            "DONATE_INTEREST",
            "BILL_PAYMENT",
            "COMPLEMENTARY_PRODUCT_DISCOUNTS",
            "BONUS_REWARDS",
            "NOTIFICATIONS",
            "OTHER"
          ]
        },
        "additionalValue": {
          "type": "string",
          "description": "Generic field containing additional information relevant to the [featureType](#tocSproductfeaturetypedoc) specified. Whether mandatory or not is dependent on the value of the [featureType.](#tocSproductfeaturetypedoc)"
        },
        "additionalInfo": {
          "type": "string",
          "description": "Display text providing more information on the feature. Mandatory if the [feature type](#tocSproductfeaturetypedoc) is set to OTHER"
        },
        "additionalInfoUri": {
          "type": "string",
          "description": "Link to a web page with more information on this feature",
          "x-cds-type": "URIString"
        }
      }
    },
    "BankingProductConstraint": {
      "type": "object",
      "required": [
        "constraintType"
      ],
      "x-conditional": [
        "additionalValue"
      ],
      "properties": {
        "constraintType": {
          "type": "string",
          "description": "The type of constraint described.  See the next section for an overview of valid values and their meaning",
          "enum": [
            "MIN_BALANCE",
            "MAX_BALANCE",
            "OPENING_BALANCE",
            "MAX_LIMIT",
            "MIN_LIMIT"
          ]
        },
        "additionalValue": {
          "type": "string",
          "description": "Generic field containing additional information relevant to the [constraintType](#tocSproductconstrainttypedoc) specified.  Whether mandatory or not is dependent on the value of [constraintType](#tocSproductconstrainttypedoc)"
        },
        "additionalInfo": {
          "type": "string",
          "description": "Display text providing more information the constraint"
        },
        "additionalInfoUri": {
          "type": "string",
          "description": "Link to a web page with more information on the constraint",
          "x-cds-type": "URIString"
        }
      }
    },
    "BankingProductEligibility": {
      "type": "object",
      "required": [
        "eligibilityType"
      ],
      "x-conditional": [
        "additionalValue",
        "additionalInfo"
      ],
      "properties": {
        "eligibilityType": {
          "type": "string",
          "description": "The type of eligibility criteria described.  See the next section for an overview of valid values and their meaning",
          "enum": [
            "BUSINESS",
            "PENSION_RECIPIENT",
            "MIN_AGE",
            "MAX_AGE",
            "MIN_INCOME",
            "MIN_TURNOVER",
            "STAFF",
            "STUDENT",
            "EMPLOYMENT_STATUS",
            "RESIDENCY_STATUS",
            "NATURAL_PERSON",
            "OTHER"
          ]
        },
        "additionalValue": {
          "type": "string",
          "description": "Generic field containing additional information relevant to the [eligibilityType](#tocSproducteligibilitytypedoc) specified.  Whether mandatory or not is dependent on the value of [eligibilityType](#tocSproducteligibilitytypedoc)"
        },
        "additionalInfo": {
          "type": "string",
          "description": "Display text providing more information on the eligibility criteria. Mandatory if the [eligibilityType](#tocSproducteligibilitytypedoc) field is set to OTHER"
        },
        "additionalInfoUri": {
          "type": "string",
          "description": "Link to a web page with more information on this eligibility criteria",
          "x-cds-type": "URIString"
        }
      }
    },
    "BankingProductFee": {
      "type": "object",
      "required": [
        "name",
        "feeType"
      ],
      "x-conditional": [
        "additionalValue",
        "amount",
        "balanceRate",
        "transactionRate",
        "accruedRate"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the fee"
        },
        "feeType": {
          "type": "string",
          "description": "The type of fee",
          "enum": [
            "PERIODIC",
            "TRANSACTION",
            "WITHDRAWAL",
            "DEPOSIT",
            "PAYMENT",
            "PURCHASE",
            "EVENT",
            "UPFRONT",
            "EXIT"
          ]
        },
        "amount": {
          "type": "string",
          "description": "The amount charged for the fee. One of amount, balanceRate, transactionRate and accruedRate is mandatory",
          "x-cds-type": "AmountString"
        },
        "balanceRate": {
          "type": "string",
          "description": "A fee rate calculated based on a proportion of the balance. One of amount, balanceRate, transactionRate and accruedRate is mandatory",
          "x-cds-type": "RateString"
        },
        "transactionRate": {
          "type": "string",
          "description": "A fee rate calculated based on a proportion of a transaction. One of amount, balanceRate, transactionRate and accruedRate is mandatory",
          "x-cds-type": "RateString"
        },
        "accruedRate": {
          "type": "string",
          "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",
          "x-cds-type": "RateString"
        },
        "accrualFrequency": {
          "type": "string",
          "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)",
          "x-cds-type": "ExternalRef"
        },
        "currency": {
          "type": "string",
          "description": "The currency the fee will be charged in. Assumes AUD if absent",
          "x-cds-type": "CurrencyString"
        },
        "additionalValue": {
          "type": "string",
          "description": "Generic field containing additional information relevant to the [feeType](#tocSproductfeetypedoc) specified. Whether mandatory or not is dependent on the value of [feeType](#tocSproductfeetypedoc)"
        },
        "additionalInfo": {
          "type": "string",
          "description": "Display text providing more information on the fee"
        },
        "additionalInfoUri": {
          "type": "string",
          "description": "Link to a web page with more information on this fee",
          "x-cds-type": "URIString"
        },
        "discounts": {
          "description": "An optional list of discounts to this fee that may be available",
          "type": "array",
          "items": {
            "$ref": "#/definitions/BankingProductDiscount"
          }
        }
      }
    },
    "BankingProductDiscount": {
      "type": "object",
      "required": [
        "description",
        "discountType",
        "amount"
      ],
      "x-conditional": [
        "balanceRate",
        "transactionRate",
        "accruedRate",
        "feeRate",
        "additionalValue"
      ],
      "properties": {
        "description": {
          "type": "string",
          "description": "Description of the discount"
        },
        "discountType": {
          "type": "string",
          "description": "The type of discount. See the next section for an overview of valid values and their meaning",
          "enum": [
            "BALANCE",
            "DEPOSITS",
            "PAYMENTS",
            "FEE_CAP",
            "ELIGIBILITY_ONLY"
          ]
        },
        "amount": {
          "type": "string",
          "description": "Value of the discount",
          "x-cds-type": "AmountString"
        },
        "balanceRate": {
          "type": "string",
          "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",
          "x-cds-type": "RateString"
        },
        "transactionRate": {
          "type": "string",
          "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",
          "x-cds-type": "RateString"
        },
        "accruedRate": {
          "type": "string",
          "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",
          "x-cds-type": "RateString"
        },
        "feeRate": {
          "type": "string",
          "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",
          "x-cds-type": "RateString"
        },
        "additionalValue": {
          "type": "string",
          "description": "Generic field containing additional information relevant to the [discountType](#tocSproductdiscounttypedoc) specified. Whether mandatory or not is dependent on the value of [discountType](#tocSproductdiscounttypedoc)"
        },
        "additionalInfo": {
          "type": "string",
          "description": "Display text providing more information on the discount"
        },
        "additionalInfoUri": {
          "type": "string",
          "description": "Link to a web page with more information on this discount",
          "x-cds-type": "URIString"
        },
        "eligibility": {
          "description": "Eligibility constraints that apply to this discount",
          "type": "array",
          "items": {
            "$ref": "#/definitions/BankingProductDiscountEligibility"
          }
        }
      }
    },
    "BankingProductDiscountEligibility": {
      "type": "object",
      "required": [
        "discountEligibilityType"
      ],
      "x-conditional": [
        "additionalValue"
      ],
      "properties": {
        "discountEligibilityType": {
          "type": "string",
          "description": "The type of the specific eligibility constraint for a discount",
          "enum": [
            "BUSINESS",
            "PENSION_RECIPIENT",
            "MIN_AGE",
            "MAX_AGE",
            "MIN_INCOME",
            "MIN_TURNOVER",
            "STAFF",
            "STUDENT",
            "EMPLOYMENT_STATUS",
            "RESIDENCY_STATUS",
            "NATURAL_PERSON",
            "INTRODUCTORY",
            "OTHER"
          ]
        },
        "additionalValue": {
          "type": "string",
          "description": "Generic field containing additional information relevant to the [discountEligibilityType](#tocSproductdiscounteligibilitydoc) specified. Whether mandatory or not is dependent on the value of [discountEligibilityType](#tocSproductdiscounteligibilitydoc)"
        },
        "additionalInfo": {
          "type": "string",
          "description": "Display text providing more information on this eligibility constraint"
        },
        "additionalInfoUri": {
          "type": "string",
          "description": "Link to a web page with more information on this eligibility constraint",
          "x-cds-type": "URIString"
        }
      }
    },
    "BankingProductDepositRate": {
      "type": "object",
      "required": [
        "depositRateType",
        "rate"
      ],
      "x-conditional": [
        "additionalValue"
      ],
      "properties": {
        "depositRateType": {
          "type": "string",
          "description": "The type of rate (base, bonus, etc). See the next section for an overview of valid values and their meaning",
          "enum": [
            "FIXED",
            "BONUS",
            "BUNDLE_BONUS",
            "VARIABLE",
            "INTRODUCTORY",
            "FLOATING",
            "MARKET_LINKED"
          ]
        },
        "rate": {
          "type": "string",
          "description": "The rate to be applied",
          "x-cds-type": "RateString"
        },
        "calculationFrequency": {
          "type": "string",
          "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)",
          "x-cds-type": "ExternalRef"
        },
        "applicationFrequency": {
          "type": "string",
          "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)",
          "x-cds-type": "ExternalRef"
        },
        "tiers": {
          "type": "array",
          "description": "Rate tiers applicable for this rate",
          "items": {
            "$ref": "#/definitions/BankingProductRateTier"
          }
        },
        "additionalValue": {
          "type": "string",
          "description": "Generic field containing additional information relevant to the [depositRateType](#tocSproductdepositratetypedoc) specified. Whether mandatory or not is dependent on the value of [depositRateType](#tocSproductdepositratetypedoc)"
        },
        "additionalInfo": {
          "type": "string",
          "description": "Display text providing more information on the rate"
        },
        "additionalInfoUri": {
          "type": "string",
          "description": "Link to a web page with more information on this rate",
          "x-cds-type": "URIString"
        }
      }
    },
    "BankingProductLendingRate": {
      "type": "object",
      "required": [
        "lendingRateType",
        "rate"
      ],
      "x-conditional": [
        "additionalValue"
      ],
      "properties": {
        "lendingRateType": {
          "type": "string",
          "description": "The type of rate (fixed, variable, etc). See the next section for an overview of valid values and their meaning",
          "enum": [
            "FIXED",
            "VARIABLE",
            "INTRODUCTORY",
            "DISCOUNT",
            "PENALTY",
            "FLOATING",
            "MARKET_LINKED",
            "CASH_ADVANCE",
            "PURCHASE",
            "BUNDLE_DISCOUNT_FIXED",
            "BUNDLE_DISCOUNT_VARIABLE"
          ]
        },
        "rate": {
          "type": "string",
          "description": "The rate to be applied",
          "x-cds-type": "RateString"
        },
        "comparisonRate": {
          "type": "string",
          "description": "A comparison rate equivalent for this rate",
          "x-cds-type": "RateString"
        },
        "calculationFrequency": {
          "type": "string",
          "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)",
          "x-cds-type": "ExternalRef"
        },
        "applicationFrequency": {
          "type": "string",
          "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)",
          "x-cds-type": "ExternalRef"
        },
        "interestPaymentDue": {
          "type": "string",
          "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_ARREARS",
            "IN_ADVANCE"
          ]
        },
        "tiers": {
          "type": "array",
          "description": "Rate tiers applicable for this rate",
          "items": {
            "$ref": "#/definitions/BankingProductRateTier"
          }
        },
        "additionalValue": {
          "type": "string",
          "description": "Generic field containing additional information relevant to the [lendingRateType](#tocSproductlendingratetypedoc) specified. Whether mandatory or not is dependent on the value of [lendingRateType](#tocSproductlendingratetypedoc)"
        },
        "additionalInfo": {
          "type": "string",
          "description": "Display text providing more information on the rate."
        },
        "additionalInfoUri": {
          "type": "string",
          "description": "Link to a web page with more information on this rate",
          "x-cds-type": "URIString"
        }
      }
    },
    "BankingProductRateTier": {
      "type": "object",
      "description": "Defines the criteria and conditions for which a rate applies",
      "required": [
        "name",
        "unitOfMeasure",
        "minimumValue"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "A display name for the tier"
        },
        "unitOfMeasure": {
          "type": "string",
          "description": "The unit of measure that applies to the tierValueMinimum and tierValueMaximum values e.g. 'DOLLAR', 'MONTH' (in the case of term deposit tiers), 'PERCENT' (in the case of loan-to-value ratio or LVR)",
          "enum": [
            "DOLLAR",
            "PERCENT",
            "MONTH",
            "DAY"
          ]
        },
        "minimumValue": {
          "type": "number",
          "description": "The number of tierUnitOfMeasure units that form the lower bound of the tier. The tier should be inclusive of this value"
        },
        "maximumValue": {
          "type": "number",
          "description": "The number of tierUnitOfMeasure 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 tierValueMinimum. Where this is the same as the tierValueMinimum 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."
        },
        "rateApplicationMethod": {
          "type": "string",
          "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": [
            "WHOLE_BALANCE",
            "PER_TIER"
          ]
        },
        "applicabilityConditions": {
          "$ref": "#/definitions/BankingProductRateCondition"
        },
        "subTier": {
          "type": "object",
          "description": "Defines the sub-tier criteria and conditions for which a rate applies",
          "required": [
            "name",
            "unitOfMeasure",
            "minimumValue",
            "maximumValue"
          ],
          "properties": {
            "name": {
              "type": "string",
              "description": "A display name for the tier"
            },
            "unitOfMeasure": {
              "type": "string",
              "description": "The unit of measure that applies to the tierValueMinimum and tierValueMaximum values e.g. 'DOLLAR', 'MONTH' (in the case of term deposit tiers), 'PERCENT' (in the case of loan-to-value ratio or LVR)",
              "enum": [
                "DOLLAR",
                "PERCENT",
                "MONTH",
                "DAY"
              ]
            },
            "minimumValue": {
              "type": "number",
              "description": "The number of tierUnitOfMeasure units that form the lower bound of the tier. The tier should be inclusive of this value"
            },
            "maximumValue": {
              "type": "number",
              "description": "The number of tierUnitOfMeasure 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 tierValueMinimum. Where this is the same as the tierValueMinimum 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)"
            },
            "rateApplicationMethod": {
              "type": "string",
              "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": [
                "WHOLE_BALANCE",
                "PER_TIER"
              ]
            },
            "applicabilityConditions": {
              "$ref": "#/definitions/BankingProductRateCondition"
            }
          }
        }
      }
    },
    "BankingProductRateCondition": {
      "type": "object",
      "description": "Defines a condition for the applicability of a tiered rate",
      "properties": {
        "additionalInfo": {
          "type": "string",
          "description": "Display text providing more information on the condition"
        },
        "additionalInfoUri": {
          "type": "string",
          "description": "Link to a web page with more information on this condition",
          "x-cds-type": "URIString"
        }
      }
    },
    "ResponseBankingAccountList": {
      "type": "object",
      "required": [
        "data",
        "links",
        "meta"
      ],
      "properties": {
        "data": {
          "type": "object",
          "required": [
            "accounts"
          ],
          "properties": {
            "accounts": {
              "type": "array",
              "description": "The list of accounts returned. If the filter results in an empty set then this array may have no records",
              "items": {
                "$ref": "#/definitions/BankingAccount"
              }
            }
          }
        },
        "links": {
          "$ref": "#/definitions/LinksPaginated"
        },
        "meta": {
          "$ref": "#/definitions/MetaPaginated"
        }
      }
    },
    "BankingAccount": {
      "type": "object",
      "required": [
        "accountId",
        "displayName",
        "maskedNumber",
        "productCategory",
        "productName"
      ],
      "properties": {
        "accountId": {
          "type": "string",
          "description": "A unique ID of the account adhering to the standards for ID permanence",
          "x-cds-type": "ASCIIString"
        },
        "creationDate": {
          "type": "string",
          "description": "Date that the account was created (if known)",
          "x-cds-type": "DateString"
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the account as defined by the bank. This should not incorporate account numbers or PANs. If it does the values should be masked according to the rules of the MaskedAccountString common type."
        },
        "nickname": {
          "type": "string",
          "description": "A customer supplied nick name for the account"
        },
        "openStatus": {
          "type": "string",
          "description": "Open or closed status for the account. If not present then OPEN is assumed",
          "enum": [
            "OPEN",
            "CLOSED"
          ],
          "default": "OPEN"
        },
        "isOwned": {
          "type": "boolean",
          "description": "Flag indicating that the customer associated with the authorisation is an owner of the account. Does not indicate sole ownership, however. If not present then 'true' is assumed",
          "x-cds-type": "Boolean",
          "default": true
        },
        "maskedNumber": {
          "type": "string",
          "description": "A masked version of the account. Whether BSB/Account Number, Credit Card PAN or another number",
          "x-cds-type": "MaskedAccountString"
        },
        "productCategory": {
          "$ref": "#/definitions/BankingProductCategory"
        },
        "productName": {
          "type": "string",
          "description": "The unique identifier of the account as defined by the account provider (akin to model number for the account)"
        }
      }
    },
    "ResponseBankingAccountById": {
      "type": "object",
      "required": [
        "data",
        "links",
        "meta"
      ],
      "properties": {
        "data": {
          "$ref": "#/definitions/BankingAccountDetail"
        },
        "links": {
          "$ref": "#/definitions/Links"
        },
        "meta": {
          "$ref": "#/definitions/Meta"
        }
      }
    },
    "BankingAccountDetail": {
      "allOf": [
        {
          "$ref": "#/definitions/BankingAccount"
        },
        {
          "type": "object",
          "x-conditional": [
            "termDeposit",
            "creditCard",
            "loan"
          ],
          "properties": {
            "bsb": {
              "type": "string",
              "description": "The unmasked BSB for the account. Is expected to be formatted as digits only with leading zeros included and no punctuation or spaces"
            },
            "accountNumber": {
              "type": "string",
              "description": "The unmasked account number for the account. Should not be supplied if the account number is a PAN requiring PCI compliance. Is expected to be formatted as digits only with leading zeros included and no punctuation or spaces"
            },
            "bundleName": {
              "type": "string",
              "description": "Optional field to indicate if this account is part of a bundle that is providing additional benefit for to the customer"
            },
            "specificAccountUType": {
              "type": "string",
              "description": "The type of structure to present account specific fields.",
              "enum": [
                "termDeposit",
                "creditCard",
                "loan"
              ]
            },
            "termDeposit": {
              "$ref": "#/definitions/BankingTermDepositAccount"
            },
            "creditCard": {
              "$ref": "#/definitions/BankingCreditCardAccount"
            },
            "loan": {
              "$ref": "#/definitions/BankingLoanAccount"
            },
            "depositRate": {
              "type": "string",
              "description": "current rate to calculate interest earned being applied to deposit balances as it stands at the time of the API call",
              "x-cds-type": "RateString"
            },
            "lendingRate": {
              "type": "string",
              "description": "The current rate to calculate interest payable being applied to lending balances as it stands at the time of the API call",
              "x-cds-type": "RateString"
            },
            "depositRates": {
              "description": "Fully described deposit rates for this account based on the equivalent structure in Product Reference",
              "type": "array",
              "items": {
                "$ref": "#/definitions/BankingProductDepositRate"
              }
            },
            "lendingRates": {
              "description": "Fully described deposit rates for this account based on the equivalent structure in Product Reference",
              "type": "array",
              "items": {
                "$ref": "#/definitions/BankingProductLendingRate"
              }
            },
            "features": {
              "description": "Array of features of the account based on the equivalent structure in Product Reference with the following additional field",
              "type": "array",
              "items": {
                "allOf": [
                  {
                    "$ref": "#/definitions/BankingProductFeature"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "isActivated": {
                        "type": "boolean",
                        "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)",
                        "x-cds-type": "Boolean",
                        "default": true
                      }
                    }
                  }
                ]
              }
            },
            "fees": {
              "description": "Fees and charges applicable to the account based on the equivalent structure in Product Reference",
              "type": "array",
              "items": {
                "$ref": "#/definitions/BankingProductFee"
              }
            },
            "addresses": {
              "description": "The addresses for the account to be used for correspondence",
              "type": "array",
              "items": {
                "$ref": "#/definitions/CommonPhysicalAddress"
              }
            }
          }
        }
      ]
    },
    "BankingTermDepositAccount": {
      "type": "object",
      "required": [
        "lodgementDate",
        "maturityDate",
        "maturityInstructions"
      ],
      "properties": {
        "lodgementDate": {
          "type": "string",
          "description": "The lodgement date of the original deposit",
          "x-cds-type": "DateString"
        },
        "maturityDate": {
          "type": "string",
          "description": "Maturity date for the term deposit",
          "x-cds-type": "DateString"
        },
        "maturityAmount": {
          "type": "string",
          "description": "Amount to be paid upon maturity. If absent it implies the amount to paid is variable and cannot currently be calculated",
          "x-cds-type": "AmountString"
        },
        "maturityCurrency": {
          "type": "string",
          "description": "If absent assumes AUD",
          "x-cds-type": "CurrencyString"
        },
        "maturityInstructions": {
          "type": "string",
          "description": "Current instructions on action to be taken at maturity",
          "enum": [
            "ROLLED_OVER",
            "PAID_OUT_AT_MATURITY"
          ]
        }
      }
    },
    "BankingCreditCardAccount": {
      "type": "object",
      "required": [
        "minPaymentAmount",
        "paymentDueAmount",
        "paymentDueDate"
      ],
      "properties": {
        "minPaymentAmount": {
          "type": "string",
          "description": "The minimum payment amount due for the next card payment",
          "x-cds-type": "AmountString"
        },
        "paymentDueAmount": {
          "type": "string",
          "description": "The amount due for the next card payment",
          "x-cds-type": "AmountString"
        },
        "paymentCurrency": {
          "type": "string",
          "description": "If absent assumes AUD",
          "x-cds-type": "CurrencyString"
        },
        "paymentDueDate": {
          "type": "string",
          "description": "Date that the next payment for the card is due",
          "x-cds-type": "DateString"
        }
      }
    },
    "BankingLoanAccount": {
      "type": "object",
      "required": [
        "loanEndDate",
        "nextInstalmentDate",
        "repaymentFrequency"
      ],
      "properties": {
        "originalStartDate": {
          "type": "string",
          "description": "Optional original start date for the loan",
          "x-cds-type": "DateString"
        },
        "originalLoanAmount": {
          "type": "string",
          "description": "Optional original loan value",
          "x-cds-type": "AmountString"
        },
        "originalLoanCurrency": {
          "type": "string",
          "description": "If absent assumes AUD",
          "x-cds-type": "CurrencyString"
        },
        "loanEndDate": {
          "type": "string",
          "description": "Date that the loan is due to be repaid in full",
          "x-cds-type": "DateString"
        },
        "nextInstalmentDate": {
          "type": "string",
          "description": "Next date that an instalment is required",
          "x-cds-type": "DateString"
        },
        "minInstalmentAmount": {
          "type": "string",
          "description": "Minimum amount of next instalment",
          "x-cds-type": "AmountString"
        },
        "minInstalmentCurrency": {
          "type": "string",
          "description": "If absent assumes AUD",
          "x-cds-type": "CurrencyString"
        },
        "maxRedraw": {
          "type": "string",
          "description": "Maximum amount of funds that can be redrawn. If not present redraw is not available even if the feature exists for the account",
          "x-cds-type": "AmountString"
        },
        "maxRedrawCurrency": {
          "type": "string",
          "description": "If absent assumes AUD",
          "x-cds-type": "CurrencyString"
        },
        "minRedraw": {
          "type": "string",
          "description": "Minimum redraw amount",
          "x-cds-type": "AmountString"
        },
        "minRedrawCurrency": {
          "type": "string",
          "description": "If absent assumes AUD",
          "x-cds-type": "CurrencyString"
        },
        "offsetAccountEnabled": {
          "type": "boolean",
          "description": "Set to true if one or more offset accounts are configured for this loan account",
          "x-cds-type": "Boolean"
        },
        "offsetAccountIds": {
          "type": "array",
          "description": "The accountIDs of the configured offset accounts attached to this loan. Only offset accounts that can be accesses 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",
            "x-cds-type": "ASCIIString"
          }
        },
        "repaymentType": {
          "type": "string",
          "description": "Options in place for repayments. If absent defaults to PRINCIPAL_AND_INTEREST",
          "enum": [
            "INTEREST_ONLY",
            "PRINCIPAL_AND_INTEREST"
          ],
          "default": "PRINCIPAL_AND_INTEREST"
        },
        "repaymentFrequency": {
          "type": "string",
          "description": "The expected or required repayment frequency. Formatted according to [ISO 8601 Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations)",
          "x-cds-type": "ExternalRef"
        }
      }
    },
    "ResponseBankingTransactionList": {
      "type": "object",
      "required": [
        "data",
        "links",
        "meta"
      ],
      "properties": {
        "data": {
          "type": "object",
          "required": [
            "transactions"
          ],
          "properties": {
            "transactions": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/BankingTransaction"
              }
            }
          }
        },
        "links": {
          "$ref": "#/definitions/LinksPaginated"
        },
        "meta": {
          "$ref": "#/definitions/MetaPaginated"
        }
      }
    },
    "BankingTransaction": {
      "type": "object",
      "required": [
        "accountId",
        "isDetailAvailable",
        "type",
        "status",
        "description",
        "amount",
        "reference"
      ],
      "x-conditional": [
        "transactionId",
        "postingDateTime"
      ],
      "properties": {
        "accountId": {
          "type": "string",
          "description": "ID of the account for which transactions are provided",
          "x-cds-type": "ASCIIString"
        },
        "transactionId": {
          "type": "string",
          "description": "A unique ID of the transaction adhering to the standards for ID permanence.  This is mandatory (through hashing if necessary) unless there are specific and justifiable technical reasons why a transaction cannot be uniquely identified for a particular account type",
          "x-cds-type": "ASCIIString"
        },
        "isDetailAvailable": {
          "type": "boolean",
          "description": "True if extended information is available using the transaction detail end point. False if extended data is not available",
          "x-cds-type": "Boolean"
        },
        "type": {
          "type": "string",
          "description": "The type of the transaction",
          "enum": [
            "FEE",
            "INTEREST_CHARGED",
            "INTEREST_PAID",
            "TRANSFER_OUTGOING",
            "TRANSFER_INCOMING",
            "PAYMENT",
            "DIRECT_DEBIT",
            "OTHER"
          ]
        },
        "status": {
          "type": "string",
          "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"
          ]
        },
        "description": {
          "type": "string",
          "description": "The transaction description as applied by the financial institution"
        },
        "postingDateTime": {
          "type": "string",
          "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",
          "x-cds-type": "DateTimeString"
        },
        "valueDateTime": {
          "type": "string",
          "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",
          "x-cds-type": "DateTimeString"
        },
        "executionDateTime": {
          "type": "string",
          "description": "The time the transaction was executed by the originating customer, if available",
          "x-cds-type": "DateTimeString"
        },
        "amount": {
          "type": "string",
          "description": "The value of the transaction. Negative values mean money was outgoing from the account",
          "x-cds-type": "AmountString"
        },
        "currency": {
          "type": "string",
          "description": "The currency for the transaction amount. AUD assumed if not present",
          "x-cds-type": "CurrencyString"
        },
        "reference": {
          "type": "string",
          "description": "The reference for the transaction provided by the originating institution.  Empty string if no data provided"
        },
        "merchantName": {
          "type": "string",
          "description": "Name of the merchant for an outgoing payment to a merchant"
        },
        "merchantCategoryCode": {
          "type": "string",
          "description": "The merchant category code (or MCC) for an outgoing payment to a merchant"
        },
        "billerCode": {
          "type": "string",
          "description": "BPay Biller Code for the transaction (if available)"
        },
        "billerName": {
          "type": "string",
          "description": "Name of the BPay biller for the transaction (if available)"
        },
        "crn": {
          "type": "string",
          "description": "BPay CRN for the transaction (if available)"
        },
        "apcaNumber": {
          "type": "string",
          "description": "6 Digit APCA number for the initiating institution"
        }
      }
    },
    "ResponseBankingTransactionById": {
      "type": "object",
      "required": [
        "data",
        "links",
        "meta"
      ],
      "properties": {
        "data": {
          "$ref": "#/definitions/BankingTransactionDetail"
        },
        "links": {
          "$ref": "#/definitions/Links"
        },
        "meta": {
          "$ref": "#/definitions/Meta"
        }
      }
    },
    "BankingTransactionDetail": {
      "allOf": [
        {
          "$ref": "#/definitions/BankingTransaction"
        },
        {
          "type": "object",
          "required": [
            "extendedData"
          ],
          "properties": {
            "extendedData": {
              "type": "object",
              "required": [
                "service"
              ],
              "x-conditional": [
                "payer",
                "payee",
                "extendedDescription"
              ],
              "properties": {
                "payer": {
                  "type": "string",
                  "description": "Label of the originating payer. Mandatory for inbound payment"
                },
                "payee": {
                  "type": "string",
                  "description": "Label of the target PayID.  Mandatory for an outbound payment"
                },
                "extensionUType": {
                  "type": "string",
                  "description": "Optional extended data provided specific to transaction originated via NPP",
                  "enum": [
                    "extendedDescription"
                  ]
                },
                "extendedDescription": {
                  "type": "string",
                  "description": "An extended string description. Only present if specified by the extensionUType field"
                },
                "service": {
                  "type": "string",
                  "description": "Identifier of the applicable overlay service. Valid values are: X2P1.01",
                  "enum": [
                    "X2P1.01"
                  ]
                }
              }
            }
          }
        }
      ]
    },
    "ResponseBankingAccountsBalanceList": {
      "type": "object",
      "required": [
        "data",
        "links",
        "meta"
      ],
      "properties": {
        "data": {
          "type": "object",
          "required": [
            "balances"
          ],
          "properties": {
            "balances": {
              "description": "The list of balances returned",
              "type": "array",
              "items": {
                "$ref": "#/definitions/BankingBalance"
              }
            }
          }
        },
        "links": {
          "$ref": "#/definitions/LinksPaginated"
        },
        "meta": {
          "$ref": "#/definitions/MetaPaginated"
        }
      }
    },
    "ResponseBankingAccountsBalanceById": {
      "required": [
        "data",
        "links"
      ],
      "properties": {
        "data": {
          "$ref": "#/definitions/BankingBalance"
        },
        "links": {
          "$ref": "#/definitions/LinksPaginated"
        }
      }
    },
    "BankingBalance": {
      "type": "object",
      "required": [
        "accountId",
        "currentBalance",
        "availableBalance"
      ],
      "properties": {
        "accountId": {
          "type": "string",
          "description": "A unique ID of the account adhering to the standards for ID permanence",
          "x-cds-type": "ASCIIString"
        },
        "currentBalance": {
          "type": "string",
          "description": "The balance of the account at this time. Should align to the balance available via other channels such as Internet Banking. Assumed to be negative if the customer has money owing",
          "x-cds-type": "AmountString"
        },
        "availableBalance": {
          "type": "string",
          "description": "Balance representing the amount of funds available for transfer. Assumed to be zero or positive",
          "x-cds-type": "AmountString"
        },
        "creditLimit": {
          "type": "string",
          "description": "Object representing the maximum amount of credit that is available for this account. Assumed to be zero if absent",
          "x-cds-type": "AmountString"
        },
        "amortisedLimit": {
          "type": "string",
          "description": "Object representing the available limit amortised according to payment schedule. Assumed to be zero if absent",
          "x-cds-type": "AmountString"
        },
        "currency": {
          "type": "string",
          "description": "The currency for the balance amounts. If absent assumed to be AUD",
          "x-cds-type": "CurrencyString"
        },
        "purses": {
          "description": "Optional array of balances for the account in other currencies. Included to support accounts that support multi-currency purses such as Travel Cards",
          "type": "array",
          "items": {
            "$ref": "#/definitions/BankingBalancePurse"
          }
        }
      }
    },
    "BankingBalancePurse": {
      "type": "object",
      "required": [
        "amount"
      ],
      "properties": {
        "amount": {
          "type": "string",
          "description": "The balance available for this additional currency purse",
          "x-cds-type": "AmountString"
        },
        "currency": {
          "type": "string",
          "description": "The currency for the purse",
          "x-cds-type": "CurrencyString"
        }
      }
    },
    "ResponseBankingPayeeList": {
      "type": "object",
      "required": [
        "data",
        "links",
        "meta"
      ],
      "properties": {
        "data": {
          "type": "object",
          "required": [
            "payees"
          ],
          "properties": {
            "payees": {
              "type": "array",
              "description": "The list of payees returned",
              "items": {
                "$ref": "#/definitions/BankingPayee"
              }
            }
          }
        },
        "links": {
          "$ref": "#/definitions/LinksPaginated"
        },
        "meta": {
          "$ref": "#/definitions/MetaPaginated"
        }
      }
    },
    "ResponseBankingPayeeById": {
      "type": "object",
      "required": [
        "data",
        "links",
        "meta"
      ],
      "properties": {
        "data": {
          "$ref": "#/definitions/BankingPayeeDetail"
        },
        "links": {
          "$ref": "#/definitions/Links"
        },
        "meta": {
          "$ref": "#/definitions/Meta"
        }
      }
    },
    "BankingPayee": {
      "type": "object",
      "required": [
        "payeeId",
        "nickname",
        "type"
      ],
      "properties": {
        "payeeId": {
          "type": "string",
          "description": "ID of the payee adhering to the rules of ID permanence",
          "x-cds-type": "ASCIIString"
        },
        "nickname": {
          "type": "string",
          "description": "The short display name of the payee as provided by the customer"
        },
        "description": {
          "type": "string",
          "description": "A description of the payee provided by the customer"
        },
        "type": {
          "type": "string",
          "description": "The type of payee. DOMESTIC means a registered payee for domestic payments including NPP. INTERNATIONAL means a registered payee for international payments. BILLER means a registered payee for BPAY",
          "enum": [
            "DOMESTIC",
            "INTERNATIONAL",
            "BILLER"
          ]
        },
        "creationDate": {
          "type": "string",
          "description": "The date the payee was created by the customer",
          "x-cds-type": "DateString"
        }
      }
    },
    "BankingPayeeDetail": {
      "allOf": [
        {
          "$ref": "#/definitions/BankingPayee"
        },
        {
          "type": "object",
          "required": [
            "payeeUType"
          ],
          "x-conditional": [
            "domestic",
            "biller",
            "international"
          ],
          "properties": {
            "payeeUType": {
              "type": "string",
              "description": "Type of object included that describes the payee in detail",
              "enum": [
                "domestic",
                "biller",
                "international"
              ]
            },
            "domestic": {
              "$ref": "#/definitions/BankingDomesticPayee"
            },
            "biller": {
              "$ref": "#/definitions/BankingBillerPayee"
            },
            "international": {
              "$ref": "#/definitions/BankingInternationalPayee"
            }
          }
        }
      ]
    },
    "BankingDomesticPayee": {
      "type": "object",
      "required": [
        "payeeAccountUType"
      ],
      "x-conditional": [
        "account",
        "card",
        "payId"
      ],
      "properties": {
        "payeeAccountUType": {
          "type": "string",
          "description": "Type of account object included. Valid values are: { payeeAccountUType - - account A standard Australian account defined by BSB/Account Number payId A PayID recognised by NPP",
          "enum": [
            "account",
            "card",
            "payId"
          ]
        },
        "account": {
          "$ref": "#/definitions/BankingDomesticPayeeAccount"
        },
        "card": {
          "$ref": "#/definitions/BankingDomesticPayeeCard"
        },
        "payId": {
          "$ref": "#/definitions/BankingDomesticPayeePayId"
        }
      }
    },
    "BankingDomesticPayeeAccount": {
      "type": "object",
      "required": [
        "accountName",
        "bsb",
        "accountNumber"
      ],
      "properties": {
        "accountName": {
          "type": "string",
          "description": "Name of the account to pay to"
        },
        "bsb": {
          "type": "string",
          "description": "BSB of the account to pay to"
        },
        "accountNumber": {
          "type": "string",
          "description": "Number of the account to pay to"
        }
      }
    },
    "BankingDomesticPayeeCard": {
      "type": "object",
      "required": [
        "cardNumber"
      ],
      "properties": {
        "cardNumber": {
          "type": "string",
          "description": "Name of the account to pay to",
          "x-cds-type": "MaskedPANString"
        }
      }
    },
    "BankingDomesticPayeePayId": {
      "type": "object",
      "required": [
        "identifier",
        "type"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "The name assigned to the PayID by the owner of the PayID"
        },
        "identifier": {
          "type": "string",
          "description": "The identifier of the PayID (dependent on type)"
        },
        "type": {
          "type": "string",
          "description": "The type of the PayID",
          "enum": [
            "EMAIL",
            "MOBILE",
            "ORG_NUMBER",
            "ORG_NAME"
          ]
        }
      }
    },
    "BankingBillerPayee": {
      "type": "object",
      "required": [
        "billerCode",
        "billerName"
      ],
      "x-conditional": [
        "crn"
      ],
      "properties": {
        "billerCode": {
          "type": "string",
          "description": "BPay Biller Code of the Biller"
        },
        "crn": {
          "type": "string",
          "description": "BPay CRN of the Biller. If the contents of the CRN match the format of a Credit Card PAN then it should be masked using the rules applicable for the MaskedPANString common type"
        },
        "billerName": {
          "type": "string",
          "description": "Name of the Biller"
        }
      }
    },
    "BankingInternationalPayee": {
      "type": "object",
      "required": [
        "beneficiaryDetails",
        "bankDetails"
      ],
      "properties": {
        "beneficiaryDetails": {
          "type": "object",
          "required": [
            "country"
          ],
          "properties": {
            "name": {
              "type": "string",
              "description": "Name of the beneficiary"
            },
            "country": {
              "type": "string",
              "description": "Country where the beneficiary resides. A valid [ISO 3166 Alpha-3](https://www.iso.org/iso-3166-country-codes.html) country code",
              "x-cds-type": "ExternalRef"
            },
            "message": {
              "type": "string",
              "description": "Response message for the payment"
            }
          }
        },
        "bankDetails": {
          "type": "object",
          "required": [
            "country",
            "accountNumber"
          ],
          "properties": {
            "country": {
              "type": "string",
              "description": "Country of the recipient institution. A valid [ISO 3166 Alpha-3](https://www.iso.org/iso-3166-country-codes.html) country code",
              "x-cds-type": "ExternalRef"
            },
            "accountNumber": {
              "type": "string",
              "description": "Account Targeted for payment"
            },
            "bankAddress": {
              "type": "object",
              "required": [
                "name",
                "address"
              ],
              "properties": {
                "name": {
                  "type": "string",
                  "description": "Name of the recipient Bank"
                },
                "address": {
                  "type": "string",
                  "description": "Address of the recipient Bank"
                }
              }
            },
            "beneficiaryBankBIC": {
              "type": "string",
              "description": "Swift bank code.  Aligns with standard [ISO 9362](https://www.iso.org/standard/60390.html)",
              "x-cds-type": "ExternalRef"
            },
            "fedWireNumber": {
              "type": "string",
              "description": "Number for Fedwire payment (Federal Reserve Wire Network)"
            },
            "sortCode": {
              "type": "string",
              "description": "Sort code used for account identification in some jurisdictions"
            },
            "chipNumber": {
              "type": "string",
              "description": "Number for the Clearing House Interbank Payments System"
            },
            "routingNumber": {
              "type": "string",
              "description": "International bank routing number"
            },
            "legalEntityIdentifier": {
              "type": "string",
              "description": "The legal entity identifier (LEI) for the beneficiary.  Aligns with [ISO 17442](https://www.iso.org/standard/59771.html)",
              "x-cds-type": "ExternalRef"
            }
          }
        }
      }
    },
    "ResponseBankingDirectDebitAuthorisationList": {
      "type": "object",
      "required": [
        "data",
        "links",
        "meta"
      ],
      "properties": {
        "data": {
          "type": "object",
          "required": [
            "directDebitAuthorisations"
          ],
          "properties": {
            "directDebitAuthorisations": {
              "type": "array",
              "description": "The list of authorisations returned",
              "items": {
                "$ref": "#/definitions/BankingDirectDebit"
              }
            }
          }
        },
        "links": {
          "$ref": "#/definitions/LinksPaginated"
        },
        "meta": {
          "$ref": "#/definitions/MetaPaginated"
        }
      }
    },
    "BankingDirectDebit": {
      "type": "object",
      "required": [
        "accountId",
        "authorisedEntity"
      ],
      "properties": {
        "accountId": {
          "type": "string",
          "description": "A unique ID of the account adhering to the standards for ID permanence.",
          "x-cds-type": "ASCIIString"
        },
        "authorisedEntity": {
          "$ref": "#/definitions/BankingAuthorisedEntity"
        },
        "lastDebitDateTime": {
          "type": "string",
          "description": "The date and time of the last debit executed under this authorisation",
          "x-cds-type": "DateTimeString"
        },
        "lastDebitAmount": {
          "type": "string",
          "description": "The amount of the last debit executed under this authorisation",
          "x-cds-type": "AmountString"
        }
      }
    },
    "BankingAuthorisedEntity": {
      "type": "object",
      "required": [
        "financialInstitution"
      ],
      "properties": {
        "description": {
          "type": "string",
          "description": "Description of the authorised entity derived from previously executed direct debits"
        },
        "financialInstitution": {
          "type": "string",
          "description": "Name of the financial institution through which the direct debit will be executed"
        },
        "abn": {
          "type": "string",
          "description": "Australian Business Number for the authorised entity"
        },
        "acn": {
          "type": "string",
          "description": "Australian Company Number for the authorised entity"
        },
        "arbn": {
          "type": "string",
          "description": "Australian Registered Body Number for the authorised entity"
        }
      }
    },
    "ResponseBankingScheduledPaymentsList": {
      "type": "object",
      "required": [
        "data",
        "links",
        "meta"
      ],
      "properties": {
        "data": {
          "type": "object",
          "required": [
            "scheduledPayments"
          ],
          "properties": {
            "scheduledPayments": {
              "type": "array",
              "description": "The list of scheduled payments to return",
              "items": {
                "$ref": "#/definitions/BankingScheduledPayment"
              }
            }
          }
        },
        "links": {
          "$ref": "#/definitions/LinksPaginated"
        },
        "meta": {
          "$ref": "#/definitions/MetaPaginated"
        }
      }
    },
    "BankingScheduledPayment": {
      "type": "object",
      "required": [
        "scheduledPaymentId",
        "payerReference",
        "payeeReference",
        "status",
        "from",
        "paymentSet",
        "recurrence"
      ],
      "properties": {
        "scheduledPaymentId": {
          "type": "string",
          "description": "A unique ID of the scheduled payment adhering to the standards for ID permanence",
          "x-cds-type": "ASCIIString"
        },
        "nickname": {
          "type": "string",
          "description": "The short display name of the payee as provided by the customer"
        },
        "payerReference": {
          "type": "string",
          "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"
        },
        "payeeReference": {
          "type": "string",
          "description": "The reference for the transaction that will be provided by the originating institution. Empty string if no data provided"
        },
        "status": {
          "type": "string",
          "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"
          ]
        },
        "from": {
          "$ref": "#/definitions/BankingScheduledPaymentFrom"
        },
        "paymentSet": {
          "$ref": "#/definitions/BankingScheduledPaymentSet"
        },
        "recurrence": {
          "$ref": "#/definitions/BankingScheduledPaymentRecurrence"
        }
      }
    },
    "BankingScheduledPaymentSet": {
      "type": "object",
      "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",
      "required": [
        "to"
      ],
      "x-conditional": [
        "amount"
      ],
      "properties": {
        "to": {
          "$ref": "#/definitions/BankingScheduledPaymentTo"
        },
        "isAmountCalculated": {
          "type": "boolean",
          "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",
          "x-cds-type": "Boolean"
        },
        "amount": {
          "type": "string",
          "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",
          "x-cds-type": "AmountString"
        },
        "currency": {
          "type": "string",
          "description": "The currency for the payment. AUD assumed if not present",
          "x-cds-type": "CurrencyString"
        }
      }
    },
    "BankingScheduledPaymentTo": {
      "type": "object",
      "description": "Object containing details of the destination of the payment. Used to specify a variety of payment destination types",
      "required": [
        "toUType"
      ],
      "x-conditional": [
        "accountId",
        "payeeId",
        "domestic",
        "biller",
        "international"
      ],
      "properties": {
        "toUType": {
          "type": "string",
          "description": "The type of object provided that specifies the destination of the funds for the payment.",
          "enum": [
            "accountId",
            "payeeId",
            "domestic",
            "biller",
            "international"
          ]
        },
        "accountId": {
          "type": "string",
          "description": "Present if toUType is set to accountId. Indicates that the payment is to another account that is accessible under the current consent",
          "x-cds-type": "ASCIIString"
        },
        "payeeId": {
          "type": "string",
          "description": "Present if toUType is set to payeeId. Indicates that the payment is to registered payee that can be accessed using the payee end point. 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",
          "x-cds-type": "ASCIIString"
        },
        "domestic": {
          "$ref": "#/definitions/BankingDomesticPayee"
        },
        "biller": {
          "$ref": "#/definitions/BankingBillerPayee"
        },
        "international": {
          "$ref": "#/definitions/BankingInternationalPayee"
        }
      }
    },
    "BankingScheduledPaymentFrom": {
      "type": "object",
      "description": "Object containing details of the source of the payment. Currently only specifies an account ID but provided as an object to facilitate future extensibility and consistency with the to object",
      "required": [
        "accountId"
      ],
      "properties": {
        "accountId": {
          "type": "string",
          "description": "ID of the account that is the source of funds for the payment",
          "x-cds-type": "ASCIIString"
        }
      }
    },
    "BankingScheduledPaymentRecurrence": {
      "type": "object",
      "description": "Object containing the detail of the schedule for the payment",
      "required": [
        "recurrenceUType"
      ],
      "x-conditional": [
        "onceOff",
        "intervalSchedule",
        "lastWeekDay",
        "eventBased"
      ],
      "properties": {
        "nextPaymentDate": {
          "type": "string",
          "description": "The date of the next payment under the recurrence schedule",
          "x-cds-type": "DateString"
        },
        "recurrenceUType": {
          "type": "string",
          "description": "The type of recurrence used to define the schedule",
          "enum": [
            "onceOff",
            "intervalSchedule",
            "lastWeekDay",
            "eventBased"
          ]
        },
        "onceOff": {
          "$ref": "#/definitions/BankingScheduledPaymentRecurrenceOnceOff"
        },
        "intervalSchedule": {
          "$ref": "#/definitions/BankingScheduledPaymentRecurrenceIntervalSchedule"
        },
        "lastWeekDay": {
          "$ref": "#/definitions/BankingScheduledPaymentRecurrenceLastWeekday"
        },
        "eventBased": {
          "$ref": "#/definitions/BankingScheduledPaymentRecurrenceEventBased"
        }
      }
    },
    "BankingScheduledPaymentRecurrenceOnceOff": {
      "type": "object",
      "description": "Indicates that the payment is a once off payment on a specific future date. Mandatory if recurrenceUType is set to onceOff",
      "required": [
        "paymentDate"
      ],
      "properties": {
        "paymentDate": {
          "type": "string",
          "description": "The scheduled date for the once off payment",
          "x-cds-type": "DateString"
        }
      }
    },
    "BankingScheduledPaymentRecurrenceIntervalSchedule": {
      "type": "object",
      "description": "Indicates that the schedule of payments is defined by a series of intervals. Mandatory if recurrenceUType is set to intervalSchedule",
      "required": [
        "intervals"
      ],
      "properties": {
        "finalPaymentDate": {
          "type": "string",
          "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",
          "x-cds-type": "DateString"
        },
        "paymentsRemaining": {
          "type": "integer",
          "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",
          "x-cds-type": "PositiveInteger"
        },
        "nonBusinessDayTreatment": {
          "type": "string",
          "description": "Enumerated field giving the treatment where a scheduled payment date is not a business day.  If absent assumed to be ON",
          "enum": [
            "AFTER",
            "BEFORE",
            "ON",
            "ONLY"
          ],
          "default": "ON"
        },
        "intervals": {
          "type": "array",
          "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": "#/definitions/BankingScheduledPaymentInterval"
          }
        }
      }
    },
    "BankingScheduledPaymentInterval": {
      "type": "object",
      "required": [
        "interval"
      ],
      "properties": {
        "interval": {
          "type": "string",
          "description": "An interval for the payment. Formatted according to [ISO 8601 Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations) with components less than a day in length ignored. This duration defines the period between payments starting with nextPaymentDate",
          "x-cds-type": "ExternalRef"
        },
        "dayInInterval": {
          "type": "string",
          "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) with components less than a day in length ignored. The first day of a week is considered to be Sunday.",
          "x-cds-type": "ExternalRef"
        }
      }
    },
    "BankingScheduledPaymentRecurrenceLastWeekday": {
      "type": "object",
      "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",
      "required": [
        "interval",
        "lastWeekDay"
      ],
      "properties": {
        "finalPaymentDate": {
          "type": "string",
          "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",
          "x-cds-type": "DateString"
        },
        "paymentsRemaining": {
          "type": "integer",
          "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",
          "x-cds-type": "PositiveInteger"
        },
        "interval": {
          "type": "string",
          "description": "The interval for the payment. Formatted according to [ISO 8601 Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations) with components less than a day in length ignored. This duration defines the period between payments starting with nextPaymentDate",
          "x-cds-type": "ExternalRef"
        },
        "lastWeekDay": {
          "type": "integer",
          "description": "The weekDay specified. The payment will occur on the last occurrence of this weekday in the interval. Value is constrained to 1 to 7 with 1 indicating Sunday.",
          "x-cds-type": "PositiveInteger"
        }
      }
    },
    "BankingScheduledPaymentRecurrenceEventBased": {
      "type": "object",
      "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",
      "required": [
        "description"
      ],
      "properties": {
        "description": {
          "type": "string",
          "description": "Description of the event and conditions that will result in the payment. Expected to be formatted for display to a customer"
        }
      }
    },
    "ResponseDiscoveryStatus": {
      "type": "object",
      "required": [
        "data",
        "links",
        "meta"
      ],
      "properties": {
        "data": {
          "type": "object",
          "required": [
            "status",
            "updateTime"
          ],
          "x-conditional": [
            "explanation"
          ],
          "properties": {
            "status": {
              "type": "string",
              "description": "Enumeration with values. OK (implementation is fully functional). PARTIAL_FAILURE (one or more end points are unexpectedly unavailable). UNAVAILABLE (the full implementation is unexpectedly unavailable). SCHEDULED_OUTAGE (an advertised outage is in effect)",
              "enum": [
                "OK",
                "PARTIAL_FAILURE",
                "UNAVAILABLE",
                "SCHEDULED_OUTAGE"
              ]
            },
            "explanation": {
              "type": "string",
              "description": "Provides an explanation of the current outage that can be displayed to an end customer. Mandatory if the status property is any value other than OK"
            },
            "detectionTime": {
              "type": "string",
              "description": "The date and time that the current outage was detected. Should only be present if the status property is PARTIAL_FAILURE or UNAVAILABLE",
              "x-cds-type": "DateTimeString"
            },
            "expectedResolutionTime": {
              "type": "string",
              "description": "The date and time that full service is expected to resume (if known). Should not be present if the status property has a value of OK.",
              "x-cds-type": "DateTimeString"
            },
            "updateTime": {
              "type": "string",
              "description": "The date and time that this status was last updated by the Data Holder.",
              "x-cds-type": "DateTimeString"
            }
          }
        },
        "links": {
          "$ref": "#/definitions/Links"
        },
        "meta": {
          "$ref": "#/definitions/Meta"
        }
      }
    },
    "ResponseDiscoveryOutages": {
      "type": "object",
      "required": [
        "data",
        "links",
        "meta"
      ],
      "properties": {
        "data": {
          "type": "object",
          "required": [
            "outages"
          ],
          "properties": {
            "outages": {
              "description": "List of scheduled outages. Property is mandatory but may contain and empty list if no outages are scheduled",
              "type": "array",
              "items": {
                "$ref": "#/definitions/DiscoveryOutage"
              }
            }
          }
        },
        "links": {
          "$ref": "#/definitions/Links"
        },
        "meta": {
          "$ref": "#/definitions/Meta"
        }
      }
    },
    "DiscoveryOutage": {
      "type": "object",
      "required": [
        "outageTime",
        "duration",
        "explanation"
      ],
      "properties": {
        "outageTime": {
          "type": "string",
          "description": "Date and time that the outage is scheduled to begin",
          "x-cds-type": "DateTimeString"
        },
        "duration": {
          "type": "number",
          "description": "Planned duration of the outage in minutes"
        },
        "isPartial": {
          "type": "boolean",
          "description": "Flag that indicates, if present and set to true, that the outage is only partial meaning that only a subset of normally available end points will be affected by the outage"
        },
        "explanation": {
          "type": "string",
          "description": "Provides an explanation of the current outage that can be displayed to an end customer"
        }
      }
    },
    "ResponseCommonCustomer": {
      "type": "object",
      "required": [
        "data",
        "links",
        "meta"
      ],
      "x-conditional": [
        "person",
        "organisation"
      ],
      "properties": {
        "data": {
          "type": "object",
          "required": [
            "customerUType"
          ],
          "properties": {
            "customerUType": {
              "type": "string",
              "description": "The type of customer object that is present",
              "enum": [
                "person",
                "organisation"
              ]
            },
            "person": {
              "$ref": "#/definitions/CommonPerson"
            },
            "organisation": {
              "$ref": "#/definitions/CommonOrganisation"
            }
          }
        },
        "links": {
          "$ref": "#/definitions/Links"
        },
        "meta": {
          "$ref": "#/definitions/Meta"
        }
      }
    },
    "ResponseCommonCustomerDetail": {
      "type": "object",
      "required": [
        "data",
        "links",
        "meta"
      ],
      "x-conditional": [
        "person",
        "organisation"
      ],
      "properties": {
        "data": {
          "type": "object",
          "required": [
            "customerUType"
          ],
          "properties": {
            "customerUType": {
              "type": "string",
              "description": "The type of customer object that is present",
              "enum": [
                "person",
                "organisation"
              ]
            },
            "person": {
              "$ref": "#/definitions/CommonPersonDetail"
            },
            "organisation": {
              "$ref": "#/definitions/CommonOrganisationDetail"
            }
          }
        },
        "links": {
          "$ref": "#/definitions/Links"
        },
        "meta": {
          "$ref": "#/definitions/Meta"
        }
      }
    },
    "CommonPerson": {
      "type": "object",
      "required": [
        "lastUpdateTime",
        "lastName",
        "middleNames"
      ],
      "properties": {
        "lastUpdateTime": {
          "type": "string",
          "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",
          "x-cds-type": "DateTimeString"
        },
        "firstName": {
          "type": "string",
          "description": "For people with single names this field need not be present.  The single name should be in the lastName field"
        },
        "lastName": {
          "type": "string",
          "description": "For people with single names the single name should be in this field"
        },
        "middleNames": {
          "type": "array",
          "description": "Field is mandatory but array may be empty",
          "items": {
            "type": "string"
          }
        },
        "prefix": {
          "type": "string",
          "description": "Also known as title or salutation.  The prefix to the name (e.g. Mr, Mrs, Ms, Miss, Sir, etc)"
        },
        "suffix": {
          "type": "string",
          "description": "Used for a trailing suffix to the name (e.g. Jr)"
        },
        "occupationCode": {
          "type": "string",
          "description": "Value is a valid [ANZCO v1.2](http://www.abs.gov.au/ANZSCO) Standard Occupation classification."
        }
      }
    },
    "CommonPersonDetail": {
      "allOf": [
        {
          "$ref": "#/definitions/CommonPerson"
        },
        {
          "type": "object",
          "required": [
            "phoneNumbers",
            "emailAddresses",
            "physicalAddresses"
          ],
          "properties": {
            "phoneNumbers": {
              "type": "array",
              "description": "Array is mandatory but may be empty if no phone numbers are held",
              "items": {
                "$ref": "#/definitions/CommonPhoneNumber"
              }
            },
            "emailAddresses": {
              "type": "array",
              "description": "May be empty",
              "items": {
                "$ref": "#/definitions/CommonEmailAddress"
              }
            },
            "physicalAddresses": {
              "type": "array",
              "description": "Must contain at least one address. 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": "#/definitions/CommonPhysicalAddressWithPurpose"
              }
            }
          }
        }
      ]
    },
    "CommonOrganisation": {
      "type": "object",
      "required": [
        "lastUpdateTime",
        "agentLastName",
        "agentRole",
        "businessName",
        "organisationType"
      ],
      "properties": {
        "lastUpdateTime": {
          "type": "string",
          "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",
          "x-cds-type": "DateTimeString"
        },
        "agentFirstName": {
          "type": "string",
          "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"
        },
        "agentLastName": {
          "type": "string",
          "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"
        },
        "agentRole": {
          "type": "string",
          "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"
        },
        "businessName": {
          "type": "string",
          "description": "Name of the organisation"
        },
        "legalName": {
          "type": "string",
          "description": "Legal name, if different to the business name"
        },
        "shortName": {
          "type": "string",
          "description": "Short name used for communication, if  different to the business name"
        },
        "abn": {
          "type": "string",
          "description": "Australian Business Number for the organisation"
        },
        "acn": {
          "type": "string",
          "description": "Australian Company Number for the organisation. Required only if an ACN is applicable for the organisation type"
        },
        "isACNCRegistered": {
          "type": "boolean",
          "description": "True if registered with the ACNC.  False if not. Absent or null if not confirmed.",
          "x-cds-type": "Boolean"
        },
        "industryCode": {
          "type": "string",
          "description": "[ANZSIC (2006)](http://www.abs.gov.au/anzsic) code for the organisation."
        },
        "organisationType": {
          "type": "string",
          "description": "Legal organisation type",
          "enum": [
            "SOLE_TRADER",
            "COMPANY",
            "PARTNERSHIP",
            "TRUST",
            "GOVERNMENT_ENTITY",
            "OTHER"
          ]
        },
        "registeredCountry": {
          "type": "string",
          "description": "Enumeration with values from [ISO 3166 Alpha-3](https://www.iso.org/iso-3166-country-codes.html) country codes.  Assumed to be AUS if absent",
          "x-cds-type": "ExternalRef"
        },
        "establishmentDate": {
          "type": "string",
          "description": "The date the organisation described was established",
          "x-cds-type": "DateString"
        }
      }
    },
    "CommonOrganisationDetail": {
      "allOf": [
        {
          "$ref": "#/definitions/CommonOrganisation"
        },
        {
          "type": "object",
          "required": [
            "physicalAddresses"
          ],
          "properties": {
            "physicalAddresses": {
              "type": "array",
              "description": "Must contain at least one address. 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": "#/definitions/CommonPhysicalAddressWithPurpose"
              }
            }
          }
        }
      ]
    },
    "CommonPhoneNumber": {
      "type": "object",
      "required": [
        "purpose",
        "number",
        "fullNumber"
      ],
      "x-conditional": [
        "isPreferred",
        "areaCode"
      ],
      "properties": {
        "isPreferred": {
          "type": "boolean",
          "description": "Required to be true for one and only one entry to indicate the preferred phone number.  Assumed to be 'false' if not present",
          "x-cds-type": "Boolean"
        },
        "purpose": {
          "type": "string",
          "description": "The purpose of the number as specified by the customer",
          "enum": [
            "MOBILE",
            "HOME",
            "WORK",
            "OTHER",
            "INTERNATIONAL",
            "UNSPECIFIED"
          ]
        },
        "countryCode": {
          "type": "string",
          "description": "If absent, assumed to be Australia (+61). The + should be included"
        },
        "areaCode": {
          "type": "string",
          "description": "Required for non Mobile Phones, if field is present and refers to Australian code - the leading 0 should be omitted."
        },
        "number": {
          "type": "string",
          "description": "The actual phone number, with leading zeros as appropriate"
        },
        "extension": {
          "type": "string",
          "description": "An extension number (if applicable)"
        },
        "fullNumber": {
          "type": "string",
          "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)",
          "x-cds-type": "ExternalRef"
        }
      }
    },
    "CommonEmailAddress": {
      "type": "object",
      "required": [
        "isPreferred",
        "purpose",
        "address"
      ],
      "properties": {
        "isPreferred": {
          "type": "boolean",
          "description": "Required for one and only one email record in the collection. Denotes the default email address",
          "x-cds-type": "Boolean"
        },
        "purpose": {
          "type": "string",
          "description": "The purpose for the email, as specified by the customer (Enumeration)",
          "enum": [
            "WORK",
            "HOME",
            "OTHER",
            "UNSPECIFIED"
          ]
        },
        "address": {
          "type": "string",
          "description": "A correctly formatted email address, as defined by the addr_spec format in [RFC 5322](https://www.ietf.org/rfc/rfc5322.txt)",
          "x-cds-type": "ExternalRef"
        }
      }
    },
    "CommonPhysicalAddressWithPurpose": {
      "allOf": [
        {
          "type": "object",
          "required": [
            "purpose"
          ],
          "properties": {
            "purpose": {
              "type": "string",
              "description": "Enumeration of values indicating the purpose of the physical address",
              "enum": [
                "REGISTERED",
                "MAIL",
                "PHYSICAL",
                "WORK",
                "OTHER"
              ]
            }
          }
        },
        {
          "$ref": "#/definitions/CommonPhysicalAddress"
        }
      ]
    },
    "CommonPhysicalAddress": {
      "type": "object",
      "required": [
        "addressUType"
      ],
      "x-conditional": [
        "simple",
        "paf"
      ],
      "properties": {
        "addressUType": {
          "type": "string",
          "description": "The type of address object present",
          "enum": [
            "simple",
            "paf"
          ]
        },
        "simple": {
          "$ref": "#/definitions/CommonSimpleAddress"
        },
        "paf": {
          "$ref": "#/definitions/CommonPAFAddress"
        }
      }
    },
    "CommonSimpleAddress": {
      "type": "object",
      "required": [
        "addressLine1",
        "city",
        "state"
      ],
      "x-conditional": [
        "postcode"
      ],
      "properties": {
        "mailingName": {
          "type": "string",
          "description": "Name of the individual or business formatted for inclusion in an address used for physical mail"
        },
        "addressLine1": {
          "type": "string",
          "description": "First line of the standard address object"
        },
        "addressLine2": {
          "type": "string",
          "description": "Second line of the standard address object"
        },
        "addressLine3": {
          "type": "string",
          "description": "Third line of the standard address object"
        },
        "postcode": {
          "type": "string",
          "description": "Mandatory for Australian addresses"
        },
        "city": {
          "type": "string",
          "description": "Name of the city or locality"
        },
        "state": {
          "type": "string",
          "description": "Free text if the country is not Australia. If country is Australia then must be one of the values defined by the [ISO 3166:AU standard](https://www.iso.org/obp/ui/#iso:code:3166:AU)"
        },
        "country": {
          "type": "string",
          "description": "A valid [ISO 3166 Alpha-3](https://www.iso.org/iso-3166-country-codes.html) country code",
          "x-cds-type": "ExternalRef"
        }
      }
    },
    "CommonPAFAddress": {
      "type": "object",
      "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": [
        "localityName",
        "postcode",
        "state"
      ],
      "properties": {
        "dpid": {
          "type": "string",
          "description": "Unique identifier for an address as defined by Australia Post.  Also known as Delivery Point Identifier"
        },
        "thoroughfareNumber1": {
          "type": "integer",
          "description": "Thoroughfare number for a property (first number in a property ranged address)",
          "x-cds-type": "PositiveInteger"
        },
        "thoroughfareNumber1Suffix": {
          "type": "string",
          "description": "Suffix for the thoroughfare number. Only relevant is thoroughfareNumber1 is populated"
        },
        "thoroughfareNumber2": {
          "type": "integer",
          "description": "Second thoroughfare number (only used if the property has a ranged address eg 23-25)",
          "x-cds-type": "PositiveInteger"
        },
        "thoroughfareNumber2Suffix": {
          "type": "string",
          "description": "Suffix for the second thoroughfare number. Only relevant is thoroughfareNumber2 is populated"
        },
        "flatUnitNumber": {
          "type": "string",
          "description": "Unit number (including suffix, if applicable)"
        },
        "floorLevelNumber": {
          "type": "string",
          "description": "Floor or level number (including alpha characters)"
        },
        "lotNumber": {
          "type": "integer",
          "description": "Allotment number for the address",
          "x-cds-type": "PositiveInteger"
        },
        "buildingName1": {
          "type": "string",
          "description": "Building/Property name 1"
        },
        "buildingName2": {
          "type": "string",
          "description": "Building/Property name 2"
        },
        "streetName": {
          "type": "string",
          "description": "The name of the street"
        },
        "streetType": {
          "type": "string",
          "description": "The street type. Valid enumeration defined by Australia Post PAF code file"
        },
        "streetSuffix": {
          "type": "string",
          "description": "The street type suffix. Valid enumeration defined by Australia Post PAF code file"
        },
        "postalDeliveryType": {
          "type": "string",
          "description": "Postal delivery type. (eg. PO BOX). Valid enumeration defined by Australia Post PAF code file"
        },
        "postalDeliveryNumber": {
          "type": "integer",
          "description": "Postal delivery number if the address is a postal delivery type",
          "x-cds-type": "PositiveInteger"
        },
        "postalDeliveryNumberPrefix": {
          "type": "string",
          "description": "Postal delivery number prefix related to the postal delivery number"
        },
        "postalDeliveryNumberSuffix": {
          "type": "string",
          "description": "Postal delivery number suffix related to the postal delivery number"
        },
        "localityName": {
          "type": "string",
          "description": "Full name of locality"
        },
        "postcode": {
          "type": "string",
          "description": "Postcode for the locality"
        },
        "state": {
          "type": "string",
          "description": "State in which the address belongs. Valid enumeration defined by Australia Post PAF code file"
        }
      }
    },
    "Links": {
      "type": "object",
      "required": [
        "self"
      ],
      "properties": {
        "self": {
          "type": "string",
          "description": "Fully qualified link to this API call",
          "x-cds-type": "URIString"
        }
      }
    },
    "Meta": {
      "type": "object"
    },
    "LinksPaginated": {
      "type": "object",
      "required": [
        "self"
      ],
      "x-conditional": [
        "prev",
        "next",
        "first",
        "last"
      ],
      "properties": {
        "self": {
          "type": "string",
          "description": "Fully qualified link to this API call",
          "x-cds-type": "URIString"
        },
        "first": {
          "type": "string",
          "description": "URI to the first page of this set. Mandatory if this response is not the first page",
          "x-cds-type": "URIString"
        },
        "prev": {
          "type": "string",
          "description": "URI to the previous page of this set. Mandatory if this response is not the first page",
          "x-cds-type": "URIString"
        },
        "next": {
          "type": "string",
          "description": "URI to the next page of this set. Mandatory if this response is not the last page",
          "x-cds-type": "URIString"
        },
        "last": {
          "type": "string",
          "description": "URI to the last page of this set. Mandatory if this response is not the last page",
          "x-cds-type": "URIString"
        }
      }
    },
    "MetaPaginated": {
      "type": "object",
      "required": [
        "totalRecords",
        "totalPages"
      ],
      "properties": {
        "totalRecords": {
          "type": "integer",
          "description": "The total number of records in the full set",
          "x-cds-type": "NaturalNumber"
        },
        "totalPages": {
          "type": "integer",
          "description": "The total number of pages in the full set",
          "x-cds-type": "NaturalNumber"
        }
      }
    },
    "ResponseErrorList": {
      "type": "object",
      "required": [
        "errors"
      ],
      "properties": {
        "errors": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "code",
              "title",
              "detail"
            ],
            "properties": {
              "code": {
                "type": "string",
                "description": "Must be one of the following: 0001 – Account not able to be found"
              },
              "title": {
                "type": "string",
                "description": "Must be one of the following: Invalid account"
              },
              "detail": {
                "type": "string",
                "description": "ID of the account not found"
              },
              "meta": {
                "type": "object",
                "description": "Optional additional data for specific error types"
              }
            }
          }
        }
      }
    },
    "BankingProductCategory": {
      "type": "string",
      "description": "The category to which a product or account belongs. See [here](#product-categories) for more details",
      "enum": [
        "TRANS_AND_SAVINGS_ACCOUNTS",
        "TERM_DEPOSITS",
        "TRAVEL_CARDS",
        "REGULATED_TRUST_ACCOUNTS",
        "RESIDENTIAL_MORTGAGES",
        "CRED_AND_CHRG_CARDS",
        "PERS_LOANS",
        "MARGIN_LOANS",
        "LEASES",
        "TRADE_FINANCE",
        "OVERDRAFTS",
        "BUSINESS_LOANS"
      ]
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy