[Openid-specs-fapi] Swagger version of DDA

Nat Sakimura nat at sakimura.org
Mon Jun 20 07:14:24 UTC 2016


 

Dear FAPI WG: 

Attached please find the Swagger version of the DDA, kindly converted by
Edmund Jay. It is identical with the file in
https://bitbucket.org/openid/fapi/src . 

It is a first cut so there are bunch of issues I am sure (and it
generates bunch of warnings), but I am sharing this never-the-less. 

We probably want to split the transfer into a separate file since it can
wait longer. 

One of the thing notably missing here from the PoV of the UK Open
Banking Standard is the "Open Data" portion: i.e., bank and
product/financial instrument metadata. Do you guys have any suggestion
on it? 

Best, 

Nat Sakimura 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openid.net/pipermail/openid-specs-fapi/attachments/20160620/56e2544e/attachment-0001.html>
-------------- next part --------------
# Example YAML to get you started quickly.
# Be aware that YAML has indentation based scoping.
# Code completion support is available so start typing for available options.
swagger: '2.0'

# This is your document metadata
info:
  version: "1.0.0"
  title: OpenID Financial API

tags:
  -
    name: account
    description: account information

  -
    name: statement
    description: statements information

  -
    name: transaction
    description: account transactions

  -
    name: capability
    description: information about the API

  -
    name: customer
    description: information about the customer

  -
    name: transfer
    description: transfer operations and information

# Describe your paths here
paths:
  /account:
    post:
      tags:
        - account
      summary: Gets an account
      description: |
        *Example request for JSON *
        ```
        POST /account HTTP/1.1
        Host: example.com
        Accept: application/json
        Authorization: Bearer w0mcJylzCn-AfvuGdqkty2-KP48=
        Content-Type: application/x-www-form-urlencoded
          
        accountId=1
        ```
          
          
        *Example JSON response *
        ```
        HTTP/1.1 200 OK
        Content-Type: application/json; charset=utf-8
        {
        "DepositAccount" : { }
        }
        ```

      operationId: GetAccount
      consumes:
        - application/x-www-form-urlencoded
      produces:
        - application/json
      parameters:
        -
          name: accountId
          in: formData
          description: Account identifier
          required: true
          type: string

      # Expected responses for this operation:
      responses:
        # Response code
        200:
          description:
            Successful response
          schema:
            $ref: '#/definitions/AccountResponse'

  /account/statement:
    post:
      tags:
        - statement
      summary: Get an account statement.
      description: |
        Gets an image of an account statement.
        Can be one of the following formats:
          - application/pdf
          - image/gif
          - image/jpeg
          - image/png
          - image/tiff
            
        *Example request for application/pdf *
        ```
        POST /account/statement HTTP/1.1
        Host: example.com
        Accept: application/pdf
        Authorization: Bearer w0mcJylzCn-AfvuGdqkty2-KP48=
        Content-Type: application/x-www-form-urlencoded
          
        accountId=1&statementId=1
        ```
          
          
        *Example application/pdf response *
        ```
        HTTP/1.1 200 OK
        Content-Type: application/pdf
        
        Binary data
        ```

      operationId: GetStatement
      consumes:
        - application/x-www-form-urlencoded
      produces:
        - application/pdf
        - image/gif
        - image/jpeg
        - image/png
        - image/tiff

      parameters:
        - name: accountId
          in: formData
          description: Account identifier
          required: true
          type: string

        - name: statementId
          in: formData
          description: Statement identifier
          required: true
          type: string

      # Expected responses for this operation:
      responses:
        # Response code
        200:
          description:
            An image of an account statement

  /account/statements:
    post:
      tags:
        - statement
      summary: Get statements.
      description: |
        Gets a list of statements for the given account.
            
        *Example request for JSON *
        ```
        POST /account/statements HTTP/1.1
        Host: example.com
        Accept: application/json
        Authorization: Bearer w0mcJylzCn-AfvuGdqkty2-KP48=
        Content-Type: application/x-www-form-urlencoded
          
        accountId=1&startTime=2015-01-01Z&endTime=2015-02-01Z&page=1
        ```
          
          
        *Example JSON response *
        ```
        HTTP/1.1 200 OK
        Content-Type: application/json; charset=utf-8
        {
          "Statements" : { }
        }
        ```

      operationId: GetStatements
      consumes:
        - application/x-www-form-urlencoded
      produces:
        - application/json

      parameters:
        - name: accountId
          in: formData
          description: Account identifier
          required: true
          type: string

        - name: startTime
          in: formData
          description: Start time for use in retrieval; ISO 8601 date including zone indicator or combined date time including zone indicator
          required: false
          type: string

        - name: endTime
          in: formData
          description: End time for use in retrieval; ISO 8601 date including zone indicator or combined date time including zone indicator
          required: false
          type: string

        - name: page
          in: formData
          description: Page number (applicable only if the server has indicated that the collection is paginated)
          required: false
          type: string

      # Expected responses for this operation:
      responses:
        # Response code
        200:
          description:
            A list of statements
          schema:
            $ref: '#/definitions/Statements'

  /account/transaction/image:
    post:
      tags:
        - transaction
      summary: Get a transaction image.
      description: |
        An image of a transaction (such as a scanned check).
        Can be one of the following formats:
          - application/pdf
          - image/gif
          - image/jpeg
          - image/png
          - image/tiff
            
        *Example request for application/pdf *
        ```
        POST /account/transaction/image HTTP/1.1
        Host: example.com
        Accept: application/pdf
        Authorization: Bearer w0mcJylzCn-AfvuGdqkty2-KP48=
        Content-Type: application/x-www-form-urlencoded
          
        accountId=1&imageId=1&startTime=2015-01-01Z&endTime=2015-02-01Z
        ```
          
          
        *Example application/pdf response *
        ```
        HTTP/1.1 200 OK
        Content-Type: application/pdf
        
        Binary data
        ```

      operationId: GetTransactionImage
      consumes:
        - application/x-www-form-urlencoded
      produces:
        - application/pdf
        - image/gif
        - image/jpeg
        - image/png
        - image/tiff

      parameters:
        - name: accountId
          in: formData
          description: Account identifier
          required: true
          type: string

        - name: imageId
          in: formData
          description: Image identifier
          required: true
          type: string

        - name: startTime
          in: formData
          description: Start time for use in retrieval; ISO 8601 date including zone indicator or combined date time including zone indicator
          required: false
          type: string

        - name: endTime
          in: formData
          description: End time for use in retrieval; ISO 8601 date including zone indicator or combined date time including zone indicator
          required: false
          type: string

      # Expected responses for this operation:
      responses:
        # Response code
        200:
          description:
            An image of a tranasction

  /account/transactions:
    post:
      tags:
        - transaction
      summary: Get account transactions.
      description: |
        Gets a list of transactions for the given account.
            
        *Example request for JSON *
        ```
        POST /account/transactions HTTP/1.1
        Host: example.com
        Accept: application/json
        Authorization: Bearer w0mcJylzCn-AfvuGdqkty2-KP48=
        Content-Type: application/x-www-form-urlencoded
          
        accountId=1&startTime=2015-01-01Z&endTime=2015-02-01Z&page=1
        ```
          
          
        *Example JSON response *
        ```
        HTTP/1.1 200 OK
        Content-Type: application/json; charset=utf-8
        {
          "Transactions" : { }
        }
        ```

      operationId: GetTransactions
      consumes:
        - application/x-www-form-urlencoded
      produces:
        - application/json

      parameters:
        - name: accountId
          in: formData
          description: Account identifier
          required: true
          type: string

        - name: startTime
          in: formData
          description: Start time for use in retrieval; ISO 8601 date including zone indicator or combined date time including zone indicator
          required: false
          type: string

        - name: endTime
          in: formData
          description: End time for use in retrieval; ISO 8601 date including zone indicator or combined date time including zone indicator
          required: false
          type: string

        - name: page
          in: formData
          description: Page number (applicable only if the server has indicated that the collection is paginated)
          required: false
          type: string

      # Expected responses for this operation:
      responses:
        # Response code
        200:
          description:
            A list of account transactions
          schema:
            $ref: '#/definitions/Transactions'

  /accountlist:
    get:
      tags:
        - account
      summary: Get a lightweight list of accounts for the current token.
      description: |
        Gets a list of accounts for the given token.
            
        *Example request for JSON *
        ```
        GET /accountlist HTTP/1.1
        Host: example.com
        Accept: application/json
        Authorization: Bearer w0mcJylzCn-AfvuGdqkty2-KP48=
          
        ```
          
          
        *Example JSON response *
        ```
        HTTP/1.1 200 OK
        Content-Type: application/json; charset=utf-8
        {
          "AccountDescriptorList" : { }
        }
        ```

      operationId: GetAccounts
      produces:
        - application/json

      # Expected responses for this operation:
      responses:
        # Response code
        200:
          description:
            A list of accounts
          schema:
            $ref: '#/definitions/AccountDescriptorList'

  /accountdetails:
    get:
      tags:
        - account
      summary: Get all detailed account information for the current token.
      description: |
        Get all detailed account information for the given token.
            
        *Example request for JSON *
        ```
        GET /accountdetails HTTP/1.1
        Host: example.com
        Accept: application/json
        Authorization: Bearer w0mcJylzCn-AfvuGdqkty2-KP48=
          
        ```
          
          
        *Example JSON response *
        ```
        HTTP/1.1 200 OK
        Content-Type: application/json; charset=utf-8
        {
          "Accounts" : { }
        }
        ```

      operationId: GetAccountsDetails
      produces:
        - application/json

      # Expected responses for this operation:
      responses:
        # Response code
        200:
          description:
            A list of detailed accounts information
          schema:
            $ref: '#/definitions/Accounts'

    post:
      tags:
        - account
      summary: Query all information for a set of accounts provided in the payload.
      description: |
        Get all detailed account information matching the request parameters.
            
        *Example request for JSON *
        ```
        POST /accountdetails HTTP/1.1
        Host: example.com
        Accept: application/json
        Authorization: Bearer w0mcJylzCn-AfvuGdqkty2-KP48=
        Content-Type: application/json

        {
          "AccountsDetailsRequest": {
            "singleAccountDetailsRequestList": {
              "singleAccountDetailsRequest": [{
                "accountId": "1",
                "startTime": "2015-04-01T00:00:00.000Z"
              }, {
                "accountId": "2",
                "startTime": "2015-05-01T00:00:00.000Z"
              }]
            }
          }
        }
          
        ```
          
          
        *Example JSON response *
        ```
        HTTP/1.1 200 OK
        Content-Type: application/json; charset=utf-8
        {
          "Accounts" : { }
        }
        ```

      operationId: GetAccountsDetailsSet
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: AccountsDetailsRequest
          in: body
          description: AccountDetails Request parameters
          required: true
          schema:
            $ref: '#/definitions/AccountsDetailsRequest'

      # Expected responses for this operation:
      responses:
        # Response code
        200:
          description:
            A list of detailed accounts information
          schema:
            $ref: '#/definitions/Accounts'

  /availability:
    get:
      tags:
        - capability
      summary: Get information about this API’s availability.
      description: |

        *Example request for JSON *
        ```
        GET /availability HTTP/1.1
        Host: example.com
        Accept: application/json
        Authorization: Bearer w0mcJylzCn-AfvuGdqkty2-KP48=

        ```

        *Example JSON response *
        ```
        HTTP/1.1 200 OK
        Content-Type: application/json; charset=utf-8
        {
          "Availability" : { }
        }
        ```

      operationId: GetAvailability
      produces:
        - application/json

      # Expected responses for this operation:
      responses:
        # Response code
        200:
          description:
            API Availability
          schema:
            $ref: '#/definitions/Availability'

  /capability:
    get:
      tags:
        - capability
      summary: Get information about this API’s capabilities.
      description: |

        *Example request for JSON *
        ```
        GET /capability HTTP/1.1
        Host: example.com
        Accept: application/json
        Authorization: Bearer w0mcJylzCn-AfvuGdqkty2-KP48=

        ```

        *Example JSON response *
        ```
        HTTP/1.1 200 OK
        Content-Type: application/json; charset=utf-8
        {
          "Capability": {
            "allowedConnections": 10,
            "supportsCustomer": true,
            "supportsAccounts": true,
            "supportsTransactions": true,
            "supportsImage": true,
            "messageFormat": "JSON"
          }
        }
        ```

      operationId: GetCapability
      produces:
        - application/json

      # Expected responses for this operation:
      responses:
        # Response code
        200:
          description:
            API Capability
          schema:
            $ref: '#/definitions/Capability'

  /customer:
    get:
      tags:
        - customer
      summary: Get information about the customer within the authorization scope.
      description: |

        *Example request for JSON *
        ```
        GET /customer HTTP/1.1
        Host: example.com
        Accept: application/json
        Authorization: Bearer w0mcJylzCn-AfvuGdqkty2-KP48=

        ```

        *Example JSON response *
        ```
        HTTP/1.1 200 OK
        Content-Type: application/json; charset=utf-8
        {
          "Customer": {
            "name": {
              "first": "Michael",
              "middle": "J",
              "last": "Smith",
              "company": "Acme"
            },
            "taxId": "144-27-7471"
          }
        }
        ```

      operationId: GetCustomer
      produces:
        - application/json

      # Expected responses for this operation:
      responses:
        # Response code
        200:
          description:
            API Capability
          schema:
            $ref: '#/definitions/Customer'

  /transfer:
    post:
      tags:
        - transfer
      summary: Create a transfer between accounts.
      description: |

        *Example request for JSON *
        ```
        POST /transfer HTTP/1.1
        Host: example.com
        Accept: application/json
        Authorization: Bearer w0mcJylzCn-AfvuGdqkty2-KP48=
        Content-Type: application/json

        {
          "Transfer" : { }
        }
        ```

        *Example JSON response *
        ```
        HTTP/1.1 200 OK
        Content-Type: application/json; charset=utf-8
        {
          "TransferStatus": {}
        }
        ```

      operationId: DoTransfer
      consumes:
        - application/json
      produces:
        - application/json

      parameters:
        - name: Transfer
          in: body
          description: Transfer request parameters
          required: true
          schema:
            $ref: '#/definitions/Transfer'

      # Expected responses for this operation:
      responses:
        # Response code
        200:
          description:
            Transfer status
          schema:
            $ref: '#/definitions/TransferStatus'

  /transfer/status:
    post:
      tags:
        - transfer
      summary: Get status of a transfer between accounts.
      description: |

        *Example request for JSON *
        ```
        POST /transfer/status HTTP/1.1
        Host: example.com
        Accept: application/json
        Authorization: Bearer w0mcJylzCn-AfvuGdqkty2-KP48=
        Content-Type: application/json

        transferId=1
        ```

        *Example JSON response *
        ```
        HTTP/1.1 200 OK
        Content-Type: application/json; charset=utf-8
        {
          "TransferStatus": {}
        }
        ```

      operationId: GetTransferStatus
      consumes:
        - application/x-www-form-urlencoded
      produces:
        - application/json

      parameters:
        - name: transferId
          in: formData
          description: Transfer identifier
          required: true
          type: string
          
      # Expected responses for this operation:
      responses:
        # Response code
        200:
          description:
            Transfer status
          schema:
            $ref: '#/definitions/TransferStatus'

definitions:

# -----------------------------------------------------------------
# Simple Types
# -----------------------------------------------------------------
              
  AccountStatus:
    type: string
    enum:
    - CLOSED
    - DELINQUENT
    - NEGATIVECURRENTBALANCE
    - OPEN
    - PAID
    - PENDINGCLOSE
    - PENDINGOPEN
    
  AccountType:
    type: string
    description: Account type
    enum:
    - 401A
    - 401K
    - 403B
    - "529"
    - CD
    - CHARGE
    - CHECKING
    - COMMERCIALLINEOFCREDIT
    - COMMERCIALLOAN
    - COVERDELL
    - CREDITCARD
    - ESCROW
    - ESOP
    - GUARDIAN
    - HOMEEQUITYLOAN
    - HOMELINEOFCREDIT
    - INSITUTIONALTRUST
    - INSTALLMENT
    - IRA
    - KEOGH
    - LINEOFCREDIT
    - LOAN
    - MILATARYLOAN
    - MONEYMARKET
    - MORTGAGE
    - PERSONALLOAN
    - ROLLOVER
    - ROTH
    - SARSEP
    - SAVINGS
    - SMBLOAN
    - STUDENTLOAN
    - TAXABLE
    - TDA
    - TRUST
    - UGMA
    - UTMA

  BccountStatus:
    type: string
    enum:
    - CLOSED
    - DELINQUENT


  AssetClass:
    type: string
    enum:
    - DOMESTICBOND
    - INTLBOND
    - INTLSTOCK
    - LARGESTOCK
    - MONEYMARKET
    - OTHER
    - SMALLSTOCK

  BalanceType:
    type: string
    enum:
    - ASSET
    - LIABILITY

  Boolean:
    type: boolean
    
  CallType:
    type: string
    enum:
    - CALL
    - MATURITY
    - PREFUND
    - PUT
  
  CompoundingPeriod:
    type: string
    enum:
    - ANNUALLY
    - BIWEEKLY
    - DAILY
    - MONTHLY
    - SEMIANNUALLY
    - SEMIMONTHLY
    - WEEKLY
    
  
  CouponMatureFrequency:
    type: string
    enum:
    - ANNUAL
    - MONTHLY
    - OTHER
    - QUARTERLY
    - SEMIANNUAL

  DebitCreditMemo:
    type: string
    enum:
    - CREDIT
    - DEBIT
    - MEMO

  DebtClass:
    type: string
    enum:
    - CORPORATE
    - MUNICIPAL
    - OTHER
    - TREASURY

  DebtType:
    type: string
    enum:
    - COUPON
    - ZERO

  DeliveryAddressType:
    type: string
    enum:
    - BUSINESS
    - HOME
    - MAILING

  DepositTransactionType:
    type: string
    enum:
    - ADJUSTMENT
    - ATMDEPOSIT
    - ATMWITHDRAWAL
    - BILLPAYMENT
    - CHECK
    - DEPOSIT
    - DIRECTDEPOSIT
    - DIVIDEND
    - FEE
    - INTEREST
    - POSCREDIT
    - POSDEBIT
    - TRANSFER
    - WITHDRAWAL
        
  HeldInAccount:
    type: string
    enum:
    - CASH
    - MARGIN
    - OTHER
    - SHORT
        
  HoldingSubType:
    type: string
    enum:
    - CASH
    - MONEYMARKET
    
  HoldingType:
    type: string
    enum:
    - ANNUITY
    - BOND
    - CD
    - MUTUALFUND
    - OPTIONS
    - STOCK
    
  Identifier:
    type: string
    maxLength: 128
    
  IncomeType:
    type: string
    enum:
    - CGLONG
    - CGSHORT
    - MISC

  InterestRateType:
    type: string
    enum:
    - FIXED
    - VARIABLE

  Inv401kSourceType:
    type: string
    enum:
    - AFTERTAX
    - MATCH
    - OTHERNONVEST
    - OTHERVEST
    - PRETAX
    - PROFITSHARING
    - ROLLOVER

  InvestmentBalanceType:
    type: string
    enum:
    - AMOUNT
    - PERCENTAGE

  InvestmentTransactionType:
    type: string
    enum:
    - ADJUSTMENT
    - ATM
    - CASH
    - CHECK
    - CLOSURE
    - CLOSUREOPT
    - CONTRIBUTION
    - DEP
    - DIRECTDEBIT
    - DIRECTDEP
    - DIV
    - DIVIDEND
    - DIVIDENDREINVEST
    - EXPENSE
    - FEE
    - INCOME
    - INTEREST
    - INVEXPENSE
    - JRNLFUND
    - JRNLSEC
    - MARGININTEREST
    - OPTIONEXERCISE
    - OPTIONEXPIRATION
    - OTHER
    - PAYMENT
    - POS
    - PURCHASED
    - PURCHASEDTOCOVER
    - PURCHASETOCLOSE
    - PURCHASETOOPEN
    - REINVESTOFINCOME
    - REPEATPMT
    - RETURNOFCAPITAL
    - SOLD
    - SOLDTOCLOSE
    - SOLDTOOPEN
    - SPLIT
    - SRVCHG
    - TRANSFER
    - XFER

  Iso3166CountryCode:
    type: string
    description: ISO 3166 Codes for the representation of names of countries and their subdivisions.
    enum:
    - AD
    - AE
    - AF
    - AG
    - AI
    - AL
    - AM
    - AN
    - AO
    - AQ
    - AR
    - AS
    - AT
    - AU
    - AW
    - AX
    - AZ
    - BA
    - BB
    - BD
    - BE
    - BF
    - BG
    - BH
    - BI
    - BJ
    - BM
    - BN
    - BO
    - BR
    - BS
    - BT
    - BV
    - BW
    - BY
    - BZ
    - CA
    - CC
    - CD
    - CF
    - CG
    - CH
    - CI
    - CK
    - CL
    - CM
    - CN
    - CO
    - CR
    - CS
    - CU
    - CV
    - CX
    - CY
    - CZ
    - DE
    - DJ
    - DK
    - DM
    - DO
    - DZ
    - EC
    - EE
    - EG
    - EH
    - ER
    - ES
    - ET
    - FI
    - FJ
    - FK
    - FM
    - FO
    - FR
    - GA
    - GB
    - GD
    - GE
    - GF
    - GG
    - GH
    - GI
    - GL
    - GM
    - GN
    - GP
    - GQ
    - GR
    - GS
    - GT
    - GU
    - GW
    - GY
    - HK
    - HM
    - HN
    - HR
    - HT
    - HU
    - ID
    - IE
    - IL
    - IM
    - IN
    - IO
    - IQ
    - IR
    - IS
    - IT
    - JE
    - JM
    - JO
    - JP
    - KE
    - KG
    - KH
    - KI
    - KM
    - KN
    - KP
    - KR
    - KW
    - KY
    - KZ
    - LA
    - LB
    - LC
    - LI
    - LK
    - LR
    - LS
    - LT
    - LU
    - LV
    - LY
    - MA
    - MC
    - MD
    - MG
    - MH
    - MK
    - ML
    - MM
    - MN
    - MO
    - MP
    - MQ
    - MR
    - MS
    - MT
    - MU
    - MV
    - MW
    - MX
    - MY
    - MZ
    - NA
    - NC
    - NE
    - NF
    - NG
    - NI
    - NL
    - NO
    - NP
    - NR
    - NU
    - NZ
    - OM
    - PA
    - PE
    - PF
    - PG
    - PH
    - PK
    - PL
    - PM
    - PN
    - PR
    - PS
    - PT
    - PW
    - PY
    - QA
    - RE
    - RO
    - RU
    - RW
    - SA
    - SB
    - SC
    - SD
    - SE
    - SG
    - SH
    - SI
    - SJ
    - SK
    - SL
    - SM
    - SN
    - SO
    - SR
    - ST
    - SV
    - SY
    - SZ
    - TC
    - TD
    - TF
    - TG
    - TH
    - TJ
    - TK
    - TL
    - TM
    - TN
    - TO
    - TR
    - TT
    - TV
    - TW
    - TZ
    - UA
    - UG
    - UM
    - US
    - UY
    - UZ
    - VA
    - VC
    - VE
    - VG
    - VI
    - VN
    - VU
    - WF
    - WS
    - YE
    - YT
    - ZA
    - ZM
    - ZW
        
  Iso4217Code:
    type: string
    enum:
    - AED
    - AFN
    - ALL
    - AMD
    - ANG
    - AOA
    - ARS
    - AUD
    - AWG
    - AZN
    - BAM
    - BBD
    - BDT
    - BGN
    - BHD
    - BIF
    - BMD
    - BND
    - BOB
    - BOV
    - BRL
    - BSD
    - BTN
    - BWP
    - BYR
    - BZD
    - CAD
    - CDF
    - CHE
    - CHF
    - CHW
    - CLF
    - CLP
    - CNY
    - COP
    - COU
    - CRC
    - CUC
    - CUP
    - CVE
    - CZK
    - DJF
    - DKK
    - DOP
    - DZD
    - EGP
    - ERN
    - ETB
    - EUR
    - FJD
    - FKP
    - GBP
    - GEL
    - GHS
    - GIP
    - GMD
    - GNF
    - GTQ
    - GYD
    - HKD
    - HNL
    - HRK
    - HTG
    - HUF
    - IDR
    - ILS
    - INR
    - IQD
    - IRR
    - ISK
    - JMD
    - JOD
    - JPY
    - KES
    - KGS
    - KHR
    - KMF
    - KPW
    - KRW
    - KWD
    - KYD
    - KZT
    - LAK
    - LBP
    - LKR
    - LRD
    - LSL
    - LYD
    - MAD
    - MDL
    - MGA
    - MKD
    - MMK
    - MNT
    - MOP
    - MRO
    - MUR
    - MVR
    - MWK
    - MXN
    - MXV
    - MYR
    - MZN
    - NAD
    - NGN
    - NIO
    - NOK
    - NPR
    - NZD
    - OMR
    - PAB
    - PEN
    - PGK
    - PHP
    - PKR
    - PLN
    - PYG
    - QAR
    - RON
    - RSD
    - RUB
    - RWF
    - SAR
    - SBD
    - SCR
    - SDG
    - SEK
    - SGD
    - SHP
    - SLL
    - SOS
    - SRD
    - SSP
    - STD
    - SVC
    - SYP
    - SZL
    - THB
    - TJS
    - TMT
    - TND
    - TOP
    - TRY
    - TTD
    - TWD
    - TZS
    - UAH
    - UGX
    - USD
    - USN
    - UYI
    - UYU
    - UZS
    - VEF
    - VND
    - VUV
    - WST
    - XAF
    - XAG
    - XAU
    - XBA
    - XBB
    - XBC
    - XBD
    - XCD
    - XDR
    - XOF
    - XPD
    - XPF
    - XPT
    - XSU
    - XTS
    - XUA
    - XXX
    - YER
    - ZAR
    - ZMW
    - ZWL
    
  LoanPaymentFrequency:
    type: string
    enum:
    - ANNUALLY
    - BIMONTHLY
    - BIWEEKLY
    - FOURWEEKS
    - MONTHLY
    - OTHER
    - QUARTERLY
    - SEMIANNUALLY
    - TWICEMONTHLY
    - WEEKLY

  LoanTransactionType:
    type: string
    enum:
    - ADJUSTMENT
    - FEE
    - INTEREST
    - PAYMENT

  LocTransactionType:
    type: string
    enum:
    - ADJUSTMENT
    - CHECK
    - FEE
    - INTEREST
    - PAYMENT
    - WITHDRAWAL

  MessageFormat:
    type: string
    enum:
    - JSON
    - XML
       
  MutualFundType:
    type: string
    enum:
    - CLOSEEND
    - OPENEND
    - OTHER
      
  Number:
    type: number
    format: double

      
  OptionType:
    type: string
    enum:
    - CALL
    - PUT
      
  OrderDuration:
    type: string
    enum:
    - DAY
    - GOODTILLCANCEL
    - IMMEDIATE
      
  OrderType:
    type: string
    enum:
    - BUY
    - BUYTOCOVER
    - BUYTOOPEN
    - SELL
    - SELLCLOSE
    - SELLSHORT
    - SELLTOCOVER
    - SELLTOOPEN
      
  PaymentFrequency:
    type: string
    enum:
    - ANNUALLY
    - BIWEEKLY
    - DAILY
    - MONTHLY
    - SEMIANNUALLY
    - SEMIMONTHLY
    - WEEKLY
      
  PositionType:
    type: string
    enum:
    - LONG
    - SHORT
      
  Secured:
    type: string
    enum:
    - COVERED
    - NAKED
      
  SecurityIdType:
    type: string
    enum:
    - CUSIP
    - ISIN
    - SEDOL
    - SICC
    - VALOR
    - WKN
      
  SecurityType:
    type: string
    enum:
    - DEBT
    - MUTUALFUND
    - OPTION
    - OTHER
    - STOCK
    - SWEEP
      
  StockType:
    type: string
    enum:
    - COMMON
    - CONVERTIBLE
    - OTHER
    - PREFERRED
      
  String10:
    type: string
    maxLength: 10
      
  String2:
    type: string
    maxLength: 2
      
  String255:
    type: string
    maxLength: 255
      
  String3:
    type: string
    maxLength: 3

  String64:
    type: string
    maxLength: 64

  String9:
    type: string
    maxLength: 9
      
  SubAccountType:
    type: string
    enum:
    - CASH
    - MARGIN
    - OTHERS
    - SHORT
      
  TelephoneNumberType:
    type: string
    enum:
    - BUSINESS
    - CELL
    - FAX
    - HOME
      
  Timestamp:
    type: string
    description: ISO 8601 date time with milliseconds in UTC time zone.
    pattern: \d{4}\-\d\d\-\d\dT\d\d:\d\d:\d\d\.\d\d\dZ
      
  TransactionReason:
    type: string
    enum:
    - CALL
    - MATURITY
    - SELL
      
  TransactionStatus:
    type: string
    enum:
    - AUTHORIZATION
    - MEMO
    - PENDING
    - POSTED
      
  TransferStatusStatus:
    type: string
    enum:
    - FAILURE
    - NOFUNDS
    - PENDING
    - SUCCESS
    
  UnitType:
    type: string
    enum:
    - CURRENCY
    - SHARES


# -----------------------------------------------
# Entity Types
# -----------------------------------------------

  Account:
    description: An abstract account entity that concrete account entities extend. Extends and inherits all fields from [AccountDescriptor]('#/definitions/AccountDescriptor').
    type: object
    discriminator: AccountObjectType

    allOf:
      - $ref: '#/definitions/AccountDescriptor'
      - type: object
        required:
          - Currency
          - AccountNumber
          - InterestRate
          - AccountObjectType # for Polymorphism
      
        properties:
          AccountObjectType:
            type: string
            description: for Polymorphism

          ParentAccountId:
            description: Long-term persistent identity of the parent account. This is used to group accounts.
            $ref: '#/definitions/Identifier'
  
          Nickname: 
            type: string
            description: The user's moniker for the account

          Currency:
            description: Currency Aggregate
            $ref: '#/definitions/Currency'
  
          LineOfBusiness:
            description: The line of business, such as consumer, consumer joint, small business, corporate, etc.
            type: string
          
          AccountNumber:
            description: End user's handle for account at owning institution
            type: string
          
          RoutingTransitNumber:
            description: RTN associated with account number at owning institution.
            type: string

          BalanceType:
            description: ASSET (positive transaction amount increases balance), LIABILITY (positive transaction amount decreases balance)
            $ref: '#/definitions/BalanceType'

          InterestRate:
            description: Interest Rate of Account
            type: number
            format: double

          InterestRateType:
            description: FIXED or VARIABLE
            $ref: '#/definitions/InterestRateType'

          InterestRateAsOf:
            description: Date of account's interest rate
            $ref: '#/definitions/Timestamp'

          PriorInterestRate:
            description: Previous Interest Rate of Account
            type: number
            format: double
  
          TransferIn:
            description: Account is eligible for incoming transfers
            type: boolean

          TransferOut:
            description: Account is eligible for outgoing transfers
            type: boolean

          MicrNumber:
            description: MICR Number
            $ref: '#/definitions/String64'

          LastActivityDate:
            description: Date that last transaction occurred on account
            $ref: '#/definitions/Timestamp'

          TransactionsIncluded:
            description: Default is false. If present and true, a call to retrieve transactions will not return any further details about this account. This is an optimization that allows a Durable Data API server to return transactions and account details in a single call.
            type: boolean

  AccountDescriptor:
    description: Minimal information about the account for use in lightweight arrays.
    type: object
    discriminator:
      AccountDescriptorObjectType
    required:
      - AccountId
      - DisplayName
      - Status
      - AccountDescriptorObjectType
    properties:
      AccountDescriptorObjectType:
        type: string
        description: for Polymorphism

      AccountId:
        description: Long-term persistent identity of the account. Not an account number. This identity must be unique to the owning institution.
        $ref: '#/definitions/Identifier'

      AccountType: 
        description: Account type
        $ref: '#/definitions/AccountType'
      
      DisplayName:
        description: Account identity to display to customer. This may be a masked account number or product name followed by masked number.
        type: string

      Status:
        description: Account status
        $ref:  '#/definitions/AccountStatus'
      
      Description:
        description: Description of account
        type: string
      
      Error:
        type: object
        description: Present if an error was encountered while retrieving this account
        $ref: '#/definitions/Error'

      FiAttributes:
        description: Array of FI-specific attributes
        type: array
        items:
            $ref: '#/definitions/FiAttribute'

  AccountDescriptorList:
    description: A lightweight array of accounts.
    type: array
    items:
      $ref: '#/definitions/AccountDescriptor'

#TODO couble check items
  Accounts:
    description: An optionally paginated array of accounts.
    type: object
    properties:
      Total:
        type: integer
        format: int32
        description: Total number of results in this collection across all pages
      TotalPages:
        type: integer
        format: int32
        description: Total number of pages
      Page:
        type: integer
        format: int32
        description: Current page number
      Accounts:
        type: array
        description: An array of accounts with entity types dependent on the account type (deposit, investment, loan, or line of credit)
        items:
          $ref: '#/definitions/Account'
          
  AccountsDetailsRequest:
    type: object
    required:
      - SingleAccountDetailsRequestList
    properties:
      SingleAccountDetailsRequestList:
        $ref: '#/definitions/SingleAccountDetailsRequestList'

  Availability:        
    type: object
    required:
      - CurrentStatus
    properties:
      CurrentStatus:
        type: string
      CurrentStatusDesc:
        type: string
      PlannedAvailability:
        type: array
        description: An array of PlannedAvailability
        items:
          $ref: '#/definitions/PlannedAvailability'
          
  Capability:        
    type: object
    description: Describes capabilities of this implementation of Financial API.
    properties:
      AllowedConnections:
        type: integer
        format: int32
        description: Number of concurrent connections allowed for this client
      ActiveConnections:
        type: integer
        format: int32
        description: Current number of active connections for this client
      SupportsCustomer:
        type: boolean
        default: false
        description: Capable of responding to customer queries. Defaults to false.
      SupportsAccounts:
        type: boolean
        default: false
        description: Capable of responding to accounts and account queries. Defaults to false.
      SupportsTransactions:
        type: boolean
        default: false
        description: Capable of responding to transaction queries. Defaults to false.
      SupportsStatements:
        type: boolean
        default: false
        description: Capable of responding to statements and statement queries. Defaults to false.
      SupportsImage:
        type: boolean
        default: false
        description: Capable of responding to image queries. Defaults to false.
      SupportsBillPay:
        type: boolean
        default: false
        description: Capable of supporting a bill payment request. Defaults to false.
      SupportsTransfer:
        type: boolean
        default: false
        description: Capable of supporting a transfer request. Defaults to false.
      MessageFormat:
        $ref: '#/definitions/MessageFormat'
        description: Whether messages are in XML or JSON format. Defaults to JSON.
      TransferCutOffTime:
        $ref: '#/definitions/Timestamp'
        description: Cut off time for transfers. Required if transfers are supported.
  
  Contribution:        
    type: object
    properties:
      SecurityId:
        type: string
        description: Unique identifier of security
      SecurityIdType:
        $ref: '#/definitions/SecurityIdType'
        description: Security identifier type
      EmployerMatchPercentage:
        type: number
        format: double
        description: Employer contribution match percentage
      EmployerMatchAmount:
        type: number
        format: double
        description: Employer contribution match amount
      EmployeePreTaxAmount:
        type: number
        format: double
        description: Employee pre-tax contribution amount
      EmployeePreTaxPercentage:
        type: number
        format: double
        description: Employee pre-tax contribution percentage
      EmployeeAfterTaxAmount:
        type: number
        format: double
        description: Employee after tax contribution amount
      EmployeeAfterTaxPercentage:
        type: number
        format: double
        description: Employee after tax contribution percentage
      EmployeeDeferPreTaxAmount:
        type: number
        format: double
        description: Employee defer pre-tax contribution match amount
      EmployeeDeferPreTaxPercentage:
        type: number
        format: double
        description: Employee defer pre-tax contribution match percentage
      EmployeeYearToDate:
        type: number
        format: double
        description: Employee total year to date contribution
      EmployerYearToDate:
        type: number
        format: double
        description: Employer total year to date contribution
      RolloverContributionPercentage:
        type: number
        format: double
        description: Rollover contribution percentage
      RolloverContributionAmount:
        type: number
        format: double
        description: Rollover contribution Amount

  Currency:
    type: object
    properties:
      CurrencyRate: 
        type: number
        format: double
        description: Currency rate between original and converted currency
      CurrencyCode:
        $ref: '#/definitions/Iso4217Code'
        description: ISO 4217 currency code
      OriginalCurrencyCode:
        $ref: '#/definitions/Iso4217Code'
        descriptions: Original ISO 4217 currency code

  Customer:
    type: object
    required:
      - CustomerId
      - Name
    properties:
      CustomerId: 
        $ref: '#/definitions/Identifier'
        description: Long-term persistent identity of the customer. This identity must be unique to the owning institution.
      Name:
        $ref: '#/definitions/CustomerName'
        description: The customer's name
      DateOfBirth:
        $ref: '#/definitions/Timestamp'
        descriptions: The customer's date of birth
      TaxId:
        type: string
        description: The SSN or TIN associated with this customer
      GovernmentId:
        type: string
        description: A federal (such as passport) or state (such as driver's license) issued identifier
      Email:
        type: array
        description: An array of the customer's electronic mail addresses
        items:
          type: string
          format: email
      Addresses:
        type: array
        description: An array of the customer's physical mail addresses
        items:
          $ref: '#/definitions/DeliveryAddress'
      Telephones:
        type: array
        description: An array of the customer's telephone numbers
        items:
          $ref: '#/definitions/TelephoneNumber'

  CustomerName:
    type: object
    required:
      - First
      - Last
    properties:
      Prefix:
        type: string
        description: Name prefix, e.g. Mr.
      First:
        type: string
        description: First name
      Middle:
        type: string
        description: Middle name
      Last:
        type: string
        description: Last name
      Suffix:
        type: string
        description: Name suffix, e.g. Jr.
      Company:
        type: string
        description: Company name

  DebtSecurity:
    type: object
    properties:
      ParValue:
        type: number
        format: double
        description: Par value amount
      DebtType:
        $ref: '#/definitions/DebtType'
        description: Debt type (COUPON, ZERO)
      DebtClass:
        $ref: '#/definitions/DebtClass'
        description: Classification of debt (TREASURY, MUNICIPAL, CORPORATE,OTHER)
      CouponRate:
        type: number
        format: double
        description: Bond coupon rate for next closest call date 
      CouponDate:
        $ref: '#/definitions/Timestamp'
        description: Maturity date for next coupon
      CouponMatureFrequency:
        $ref: '#/definitions/CouponMatureFrequency'
        description: 'When coupons mature. One of the following values: MONTHLY, QUARTERLY, SEMIANNUAL, ANNUAL, or OTHER'
      CallPrice:
        type: number
        format: double
        description: Bond call price
      YieldToCall:
        type: number
        format: double
        description: Yield to next call
      CallDate:
        $ref: '#/definitions/Timestamp'
        description: Next call date
      CallType:
        $ref: '#/definitions/CallType'
        description: Type of next call. CALL, PUT, PREFUND, MATURITY
      YieldToMaturity:
        type: number
        format: double
        description: Yield to maturity

  DeliveryAddress:
    type: object
    required:
      - Line1
      - City
      - State
      - Zip
    properties:
      Type:
        $ref: '#/definitions/DeliveryAddressType'
        description: Address type
      Line1:
        $ref: '#/definitions/String64'
        description: The delivery location's first line
      Line2:
        $ref: '#/definitions/String64'
        description: The delivery location's second line
      Line3:
        $ref: '#/definitions/String64'
        description: The delivery location's third line
      City:
        $ref: '#/definitions/String64'
        description: The delivery location's city
      State:
        $ref: '#/definitions/String2'
        description: The delivery location's state
      Zip:
        $ref: '#/definitions/String9'
        description: The delivery location's zip code
      Country:
        $ref: '#/definitions/Iso3166CountryCode'
        description: ISO 3166 two digit country code

  DepositAccount:
    type: object
    description: Extends and inherits all fields from Account.
    allOf:
      - $ref: '#/definitions/Account'
      - type: object
        required:
          - BalanceAsOf
          - CurrentBalance
        properties:
          BalanceAsOf:
            description: As-of date of balances
            type: number
            format: double
          CurrentBalance:
            description: Balance of funds in account
            type: number
            format: double
          OpeningDayBalance:
            description: Day's opening fund balance
            type: number
            format: double
          AvailableBalance:
            description: Balance of funds available for use
            type: number
            format: double
          AnnualPercentageYield:
            description: Annual Percentage Yield
            type: number
            format: double
          InterestYtd:
            description: YTD Interest
            type: number
            format: double
          Term:
            description: Term of CD in months
            type: integer
            format: int32
          MaturityDate:
            description: Maturity date for CDs
            $ref: '#/definitions/Timestamp'
            format: double
          Transactions:
            description: Array of DepositTransaction
            type: array
            items:
              $ref: '#/definitions/DepositTransaction'

  DepositTransaction:
    type: object
    description: Extends and inherits all fields from Transaction.
    allOf:
      - $ref: '#/definitions/Transaction'
      - type: object
        required:
          - TransactionType
        properties:
          TransactionType:
            description: CHECK, WITHDRAWAL, TRANSFER, POSDEBIT, ATMWITHDRAWAL, BILLPAYMENT, FEE, DEPOSIT, ADJUSTMENT,INTEREST, DIVIDEND, DIRECTDEPOSIT, ATMDEPOSIT, POSCREDIT
            $ref: '#/definitions/DepositTransactionType'
          Payee:
            description: Payee name
            $ref: '#/definitions/String255'
          CheckNumber:
            description: Check number
            type: integer
            format: int64
 
  Error:
    type: object
    description: An error entity which can be used at the API level for error responses or at the account level to indicate a problem specific to a particular account.
    required:
      - Code
    properties:
      Code: 
        type: string
        description: Long term persistent identifier which can be used to trace error condition back to log information
      Message:
        type: string
        description: End user displayable information which might help the customer diagnose an error

  FiAttribute:
    type: object
    description: FI-specific attribute.
    required:
      - Name
      - Value
    properties:
      Name: 
        type: string
      Value:
        type: string

  FiPortion:
    type: object
    properties:
      AssetClass:
        type: string
        description: FI-specific asset class
      Percent:
        type: number
        format: double
        description: Percentage of asset class that falls under this asset

  Holding:
    type: object
    required:
      - Units
    properties:
      HoldingId:
        $ref: '#/definitions/Identifier'
        description: Long term persistent identity of the holding
      SecurityId:
        type: string
        description: Unique identifier of security
      SecurityIdType:
        $ref: '#/definitions/SecurityIdType'
        description: Security identifier type
      HoldingName:
        type: string
        description: Holding name or security name
      HoldingType:
        $ref: '#/definitions/HoldingType'
        description: STOCK, BOND, MUTUALFUND, CD, ANNUITY, OPTIONS
      HoldingSubType:
        $ref: '#/definitions/HoldingSubType'
        description: MONEYMARKET, CASH
      PositionType:
        $ref: '#/definitions/PositionType'
        description: LONG, SHORT
      HeldInAccount:
        $ref: '#/definitions/HeldInAccount'
        description: Sub-account CASH, MARGIN, SHORT, OTHER
      Description:
        type: string
        description: The description of the holding
      Symbol:
        type: string
        description: Ticker / Market symbol
      OriginalPurchaseDate:
        $ref: '#/definitions/Timestamp'
        description: Date of original purchase
      PurchasedPrice:
        type: number
        format: double
        description: Price of holding at the time of purchase
      CurrentUnitPrice:
        type: number
        format: double
        description: Current unit price
      ChangeInPrice:
        type: number
        format: double
        description: Change in current price compared to previous day's close
      CurrentUnitPriceDate:
        $ref: '#/definitions/Timestamp'
        description: Current unit price as of date
      Units:
        type: number
        format: double
        description: Required for stock, mutual funds. Number of shares (with decimals).
      MarketValue:
        type: number
        format: double
        description: Market value at the time of data retrieved
      FaceValue:
        type: number
        format: double
        description: Required for bonds. Face value at the time of data retrieved.
      AverageCost:
        type: boolean
        description: Cost is average of all purchases for holding
      CashAccount:
        type: boolean
        description: If true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account
      Rate:
        type: number
        format: double
        description: For CDs, bonds, and other rate based holdings
      ExpirationDate:
        $ref: '#/definitions/Timestamp'
        description: For CDs, bonds, and other time-based holdings
      Inv401kSource:
        $ref: '#/definitions/Inv401kSourceType'
        description: Source for money for this security. PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST
      Currency:
        $ref: '#/definitions/Currency'
        description: Currency information if it is different from Account entity
      AssetClasses:
        description: Percent breakdown by asset class
        type: array
        items:
          $ref: '#/definitions/Portion'
      FiAssetClasses:
        description: Percent breakdown by FI-specific asset class percentage breakdown
        type: array
        items:
          $ref: '#/definitions/FiPortion'
      FiAttributes:
        description: Array of FI-specific attributes
        type: array
        items:
          $ref: '#/definitions/FiAttribute'
      TaxLots:
        description: Breakdown by tax lot
        type: array
        items:
          $ref: '#/definitions/TaxLot'
      MutualFundSecurity:
        description: "Information about the MutualFundSecurity (Only one of the fields will be available: MutualFundSecurity, OptionSecurity, OtherSecurity, StockSecurity, SweepSecurity, or DebtSecurity)"
        $ref: '#/definitions/MutualFundSecurity'
      OptionSecurity:
        description: "Information about the OptionSecurity (Only one of the fields will be available: MutualFundSecurity, OptionSecurity, OtherSecurity, StockSecurity, SweepSecurity, or DebtSecurity)"
        $ref: '#/definitions/OptionSecurity'
      OtherSecurity:
        description: "Information about the OtherSecurity (Only one of the fields will be available: MutualFundSecurity, OptionSecurity, OtherSecurity, StockSecurity, SweepSecurity, or DebtSecurity)"
        $ref: '#/definitions/OtherSecurity'
      StockSecurity:
        description: "Information about the StockSecurity (Only one of the fields will be available: MutualFundSecurity, OptionSecurity, OtherSecurity, StockSecurity, SweepSecurity, or DebtSecurity)"
        $ref: '#/definitions/StockSecurity'
      SweepSecurity:
        description: "Information about the SweepSecurity (Only one of the fields will be available: MutualFundSecurity, OptionSecurity, OtherSecurity, StockSecurity, SweepSecurity, or DebtSecurity)"
        $ref: '#/definitions/SweepSecurity'
      DebtSecurity:
        description: "Information about the DebtSecurity (Only one of the fields will be available: MutualFundSecurity, OptionSecurity, OtherSecurity, StockSecurity, SweepSecurity, or DebtSecurity)"
        $ref: '#/definitions/DebtSecurity'

  InvestmentAccount:
    type: object
    description: Extends and inherits all fields from Account.
    allOf:
      - $ref: '#/definitions/Account'
      - type: object
        required:
          - BalanceAsOf
          - CurrentValue
        properties:
          BalanceAsOf:
            $ref: '#/definitions/Timestamp'
            description: As-of date for balances
          AllowedCheckWriting:
            type: boolean
            description: Check writing privileges
          AllowedOptionTrade:
            type: boolean
            description: Allowed to trade options
          CurrentValue:
            type: number
            format: double
            description: Total current value of all investments
          Holdings:
            description: Array of holdings
            type: array
            items:
              $ref: '#/definitions/Holding'
          OpenOrders:
            description: Array of open orders
            type: array
            items:
              $ref: '#/definitions/OpenOrder'
          Contribution:
            description: Describes how new contributions are distributed among the available securities
            type: array
            items:
              $ref: '#/definitions/Contribution'
          Vesting:
            description: Provides the past, present, and future vesting schedule and percentages
            type: array
            items:
              $ref: '#/definitions/Vesting'
          InvestmentLoans:
            description: Array of investment loans
            type: array
            items:
              $ref: '#/definitions/InvestmentLoan'
          AvailableCashBalance:
            type: number
            format: double
            description: Cash balance across all sub-accounts. Should include sweep funds.
          Margin:
            type: boolean
            description: Margin trading is allowed
          MarginBalance:
            type: number
            format: double
            description: Margin balance
          ShortBalance:
            type: number
            format: double
            description: Short Balance
          RolloverAmount:
            type: number
            format: double
            description: Rollover Amount
          EmployerName:
            type: string
            description: Name of the employer in investment 401k Plan
          BrokerId:
            type: string
            description: Unique identifier FI
          PlanId:
            type: string
            description: Plan number for Investment 401k plan
          CalendarYearFor401k:
            description: Date for this calendar year for 401K account
            $ref: '#/definitions/Timestamp'
          BalanceList:
            description: Balance List. Name value pair aggregate.
            type: array
            items:
              $ref: '#/definitions/InvestmentBalance'
          DailyChange:
            type: number
            format: double
            description: Daily change
          PercentageChange:
            type: number
            format: double
            description: Percentage change
          Transactions:
            description: Array of InvestmentTransaction
            type: array
            items:
              $ref: '#/definitions/InvestmentTransaction'

  InvestmentBalance:
    type: object
    properties:
      BalanceName:
        type: string
        description: Name of the balance
      BalanceDescription:
        type: string
        description: Description of balance
      BalanceType:
        $ref: '#/definitions/InvestmentBalanceType'
        description: AMOUNT, PERCENTAGE
      BalanceValue:
        type: number
        format: double
        description: Value of balance name
      BalanceDate:
        $ref: '#/definitions/Timestamp'
        description: Date as of this balance
      Currency:
        $ref: '#/definitions/Currency'
        description: Currency if different from that of account

  InvestmentLoan:
    type: object
    required:
      - LoanId
      - CurrentLoanBalance
      - DateAsOf
    properties:
      LoanId:
        type: string
        description: Unique identifier for this loan
      LoanDescription:
        type: string
        description: Description
      InitialLoanBalance:
        type: number
        format: double
        description: Initial loan balance amount
      LoanStartDate:
        $ref: '#/definitions/Timestamp'
        description: Start date of the loan
      CurrentLoanBalance:
        type: number
        format: double
        description: Current loan principal balance amount
      DateAsOf:
        $ref: '#/definitions/Timestamp'
        description: Date and time of current loan balance
      LoanRate:
        type: number
        format: double
        description: Loan annual interest rate for the loan
      LoanPaymentAmount:
        type: number
        format: double
        description: Loan payment amount
      LoanPaymentFrequency:
        $ref: '#/definitions/LoanPaymentFrequency'
        description: WEEKLY, BIWEEKLY, TWICEMONTHLY, MONTHLY,FOURWEEKS, BIMONTHLY, QUARTERLY, SEMIANNUALLY, ANNUALLY, OTHER
      LoanPaymentInitial:
        type: number
        format: double
        description: Initial number of loan payments
      LoanPaymentsRemaining:
        type: integer
        format: int32
        description: Remaining number of loan payments
      LoanMaturityDate:
        $ref: '#/definitions/Timestamp'
        description: Expected loan end date
      LoanInterestToDate:
        type: number
        format: double
        description: Total interest paid to date on this loan
      LoanTotalProjectedInterest:
        type: number
        format: double
        description: Total projected interest to be paid on this loan
      LoanNextPaymentDate:
        $ref: '#/definitions/Timestamp'
        description: The next payment date for the loan

  InvestmentTransaction:
    type: object
    description: Extends and inherits all fields from Transaction.
    allOf:
      - $ref: '#/definitions/Transaction'
      - type: object
        required:
          - TransactionType
        properties:
          TransactionType:
            $ref: '#/definitions/InvestmentTransactionType'
            description: PURCHASED, SOLD, PURCHASEDTOCOVERADJUSTMENT, PURCHASETOOPEN, PURCHASETOCLOSE, SOLDTOOPEN, SOLDTOCLOSE, INTEREST, MARGININTEREST, REINVESTOFINCOME, RETURNOFCAPITAL, TRANSFER, CONTRIBUTION, FEE, OPTIONEXERCISE, OPTIONEXPIRATION, DIVIDEND, DIVIDENDREINVEST, SPLIT, CLOSURE, INCOME, EXPENSE, CLOSUREOPT, INVEXPENSE, JRNLSEC, JRNLFUND, OTHER, DIV, SRVCHG, DEP, ATM, POS, XFER, CHECK, PAYMENT, CASH, DIRECTDEP, DIRECTDEBIT, REPEATPMT
          Shares:
            type: number
            format: double
            description: Required for stock, mutual funds. Number of shares (with decimals). Negative numbers indicate securities are being removed from the account.
          FaceValue:
            type: number
            format: double
            description: Cash value for bonds
          Price:
            type: number
            format: double
            description: Unit purchase price
          SecurityId:
            type: string
            description: Unique identifier of security
          SecurityIdType:
            $ref: '#/definitions/SecurityIdType'
            description: Security identifier type
          SecurityType:
            $ref: '#/definitions/SecurityType'
            description: STOCK, MUTUALFUND, DEBT, OPTION, SWEEP, OTHER
          Symbol:
            type: string
            description: Ticker symbol
          Markup:
            type: number
            format: double
            description: Portion of unit price that is attributed to the dealer markup
          Commission:
            type: number
            format: double
            description: Transaction commission
          Taxes:
            type: number
            format: double
            description: Taxes on the trade
          Fees:
            type: number
            format: double
            description: Fees applied to the trade
          Load:
            type: number
            format: double
            description: Load on the transaction
          Inv401kSource:
            $ref: '#/definitions/Inv401kSourceType'
            description: Source of money. PRETAX, AFTERTAX, MATCH,PROFITSHARING,ROLLOVER, OTHERVEST, OTHERNONVEST
          ConfirmationNumber:
            type: string
            description: Confirmation number of the transaction
          FractionalCash:
            type: number
            format: double
            description: Cash for fractional units (used for stock splits)
          IncomeType:
            $ref: '#/definitions/IncomeType'
            description: "Type of investment income: CGLONG (capital gains-long term), CGSHORT (capital gains-short term), MISC"
          OldUnits:
            type: number
            format: double
            description: Number of shares before split
          SplitRatioNumerator:
            type: number
            format: double
            description: Split ratio numerator
          SplitRatioDenominator:
            type: number
            format: double
            description: Split ratio denominator
          NewUnits:
            type: number
            format: double
            description: Number of shares after split
          SubAccountSec:
            $ref: '#/definitions/SubAccountType'
            description: "Sub-account security Type: CASH, MARGIN, SHORT and OTHERS"
          SubAccountFund:
            $ref: '#/definitions/SubAccountType'
            description: "From which account money came in: CASH, MARGIN, SHORT and OTHERS"
          LoanId:
            type: string
            description: For 401k accounts only. This indicates the transaction was due to a loan or a loan repayment.
          LoanPrincipal:
            type: number
            format: double
            description: How much loan pre-payment is principal
          LoanInterest:
            type: number
            format: double
            description: How much loan pre-payment is interest
          PayrollDate:
            $ref: '#/definitions/Timestamp'
            description: The date for the 401k transaction was obtained in payroll
          PriorYearContrib:
            type: boolean
            description: Indicates this buy was made using prior years contribution. TRUE or FALSE
          Withholding:
            type: number
            format: double
            description: Federal tax withholding
          TaxExempt:
            type: boolean
            description: Tax-exempt transaction TRUE or FALSE
          Gain:
            type: number
            format: double
            description: For sales
          StateWithholding:
            type: number
            format: double
            description: State tax withholding
          Penalty:
            type: number
            format: double
            description: Indicates amount withheld due to a penalty
          RunningBalance:
            type: number
            format: double
            description: Running balance of the position
          UnitPrice:
            type: number
            format: double
            description: Price per commonly-quoted unit. Does not include markup/markdown, unitprice. Share price for stocks, mutual funds, and others. Percentage of par for bonds. Per share (not contract) for options.
          Units:
            type: number
            format: double
            description: For security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for bonds. Contracts for options.
          UnitType:
            $ref: '#/definitions/UnitType'
            description: SHARES, CURRENCY
          TransactionReason:
            $ref: '#/definitions/TransactionReason'
            description: TransactionReason

  LineItem:
    type: object
    description: LineItem
    required:
      - Description
      - Amount
    properties:
      Description: 
        type: string
        description: The description of the line item
      Amount: 
        type: number
        format: double
        description: The amount of money attributable to this line item
      CheckNumber: 
        type: integer
        format: int64
        description: Check number
      Memo: 
        $ref: '#/definitions/String255'
        description: Secondary item description
      Reference: 
        type: string
        description: A reference number
      ImageIds: 
        type: array
        description: Array of image identifiers (unique to transaction) used to retrieve images of check or transaction receipt
        items: 
          type: string

  LoanAccount:
    type: object
    description: Extends and inherits all fields from Account.
    allOf:
      - $ref: '#/definitions/Account'
      - type: object
        required:
          - BalanceAsOf
          - PrincipalBalance
          - OriginalPrincipal
          - LoanTerm
          - TotalNumberOfPayments
          - PaymentFrequency
        properties:
          BalanceAsOf:
            $ref: '#/definitions/Timestamp'
            description: As-of date for balances
          PrincipalBalance:
            type: number
            format: double
            description: Principal balance of loan
          EscrowBalance:
            type: number
            format: double
            description: Escrow balance of loan
          OriginalPrincipal:
            type: number
            format: double
            description: Original principal of loan
          OriginatingDate:
            $ref: '#/definitions/Timestamp'
            description: Loan origination date
          LoanTerm:
            type: integer
            format: int32
            description: Term of loan in months
          TotalNumberOfPayments:
            type: integer
            format: int32
            description: Total number of payments
          NextPaymentAmount:
            type: number
            format: double
            description: Amount of next payment
          NextPaymentDate:
            $ref: '#/definitions/Timestamp'
            description: Date of next payment
          PaymentFrequency:
            $ref: '#/definitions/PaymentFrequency'
            description: DAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
          CompoundingPeriod:
            $ref: '#/definitions/CompoundingPeriod'
            description: DAILY, WEEKLY, BIWEEKLY, SEMIMONTHLY, MONTHLY, SEMIANNUALLY, ANNUALLY
          PayoffAmount:
            type: number
            format: double
            description: Payoff amount
          LastPaymentAmount:
            type: number
            format: double
            description: Last payment amount
          LastPaymentDate:
            $ref: '#/definitions/Timestamp'
            description: Last payment date
          MaturityDate:
            $ref: '#/definitions/Timestamp'
            description: Maturity date
          InterestPaidYearToDate:
            type: number
            format: double
            description: Interest paid year to date
          Transactions:
            type: array
            items:
              $ref: '#/definitions/LoanTransaction'

  LoanTransaction:
    type: object
    description: Extends and inherits all fields from Transaction.
    allOf:
      - $ref: '#/definitions/Transaction'
      - type: object
        required:
          - TransactionType
        properties:
          TransactionType:
            $ref: '#/definitions/LoanTransactionType'
            description: PAYMENT, FEE, ADJUSTMENT, INTEREST
          PaymentDetails:
            $ref: '#/definitions/PaymentDetails'
            description: Breakdown of payment details

  LocAccount:
    type: object
    description: Line of Credit Account. Extends and inherits all fields from Account.
    allOf:
      - $ref: '#/definitions/Account'
      - type: object
        required:
          - BalanceAsOf
          - CreditLine
          - AvailableCredit
          - NextPaymentAmount
          - NextPaymentDate
          - PrincipalBalance
          - CurrentBalance
        properties:
          BalanceAsOf:
            $ref: '#/definitions/Timestamp'
            description: As-of date of balances
          CreditLine:
            type: number
            format: double
            description: Credit limit
          AvailableCredit:
            type: number
            format: double
            description: Available credit
          NextPaymentAmount:
            type: number
            format: double
            description: Amount of next payment
          NextPaymentDate:
            $ref: '#/definitions/Timestamp'
            description: Due date of next payment
          PrincipalBalance:
            type: number
            format: double
            description: Principal balance
          CurrentBalance:
            type: number
            format: double
            description: Current balance LOC
          MinimumPaymentAmount:
            type: number
            format: double
            description: Minimum payment amount
          LastPaymentAmount:
            type: number
            format: double
            description: Last payment amount
          LastPaymentDate:
            $ref: '#/definitions/Timestamp'
            description: Last payment date
          PointsAccrued:
            type: number
            format: double
            description: Points accrued
          CurrentRewardsBalance:
            type: number
            format: double
            description: Current rewards balance
          PointsRedeemed:
            type: number
            format: double
            description: Points redeemed
          PurchasesApr:
            type: number
            format: double
            description: Purchases APR
          AdvancesApr:
            type: number
            format: double
            description: Advances APR
          CashAdvanceLimit:
            type: number
            format: double
            description: Cash advance limit
          AvailableCash:
            type: number
            format: double
            description: Available cash
          FinanceCharges:
            type: number
            format: double
            description: Finance charges
          Transactions:
            type: array
            items:
              $ref: '#/definitions/LocTransaction'
            description: list of LocTrasaction

  LocTransaction:
    type: object
    description: A line of credit transaction. Extends and inherits all fields from Transaction.
    allOf:
      - $ref: '#/definitions/Transaction'
      - type: object
        required:
          - TransactionType
        properties:
          TransactionType:
            $ref: '#/definitions/LocTransactionType'
            description: CHECK, WITHDRAWAL, PAYMENT, FEE, ADJUSTMENT, INTEREST
          CheckNumber:
            type: integer
            format: int64
            description: Check number
          PaymentDetails:
            $ref: '#/definitions/PaymentDetails'
            description: Breakdown of payment details

  MutualFundSecurity:
    type: object
    properties:
      MutualFundType:
        description: Mutual fund type. OPENEND, CLOSEEND, OTHER
        $ref: '#/definitions/MutualFundType'
      UnitsStreet:
        type: number
        format: double
        description: Units in the FI's street name, positive quantity
      UnitsUser:
        type: number
        format: double
        description: Units in user's name directly, positive quantity
      ReinvestDividends:
        type: boolean
        description: Reinvest dividends
      ReinvestCapitalGains:
        type: boolean
        description: Reinvest capital gains
      Yield:
        type: number
        format: double
        description: Current yield reported as portion of the fund's assets
      YieldAsOfDate:
        description: As-of date for yield value
        $ref: '#/definitions/Timestamp'

  OpenOrder:
    type: object
    required:
      - OrderId
      - Symbol
      - Units
      - OrderType
      - OrderDate
    properties:
      OrderId:
        description: Long term persistent identity of the order. Id for this order transaction.
        $ref: '#/definitions/Identifier'
      SecurityId:
        type: string
        description: Unique identifier of security
      SecurityIdType:
        description: Security identifier type
        $ref: '#/definitions/SecurityIdType'
      Symbol:
        type: string
        description: Market symbol
      Description:
        type: string
        description: Description
      Units:
        type: number
        format: double
        description: Number of units (shares or bonds etc).
      OrderType:
        description: Type of order BUY, SELL, BUYTOCOVER, BUYTOOPEN, SELLTOCOVER, SELLTOOPEN, SELLSHORT, SELLCLOSE
        $ref: '#/definitions/OrderType'
      OrderDate:
        description: Order date
        $ref: '#/definitions/Timestamp'
      UnitPrice:
        type: number
        format: double
        description: Unit price
      UnitType:
        description: Type of unit SHARES, CURRENCY
        $ref: '#/definitions/UnitType'
      OrderDuration:
        description: This order is good for DAY, GOODTILLCANCEL, IMMEDIATE
        $ref: '#/definitions/OrderDuration'
      SubAccount:
        description: CASH, MARGIN, SHORT, OTHER
        $ref: '#/definitions/SubAccountType'
      LimitPrice:
        type: number
        format: double
        description: Limit price
      StopPrice:
        type: number
        format: double
        description: StopPrice

  OptionSecurity:
    type: object
    properties:
      Secured:
        description: How the option is secured. NAKED, COVERED.
        $ref: '#/definitions/Secured'
      OptionType:
        description: "Option type: PUT = put, CALL = call"
        $ref: '#/definitions/OptionType'
      StrikePrice:
        type: number
        format: double
        description: Strike price / Unit price
      ExpireDate:
        $ref: '#/definitions/Timestamp'
        description: Expiration date of option
      SharesPerContract:
        type: number
        format: double
        description: Shares per contract

  OtherSecurity:
    type: object
    properties:
      TypeDescription:
        type: string
        description: Description of Other Security

  PaymentDetails:
    type: object
    properties:
      PrincipalAmount:
        type: number
        format: double
        description: The amount of payment applied to principal
      InterestAmount:
        type: number
        format: double
        description: The amount of payment applied to interest
      InsuranceAmount:
        type: number
        format: double
        description: The amount of payment applied to life/ health/accident insuranceon the loan
      EscrowAmount:
        type: number
        format: double
        description: The amount of payment applied to escrow
      PmiAmount:
        type: number
        format: double
        description: The amount of payment applied to PMI
      FeesAmount:
        type: number
        format: double
        description: The amount of payment applied to fees

  PlannedAvailability:
    type: object
    description: Single Account Details Request
    required:
      - Status
      - StatusShortDesc
      - StatusStartDate
      - StatusEndDate
    properties:
      Status: 
        type: string
      StatusShortDesc:
        type: string
      StatusStartDate:
        description: Start time; ISO 8601 date including zone indicator or combined date time including zone indicator
        $ref: '#/definitions/Timestamp' 
      StatusEndDate:
        description: End time; ISO 8601 date including zone indicator or combined date time including zone indicator
        $ref: '#/definitions/Timestamp' 

  Portion:
    type: object
    properties:
      AssetClass:
        description: DOMESTICBOND, INTLBOND, LARGESTOCK, SMALLSTOCK, INTLSTOCK, MONEYMARKET, OTHER
        $ref: '#/definitions/AssetClass' 
      Percent: 
        type: number
        format: double
        description: Percentage of asset class that falls under this asset
  
  SingleAccountDetailsRequest:
    type: object
    description: Single Account Details Request
    required:
      - AccountId
    properties:
      AccountId: 
        type: string
        description: Account identifier
      StartTime:
        description: Start time for use in retrieval; ISO 8601 date including zone indicator or combined date time including zone indicator
        $ref: '#/definitions/Timestamp'
      EndTime:
        description: End time for use in retrieval; ISO 8601 date including zone indicator or combined date time including zone indicator
        $ref: '#/definitions/Timestamp' 
      Page:
        type: integer
        format: int32
        description: Page number (applicable only if the server has indicated that the collection is paginated)

  SingleAccountDetailsRequestList:
    type: array
    description: array of SingleAccountDetailsRequest
    items:
      $ref: '#/definitions/SingleAccountDetailsRequest'

  Statement:
    type: object
    required:
      - AccountId
      - StatementId
      - StatementDate
    properties:
      AccountId:
        description: Corresponds to AccountId in Account entity
        $ref: '#/definitions/Identifier'
      StatementId:
        $ref: '#/definitions/Identifier'
        description: Long-term persistent identity of the statement
      StatementDate:
        $ref: '#/definitions/Timestamp'
        description: Date of the statement
      Description:
        type: string
        description: Description of statement

  Statements:
    type: object
    properties:
      Total:
        type: integer
        format: int32
        description: Total number of results in this collection across all pages
      TotalPages:
        type: integer
        format: int32
        description: Total number of pages
      Page:
        type: integer
        format: int32
        description: Current page number
      Statement:
        type: array
        items:
          $ref: '#/definitions/Statement'
        description: Statements

  StockSecurity:
    type: object
    properties:
      UnitsStreet:
        type: number
        format: double
        description: Units in the FI's street name, positive quantity
      UnitsUser:
        type: number
        format: double
        description: Units in user's name directly, positive quantity
      ReinvestDividends:
        type: boolean
        description: Reinvest dividends
      StockType:
        $ref: '#/definitions/StockType'
        description: COMMON, PREFERRED, CONVERTIBLE, OTHER
      Yield:
        type: number
        format: double
        description: Current yield
      YieldAsOfDate:
        description: Yield as-of date
        $ref: '#/definitions/Timestamp'

  SweepSecurity:
    type: object
    required:
      - CurrentBalance
      - BalanceAsOf
    properties:
      CurrentBalance:
        type: number
        format: double
        description: Balance of funds in account
      AvailableBalance:
        type: number
        format: double
        description: Balance of funds available for use
      BalanceAsOf:
        description: As-of date of balances
        $ref: '#/definitions/Timestamp'
      Checks:
        type: boolean
        description: Whether or not checks can be written on the account

  TaxLot:
    type: object
    properties:
      OriginalPurchaseDate:
        $ref: '#/definitions/Timestamp'
        description: Lot acquired date
      Quantity:
        type: number
        format: double
        description: Lot quantity
      PurchasedPrice:
        type: number
        format: double
        description: Original purchase price
      CostBasis:
        type: number
        format: double
        description: Total amount of money spent acquiring this lot including any fees or commission expenses incurred
      CurrentValue:
        type: number
        format: double
        description: Lot market value
      PositionType:
        description: LONG, SHORT
        $ref: '#/definitions/PositionType'

  TelephoneNumber:
    type: object
    description: Telephone number
    required:
      - Number
    properties:
      Type: 
        $ref: '#/definitions/TelephoneNumberType'
        description: Telephone type (HOME, BUSINESS, CELL, FAX)
      Country:
        description: Country calling codes defined by ITU-T recommendations E.123 and E.164
        $ref: '#/definitions/String3'
      Number:
        description: Telephone number
        $ref: '#/definitions/String64' 

  Transaction:
    type: object
    discriminator: TransactionObjectType
    required:
      - TransactionObjectType # for Polymorphism
      - AccountId
      - TransactionId
      - TransactionTimestamp
      - Description
      - Amount
    properties:
      TransactionObjectType:
        type: string
        description: for Polymorphism
      AccountId:
        description: Corresponds to AccountId in Account
        $ref: '#/definitions/Identifier'
      TransactionId:
        description: Long term persistent identity of the transaction (unique to account)
        $ref: '#/definitions/Identifier'
      ReferenceTransactionId:
        description: For reverse postings, the identity of the transaction being reversed. For the correction transaction, the identity of the reversing post. For credit card posting transactions, the identity of the authorization transaction.
        $ref: '#/definitions/Identifier'
      PostedTimestamp:
        description: The date and time that the transaction was posted to the account. If not provided then TransactionTimestamp can be used as PostedTimeStamp.
        $ref: '#/definitions/Timestamp'
      TransactionTimestamp:
        description: The date and time that the transaction was added to the server backend systems
        $ref: '#/definitions/Timestamp'
        type: string
      Description:
        description: The description of the transaction
        type: string
      Memo:
        description: Secondary transaction description
        $ref: '#/definitions/String255'
      DebitCreditMemo:
        description: DEBIT, CREDIT, MEMO
        $ref: '#/definitions/DebitCreditMemo'
      Category:
        description: Transaction category, preferably MCC or SIC.
        type: string
      SubCategory:
        description: Transaction category detail
        type: string
      Reference:
        description: A tracking reference identifier
        type: string
      Status:
        description: PENDING, MEMO, POSTED, AUTHORIZATION
        $ref: '#/definitions/TransactionStatus'
      Amount:
        description: The amount of money in the account currency
        type: number
        format: double
      ForeignAmount:
        description: The amount of money in the foreign currency
        type: number
        format: double
      ForeignCurrency:
        description: The ISO 4217 code of the foreign currency
        $ref: '#/definitions/Iso4217Code'
      ImageIds:
        description: Array of Image Identifiers (unique to Transaction) used to retrieve Images of check or transaction receipt
        type: array
        items:
          type: string
      LineItem:
        description: Breakdown of the transaction details
        type: array
        items:
          $ref: '#/definitions/LineItem'
      FiAttributes:
        description: Array of FI-specific attributes
        type: array
        items:
          $ref: '#/definitions/FiAttribute'

  Transactions:
    type: object
    properties:
      Total:
        type: integer
        format: int32
        description: Total number of results in this collection across all pages
      TotalPages:
        type: integer
        format: int32
        description: Total number of pages
      Page:
        type: integer
        format: int32
        description: Current page number
      DepositTransaction:
        description: An array of DepositTransaction
        type: array
        items:
          $ref: '#/definitions/DepositTransaction'
      InvestmentTransaction:
        description: An array of InvestmentTransaction
        type: array
        items:
          $ref: '#/definitions/InvestmentTransaction'
      LoanTransaction:
        description: An array of LoanTransaction
        type: array
        items:
          $ref: '#/definitions/LoanTransaction'
      LocTransaction:
        description: An array of LocTransaction
        type: array
        items:
          $ref: '#/definitions/LocTransaction'

  Transfer:
    type: object
    required:
      - TransferId
      - FromAccountId
      - ToAccountId
      - Amount
    properties:
      TransferId:
        description: Client generated, long-term persistent identity of the transfer action. This ID should be maintained and returned by institution.
        $ref: '#/definitions/Identifier'
      FromAccountId:
        description: Long-term persistent identity of the source account
        $ref: '#/definitions/Identifier'
      ToAccountId:
        description: Long-term persistent identity of the destination account
        $ref: '#/definitions/Identifier'
      Amount:
        type: number
        format: double
        description: Positive amount of money to be transferred
      Memo:
        $ref: '#/definitions/String255'
        description: User-entered reason for transfer
      PaymentDetails:
        $ref: '#/definitions/PaymentDetails'
        description: Payment details

  TransferStatus:
    type: object
    required:
      - TransferId
      - ReferenceId
      - Status
      - TransferDate
    properties:
      TransferId:
        description: Client generated, long-term persistent identity of the transfer action. This ID should be maintained and returned by institution.
        $ref: '#/definitions/Identifier'
      ReferenceId:
        description: Long term persistent identifier for transfer attempt
        $ref: '#/definitions/Identifier'
      Status:
        description: SUCCESS, NOFUNDS, PENDING, FAILURE
        $ref: '#/definitions/TransferStatusStatus'
      TransferDate:
        $ref: '#/definitions/Timestamp'
        description: Date of transfer attempt

  Vesting:
    type: object
    properties:
      VestingDate:
        description: Vesting date
        $ref: '#/definitions/Timestamp'
      Symbol:
        type: string
        description: Security symbol
      StrikePrice:
        type: number
        format: double
        description: Strike price
      VestingPercentage:
        type: number
        format: double
        description: Vesting Percentage
      OtherVestAmount:
        type: number
        format: double
        description: Other Vest Amount
      OtherVestPercentage:
        type: number
        format: double
        description: Other Vest Percentage
      VestedBalance:
        type: number
        format: double
        description: Vested Balance
      UnVestedBalance:
        type: number
        format: double
        description: UnVested Balance

  AccountResponse:
    type: object
    description: Response for an account. Only one of the properties will be returned.
    properties:
      DepositAccount:
        $ref: '#/definitions/DepositAccount'
        description: Deposit Account
      LoanAccount:
        $ref: '#/definitions/LoanAccount'
        description: Loan Account
      Locccount:
        $ref: '#/definitions/LocAccount'
        description: Line of Credit Account
      InvestmentAccount:
        $ref: '#/definitions/InvestmentAccount'
        description: Investment Account


More information about the Openid-specs-fapi mailing list