openapi: 3.0.0
servers:
- description: Production
  url: https://production.plaid.com
- description: Development
  url: https://development.plaid.com
- description: Sandbox
  url: https://sandbox.plaid.com
info:
  title: The Plaid API
  version: 2020-09-14_1.26.1
  description: >
    This is a generated connector for [Plaid API 2020-09-14 version](https://plaid.com/docs/api/) OpenAPI specification. 

    The Plaid REST API. Plaid provides a way for you to seamlessly link your bank accounts for over 3,000 different financial services.
  x-ballerina-init-description: > 
    The connector initialization requires setting the API credentials.

    Create a [Plaid account](https://plaid.com/) and obtain tokens by following [this guide](https://plaid.com/docs/api/#api-access).
  x-ballerina-display:
    label: Plaid 
    iconPath: "icon.png"
  contact:
    name: Plaid Developer Team
    url: https://plaid.com
  termsOfService: https://plaid.com/legal/
tags:
- name: plaid
  description: The Plaid API
security:
- clientId: []
  secret: []
  plaidVersion: []
paths:
  /item/application/list:
    post:
      tags:
      - plaid
      summary: List a user’s connected applications
      operationId: itemApplicationList
      description: List a user’s connected applications
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ItemApplicationListResponse'
        default:
          description: Error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ItemApplicationListRequest'
  /item/application/scopes/update:
    post:
      tags:
      - plaid
      summary: Update the scopes of access for a particular application
      operationId: itemApplicationScopesUpdate
      description: Enable consumers to update product access on selected accounts for an application.
      responses:
        "200":
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ItemApplicationScopesUpdateResponse'
        default:
          description: Error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ItemApplicationScopesUpdateRequest'
  /application/get:
    post:
      tags:
      - plaid
      summary: Retrieve information about a Plaid application
      operationId: applicationGet
      description: Allows financial institutions to retrieve information about Plaid clients for the purpose of building control-tower experiences
      responses:
        "200":
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationGetResponse'
        default:
          description: Error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationGetRequest'
  /item/get:
    post:
      tags:
      - plaid
      summary: Retrieve an Item
      externalDocs:
        url: /api/items/#itemget
      operationId: itemGet
      description: Returns information about the status of an Item.
      responses:
        "200":
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ItemGetResponse'
              examples:
                example-1:
                  value:
                    item:
                      available_products:
                      - balance
                      - auth
                      billed_products:
                      - identity
                      - transactions
                      error: null
                      institution_id: ins_109508
                      item_id: Ed6bjNrDLJfGvZWwnkQlfxwoNz54B5C97ejBr
                      update_type: background
                      webhook: https://plaid.com/example/hook
                      consent_expiration_time: null
                    status:
                      transactions:
                        last_successful_update: "2019-02-15T15:52:39Z"
                        last_failed_update: "2019-01-22T04:32:00Z"
                      last_webhook:
                        sent_at: "2019-02-15T15:53:00Z"
                        code_sent: DEFAULT_UPDATE
                    request_id: m8MDnv9okwxFNBV
        default:
          description: Error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ItemGetRequest'
  /auth/get:
    post:
      tags:
      - plaid
      summary: Retrieve auth data
      externalDocs:
        url: /api/products/#authget
      operationId: authGet
      description: |-
        The `/auth/get` endpoint returns the bank account and bank identification numbers (such as routing numbers, for US accounts) associated with an Item's checking and savings accounts, along with high-level account data and balances when available.

        Note: This request may take some time to complete if `auth` was not specified as an initial product when creating the Item. This is because Plaid must communicate directly with the institution to retrieve the data.

        Also note that `/auth/get` will not return data for any new accounts opened after the Item was created. To obtain data for new accounts, create a new Item.
      responses:
        "200":
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthGetResponse'
              examples:
                example-1:
                  value:
                    accounts:
                    - account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D
                      balances:
                        available: 100
                        current: 110
                        limit: null
                        iso_currency_code: USD
                        unofficial_currency_code: null
                      mask: "9606"
                      name: Plaid Checking
                      official_name: Plaid Gold Checking
                      subtype: checking
                      type: depository
                    numbers:
                      ach:
                      - account: "9900009606"
                        account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D
                        routing: "011401533"
                        wire_routing: "021000021"
                      eft:
                      - account: "111122223333"
                        account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D
                        institution: "021"
                        branch: "01140"
                      international:
                      - account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D
                        bic: NWBKGB21
                        iban: GB29NWBK60161331926819
                      bacs:
                      - account: "31926819"
                        account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D
                        sort_code: "601613"
                    item:
                      available_products:
                      - balance
                      - identity
                      - payment_initiation
                      - transactions
                      billed_products:
                      - assets
                      - auth
                      consent_expiration_time: null
                      error: null
                      institution_id: ins_117650
                      item_id: DWVAAPWq4RHGlEaNyGKRTAnPLaEmo8Cvq7na6
                      update_type: background
                      webhook: https://www.genericwebhookurl.com/webhook
                    request_id: m8MDnv9okwxFNBV
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Default error
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AuthGetRequest'
            examples: {}
  /transactions/get:
    post:
      tags:
      - plaid
      summary: Get transaction data
      externalDocs:
        url: /api/products/#transactionsget
      operationId: transactionsGet
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionsGetResponse'
              examples:
                example-1:
                  value:
                    accounts:
                    - account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp
                      balances:
                        available: 110
                        current: 110
                        iso_currency_code: USD
                        limit: null
                        unofficial_currency_code: null
                      mask: "0000"
                      name: Plaid Checking
                      official_name: Plaid Gold Standard 0% Interest Checking
                      subtype: checking
                      type: depository
                    transactions:
                    - account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp
                      amount: 2307.21
                      iso_currency_code: USD
                      unofficial_currency_code: null
                      category:
                      - Shops
                      - Computers and Electronics
                      category_id: "19013000"
                      check_number: null
                      date: "2017-01-29"
                      datetime: null
                      authorized_date: "2017-01-27"
                      authorized_datetime: null
                      location:
                        address: 300 Post St
                        city: San Francisco
                        region: CA
                        postal_code: "94108"
                        country: US
                        lat: 40.740352
                        lon: -74.001761
                        store_number: "1235"
                      name: Apple Store
                      merchant_name: Apple
                      payment_meta:
                        by_order_of: null
                        payee: null
                        payer: null
                        payment_method: null
                        payment_processor: null
                        ppd_id: null
                        reason: null
                        reference_number: null
                      payment_channel: in store
                      pending: false
                      pending_transaction_id: null
                      account_owner: null
                      transaction_id: lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDje
                      transaction_code: null
                      transaction_type: place
                    item:
                      available_products:
                      - balance
                      - identity
                      - investments
                      billed_products:
                      - assets
                      - auth
                      - liabilities
                      - transactions
                      consent_expiration_time: null
                      error: null
                      institution_id: ins_3
                      item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6
                      update_type: background
                      webhook: https://www.genericwebhookurl.com/webhook
                    total_transactions: 1
                    request_id: 45QSn
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Error response
      description: |-
        The `/transactions/get` endpoint allows developers to receive user-authorized transaction data for credit, depository, and some loan-type accounts (only those with account subtype `student`; coverage may be limited). For transaction history from investments accounts, use the [Investments endpoint](https://plaid.com/docs/api/products#investments) instead. Transaction data is standardized across financial institutions, and in many cases transactions are linked to a clean name, entity type, location, and category. Similarly, account data is standardized and returned with a clean name, number, balance, and other meta information where available.

        Transactions are returned in reverse-chronological order, and the sequence of transaction ordering is stable and will not shift.  Transactions are not immutable and can also be removed altogether by the institution; a removed transaction will no longer appear in `/transactions/get`.  For more details, see [Pending and posted transactions](https://plaid.com/docs/transactions/transactions-data/#pending-and-posted-transactions).

        Due to the potentially large number of transactions associated with an Item, results are paginated. Manipulate the `count` and `offset` parameters in conjunction with the `total_transactions` response body field to fetch all available transactions.

        Data returned by `/transactions/get` will be the data available for the Item as of the most recent successful check for new transactions. Plaid typically checks for new data multiple times a day, but these checks may occur less frequently, such as once a day, depending on the institution. An Item's `status.transactions.last_successful_update` field will show the timestamp of the most recent successful update. To force Plaid to check for new transactions, you can use the `/transactions/refresh` endpoint.

        Note that data may not be immediately available to `/transactions/get`. Plaid will begin to prepare transactions data upon Item link, if Link was initialized with `transactions`, or upon the first call to `/transactions/get`, if it wasn't. To be alerted when transaction data is ready to be fetched, listen for the [`INITIAL_UPDATE`](https://plaid.com/docs/api/webhooks#transactions-initial_update) and [`HISTORICAL_UPDATE`](https://plaid.com/docs/api/webhooks#transactions-historical_update) webhooks. If no transaction history is ready when `/transactions/get` is called, it will return a `PRODUCT_NOT_READY` error.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransactionsGetRequest'
            examples: {}
  /transactions/refresh:
    post:
      tags:
      - plaid
      summary: Refresh transaction data
      externalDocs:
        url: /api/products/#transactionsrefresh
      operationId: transactionsRefresh
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionsRefreshResponse'
              examples:
                example-1:
                  value:
                    request_id: 1vwmF5TBQwiqfwP
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Error response
      description: |-
        `/transactions/refresh` is an optional endpoint for users of the Transactions product. It initiates an on-demand extraction to fetch the newest transactions for an Item. This on-demand extraction takes place in addition to the periodic extractions that automatically occur multiple times a day for any Transactions-enabled Item. If changes to transactions are discovered after calling `/transactions/refresh`, Plaid will fire a webhook: [`TRANSACTIONS_REMOVED`](https://plaid.com/docs/api/webhooks#deleted-transactions-detected) will be fired if any removed transactions are detected, and [`DEFAULT_UPDATE`](https://plaid.com/docs/api/webhooks#transactions-default_update) will be fired if any new transactions are detected. New transactions can be fetched by calling `/transactions/get`.

        Access to `/transactions/refresh` in Production is specific to certain pricing plans. If you cannot access `/transactions/refresh` in Production, [contact Sales](https://www.plaid.com/contact) for assistance.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransactionsRefreshRequest'
  /institutions/get:
    post:
      tags:
      - plaid
      summary: Get details of all supported institutions
      externalDocs:
        url: /api/institutions/#institutionsget
      operationId: institutionsGet
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstitutionsGetResponse'
              examples:
                example-1:
                  value:
                    institutions:
                    - country_codes:
                      - US
                      institution_id: ins_1
                      name: Bank of America
                      oauth: false
                      products:
                      - assets
                      - auth
                      - balance
                      - transactions
                      - identity
                      - liabilities
                      routing_numbers:
                      - "011000138"
                      - "011200365"
                      - "011400495"
                      - "011500010"
                      - "011900254"
                      - "021000322"
                      - "021200339"
                      - "026009593"
                      - "031202084"
                      - "051000017"
                      - "052001633"
                      - "053000196"
                      - "053904483"
                      - "054001204"
                      - "061000052"
                      - "063100277"
                      - "064000020"
                      - "071214579"
                      - "072000805"
                      - "073000176"
                      - "081000032"
                      - "081904808"
                      - "082000073"
                      - "101100045"
                      - "103000017"
                      - "107000327"
                      - "111000025"
                      - "121000358"
                      - "122101706"
                      - "122400724"
                      - "123103716"
                      - "125000024"
                      - "323070380"
                    request_id: tbFyCEqkU774ZGG
                    total: 11384
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Error response
      description: |-
        Returns a JSON response containing details on all financial institutions currently supported by Plaid. Because Plaid supports thousands of institutions, results are paginated.

        If there is no overlap between an institution’s enabled products and a client’s enabled products, then the institution will be filtered out from the response. As a result, the number of institutions returned may not match the count specified in the call.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InstitutionsGetRequest'
  /institutions/search:
    post:
      tags:
      - plaid
      summary: Search institutions
      externalDocs:
        url: /api/institutions/#institutionssearch
      operationId: institutionsSearch
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstitutionsSearchResponse'
              examples:
                example-1:
                  value:
                    institutions:
                    - country_codes:
                      - US
                      institution_id: ins_118923
                      name: Red Platypus Bank - Red Platypus Bank
                      oauth: false
                      products:
                      - assets
                      - auth
                      - balance
                      - transactions
                      - identity
                      routing_numbers: []
                    request_id: Ggmk0enW4smO2Tp
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Error response
      description: Returns a JSON response containing details for institutions that match the query parameters, up to a maximum of ten institutions per query.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InstitutionsSearchRequest'
  /institutions/get_by_id:
    post:
      tags:
      - plaid
      summary: Get details of an institution
      externalDocs:
        url: /api/institutions/#institutionsget_by_id
      operationId: institutionsGetById
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstitutionsGetByIdResponse'
              examples:
                example-1:
                  value:
                    institution:
                      country_codes:
                      - US
                      institution_id: ins_109512
                      name: Houndstooth Bank
                      products:
                      - auth
                      - balance
                      - identity
                      - transactions
                      routing_numbers:
                      - "110000000"
                      oauth: false
                      status:
                        item_logins:
                          status: HEALTHY
                          last_status_change: "2019-02-15T15:53:00Z"
                          breakdown:
                            success: 0.9
                            error_plaid: 0.01
                            error_institution: 0.09
                        transactions_updates:
                          status: HEALTHY
                          last_status_change: "2019-02-12T08:22:00Z"
                          breakdown:
                            success: 0.95
                            error_plaid: 0.02
                            error_institution: 0.03
                            refresh_interval: NORMAL
                        auth:
                          status: HEALTHY
                          last_status_change: "2019-02-15T15:53:00Z"
                          breakdown:
                            success: 0.91
                            error_plaid: 0.01
                            error_institution: 0.08
                        balance:
                          status: HEALTHY
                          last_status_change: "2019-02-15T15:53:00Z"
                          breakdown:
                            success: 0.89
                            error_plaid: 0.02
                            error_institution: 0.09
                        identity:
                          status: DEGRADED
                          last_status_change: "2019-02-15T15:50:00Z"
                          breakdown:
                            success: 0.42
                            error_plaid: 0.08
                            error_institution: 0.5
                        investments:
                          status: HEALTHY
                          last_status_change: "2019-02-15T15:53:00Z"
                          breakdown:
                            success: 0.89
                            error_plaid: 0.02
                            error_institution: 0.09
                          liabilities:
                            status: HEALTHY
                            last_status_change: "2019-02-15T15:53:00Z"
                            breakdown:
                              success: 0.89
                              error_plaid: 0.02
                              error_institution: 0.09
                        investments_updates:
                          status: HEALTHY
                          last_status_change: "2019-02-12T08:22:00Z"
                          breakdown:
                            success: 0.95
                            error_plaid: 0.02
                            error_institution: 0.03
                            refresh_interval: NORMAL
                        liabilities_updates:
                          status: HEALTHY
                          last_status_change: "2019-02-12T08:22:00Z"
                          breakdown:
                            success: 0.95
                            error_plaid: 0.02
                            error_institution: 0.03
                            refresh_interval: NORMAL
                        primary_color: '#004966'
                        url: https://plaid.com
                        logo: null
                    request_id: m8MDnv9okwxFNBV
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Error response
      description: Returns a JSON response containing details on a specified financial institution currently supported by Plaid.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InstitutionsGetByIdRequest'
  /item/remove:
    post:
      tags:
      - plaid
      summary: Remove an Item
      externalDocs:
        url: /api/items/#itemremove
      operationId: itemRemove
      description: |-
        The `/item/remove`  endpoint allows you to remove an Item. Once removed, the `access_token`  associated with the Item is no longer valid and cannot be used to access any data that was associated with the Item.

        Note that in the Development environment, issuing an `/item/remove`  request will not decrement your live credential count. To increase your credential account in Development, contact Support.

        Also note that for certain OAuth-based institutions, an Item removed via `/item/remove` may still show as an active connection in the institution's OAuth permission manager.
      responses:
        "200":
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ItemRemoveResponse'
              examples:
                example-1:
                  value:
                    request_id: m8MDnv9okwxFNBV
        default:
          description: Error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ItemRemoveRequest'
  /accounts/get:
    post:
      tags:
      - plaid
      summary: Retrieve accounts
      externalDocs:
        url: /api/accounts/#accountsget
      operationId: accountsGet
      description: |-
        The `/accounts/get`  endpoint can be used to retrieve information for any linked Item. Note that some information is nullable. Plaid will only return active bank accounts, i.e. accounts that are not closed and are capable of carrying a balance.

        This endpoint retrieves cached information, rather than extracting fresh information from the institution. As a result, balances returned may not be up-to-date; for realtime balance information, use `/accounts/balance/get` instead.
      responses:
        "200":
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountsGetResponse'
              examples:
                example-1:
                  value:
                    accounts:
                    - account_id: blgvvBlXw3cq5GMPwqB6s6q4dLKB9WcVqGDGo
                      balances:
                        available: 100
                        current: 110
                        iso_currency_code: USD
                        limit: null
                        unofficial_currency_code: null
                      mask: "0000"
                      name: Plaid Checking
                      official_name: Plaid Gold Standard 0% Interest Checking
                      subtype: checking
                      type: depository
                    - account_id: 6PdjjRP6LmugpBy5NgQvUqpRXMWxzktg3rwrk
                      balances:
                        available: null
                        current: 23631.9805
                        iso_currency_code: USD
                        limit: null
                        unofficial_currency_code: null
                      mask: "6666"
                      name: Plaid 401k
                      official_name: null
                      subtype: 401k
                      type: investment
                    - account_id: XMBvvyMGQ1UoLbKByoMqH3nXMj84ALSdE5B58
                      balances:
                        available: null
                        current: 65262
                        iso_currency_code: USD
                        limit: null
                        unofficial_currency_code: null
                      mask: "7777"
                      name: Plaid Student Loan
                      official_name: null
                      subtype: student
                      type: loan
                    item:
                      available_products:
                      - balance
                      - identity
                      - payment_initiation
                      - transactions
                      billed_products:
                      - assets
                      - auth
                      consent_expiration_time: null
                      error: null
                      institution_id: ins_117650
                      item_id: DWVAAPWq4RHGlEaNyGKRTAnPLaEmo8Cvq7na6
                      update_type: background
                      webhook: https://www.genericwebhookurl.com/webhook
                    request_id: bkVE1BHWMAZ9Rnr
        default:
          description: Error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountsGetRequest'
            examples:
              example-1:
                value:
                  client_id: string
                  secret: string
                  access_token: string
                  options:
                    account_ids:
                    - string
  /categories/get:
    post:
      security: []
      tags:
      - plaid
      summary: Get Categories
      externalDocs:
        url: /api/products/#categoriesget
      operationId: categoriesGet
      description: Send a request to the `/categories/get`  endpoint to get detailed information on categories returned by Plaid. This endpoint does not require authentication.
      responses:
        "200":
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CategoriesGetResponse'
              examples:
                example-1:
                  value:
                    categories:
                    - category_id: "10000000"
                      group: special
                      hierarchy:
                      - Bank Fees
                    - category_id: "10001000"
                      group: special
                      hierarchy:
                      - Bank Fees
                      - Overdraft
                    - category_id: "12001000"
                      group: place
                      hierarchy:
                      - Community
                      - Animal Shelter
                    request_id: ixTBLZGvhD4NnmB
        default:
          description: Error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CategoriesGetRequest'
  /sandbox/processor_token/create:
    post:
      tags:
      - plaid
      summary: Create a test Item and processor token
      externalDocs:
        url: /api/sandbox/#sandboxprocessor_tokencreate
      operationId: sandboxProcessorTokenCreate
      description: Use the `/sandbox/processor_token/create` endpoint to create a valid `processor_token` for an arbitrary institution ID and test credentials. The created `processor_token` corresponds to a new Sandbox Item. You can then use this `processor_token` with the `/processor/` API endpoints in Sandbox. You can also use `/sandbox/processor_token/create` with the [`user_custom` test username](https://plaid.com/docs/sandbox/user-custom) to generate a test account with custom data.
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SandboxProcessorTokenCreateResponse'
              examples:
                example-1:
                  value:
                    processor_token: processor-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d
                    request_id: Aim3b
        default:
          description: Error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SandboxProcessorTokenCreateRequest'
  /sandbox/public_token/create:
    post:
      tags:
      - plaid
      summary: Create a test Item
      externalDocs:
        url: /api/sandbox/#sandboxpublic_tokencreate
      operationId: sandboxPublicTokenCreate
      description: Use the `/sandbox/public_token/create`  endpoint to create a valid `public_token`  for an arbitrary institution ID, initial products, and test credentials. The created `public_token` maps to a new Sandbox Item. You can then call `/item/public_token/exchange` to exchange the `public_token` for an `access_token` and perform all API actions. `/sandbox/public_token/create` can also be used with the [`user_custom` test username](https://plaid.com/docs/sandbox/user-custom) to generate a test account with custom data.
      responses:
        "200":
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SandboxPublicTokenCreateResponse'
              examples:
                example-1:
                  value:
                    public_token: public-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d
                    request_id: Aim3b
        default:
          description: Error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SandboxPublicTokenCreateRequest'
  /sandbox/item/fire_webhook:
    post:
      tags:
      - plaid
      summary: Fire a test webhook
      externalDocs:
        url: /api/sandbox/#sandboxitemfire_webhook
      operationId: sandboxItemFireWebhook
      description: The `/sandbox/item/fire_webhook` endpoint is used to test that code correctly handles webhooks. Calling this endpoint triggers a Transactions `DEFAULT_UPDATE` webhook to be fired for a given Sandbox Item. If the Item does not support Transactions, a `SANDBOX_PRODUCT_NOT_ENABLED` error will result.
      responses:
        "200":
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SandboxItemFireWebhookResponse'
              examples:
                example-1:
                  value:
                    webhook_fired: true
                    request_id: 1vwmF5TBQwiqfwP
        default:
          description: Error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SandboxItemFireWebhookRequest'
  /accounts/balance/get:
    post:
      tags:
      - plaid
      summary: Retrieve real-time balance data
      externalDocs:
        url: /api/products/#accountsbalanceget
      operationId: accountsBalanceGet
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountsGetResponse'
              examples:
                example-1:
                  value:
                    accounts:
                    - account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp
                      balances:
                        available: 100
                        current: 110
                        iso_currency_code: USD
                        limit: null
                        unofficial_currency_code: null
                      mask: "0000"
                      name: Plaid Checking
                      official_name: Plaid Gold Standard 0% Interest Checking
                      subtype: checking
                      type: depository
                    - account_id: dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK
                      balances:
                        available: null
                        current: 410
                        iso_currency_code: USD
                        limit: 2000
                        unofficial_currency_code: null
                      mask: "3333"
                      name: Plaid Credit Card
                      official_name: Plaid Diamond 12.5% APR Interest Credit Card
                      subtype: credit card
                      type: credit
                    - account_id: Pp1Vpkl9w8sajvK6oEEKtr7vZxBnGpf7LxxLE
                      balances:
                        available: null
                        current: 65262
                        iso_currency_code: USD
                        limit: null
                        unofficial_currency_code: null
                      mask: "7777"
                      name: Plaid Student Loan
                      official_name: null
                      subtype: student
                      type: loan
                    item:
                      available_products:
                      - balance
                      - identity
                      - investments
                      billed_products:
                      - assets
                      - auth
                      - liabilities
                      - transactions
                      consent_expiration_time: null
                      error: null
                      institution_id: ins_3
                      item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6
                      update_type: background
                      webhook: https://www.genericwebhookurl.com/webhook
                    request_id: qk5Bxes3gDfv4F2
      description: The `/accounts/balance/get` endpoint returns the real-time balance for each of an Item's accounts. While other endpoints may return a balance object, only `/accounts/balance/get` forces the available and current balance fields to be refreshed rather than cached. This endpoint can be used for existing Items that were added via any of Plaid’s other products. This endpoint can be used as long as Link has been initialized with any other product, `balance` itself is not a product that can be used to initialize Link.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountsBalanceGetRequest'
            examples:
              example-1:
                value:
                  access_token: string
                  secret: string
                  client_id: string
                  options:
                    account_ids:
                    - string
  /identity/get:
    post:
      tags:
      - plaid
      summary: Retrieve identity data
      externalDocs:
        url: /api/products/#identityget
      operationId: identityGet
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdentityGetResponse'
              examples:
                example-1:
                  value:
                    accounts:
                    - account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp
                      balances:
                        available: 100
                        current: 110
                        iso_currency_code: USD
                        limit: null
                        unofficial_currency_code: null
                      mask: "0000"
                      name: Plaid Checking
                      official_name: Plaid Gold Standard 0% Interest Checking
                      owners:
                      - addresses:
                        - data:
                            city: Malakoff
                            country: US
                            postal_code: "14236"
                            region: NY
                            street: 2992 Cameron Road
                          primary: true
                        - data:
                            city: San Matias
                            country: US
                            postal_code: 93405-2255
                            region: CA
                            street: 2493 Leisure Lane
                          primary: false
                        emails:
                        - data: accountholder0@example.com
                          primary: true
                          type: primary
                        - data: accountholder1@example.com
                          primary: false
                          type: secondary
                        - data: extraordinarily.long.email.username.123456@reallylonghostname.com
                          primary: false
                          type: other
                        names:
                        - Alberta Bobbeth Charleson
                        phone_numbers:
                        - data: "1112223333"
                          primary: false
                          type: home
                        - data: "1112224444"
                          primary: false
                          type: work
                        - data: "1112225555"
                          primary: false
                          type: mobile
                      subtype: checking
                      type: depository
                    - account_id: 3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr
                      balances:
                        available: 200
                        current: 210
                        iso_currency_code: USD
                        limit: null
                        unofficial_currency_code: null
                      mask: "1111"
                      name: Plaid Saving
                      official_name: Plaid Silver Standard 0.1% Interest Saving
                      owners:
                      - addresses:
                        - data:
                            city: Malakoff
                            country: US
                            postal_code: "14236"
                            region: NY
                            street: 2992 Cameron Road
                          primary: true
                        - data:
                            city: San Matias
                            country: US
                            postal_code: 93405-2255
                            region: CA
                            street: 2493 Leisure Lane
                          primary: false
                        emails:
                        - data: accountholder0@example.com
                          primary: true
                          type: primary
                        - data: accountholder1@example.com
                          primary: false
                          type: secondary
                        - data: extraordinarily.long.email.username.123456@reallylonghostname.com
                          primary: false
                          type: other
                        names:
                        - Alberta Bobbeth Charleson
                        phone_numbers:
                        - data: "1112223333"
                          primary: false
                          type: home
                        - data: "1112224444"
                          primary: false
                          type: work
                        - data: "1112225555"
                          primary: false
                          type: mobile
                      subtype: savings
                      type: depository
                    item:
                      available_products:
                      - balance
                      - investments
                      billed_products:
                      - assets
                      - auth
                      - identity
                      - liabilities
                      - transactions
                      consent_expiration_time: null
                      error: null
                      institution_id: ins_3
                      item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6
                      update_type: background
                      webhook: https://www.genericwebhookurl.com/webhook
                    request_id: 3nARps6TOYtbACO
      description: |-
        The `/identity/get` endpoint allows you to retrieve various account holder information on file with the financial institution, including names, emails, phone numbers, and addresses. Only name data is guaranteed to be returned; other fields will be empty arrays if not provided by the institution.

        Note: This request may take some time to complete if identity was not specified as an initial product when creating the Item. This is because Plaid must communicate directly with the institution to retrieve the data.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IdentityGetRequest'
  /processor/auth/get:
    post:
      tags:
      - plaid
      summary: Retrieve Auth data
      externalDocs:
        url: /api/processors/#processorauthget
      operationId: processorAuthGet
      responses:
        "200":
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProcessorAuthGetResponse'
              examples:
                example-1:
                  value:
                    account:
                      account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D
                      balances:
                        available: 100
                        current: 110
                        iso_currency_code: USD
                        limit: null
                        unofficial_currency_code: null
                      mask: "0000"
                      name: Plaid Checking
                      official_name: Plaid Gold Checking
                      subtype: checking
                      type: depository
                    numbers:
                      ach:
                        account: "9900009606"
                        account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D
                        routing: "011401533"
                        wire_routing: "021000021"
                      eft:
                        account: "111122223333"
                        account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D
                        institution: "021"
                        branch: "01140"
                      international:
                        account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D
                        bic: NWBKGB21
                        iban: GB29NWBK60161331926819
                      bacs:
                        account: "31926819"
                        account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D
                        sort_code: "601613"
                    request_id: 1zlMf
      description: The `/processor/auth/get` endpoint returns the bank account and bank identification number (such as the routing number, for US accounts), for a checking or savings account that's associated with a given `processor_token`. The endpoint also returns high-level account data and balances when available.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProcessorAuthGetRequest'
  /processor/bank_transfer/create:
    post:
      tags:
      - plaid
      summary: Create a bank transfer as a processor
      externalDocs:
        url: /api/processors/#bank_transfercreate
      operationId: processorBankTransferCreate
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProcessorBankTransferCreateResponse'
              examples:
                example-1:
                  value:
                    bank_transfer:
                      account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B
                      ach_class: ppd
                      amount: "12.34"
                      cancellable: true
                      created: "2020-08-06T17:27:15Z"
                      custom_tag: my tag
                      description: Testing2
                      direction: outbound
                      failure_reason: null
                      id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9
                      iso_currency_code: USD
                      metadata:
                        key1: value1
                        key2: value2
                      network: ach
                      origination_account_id: 11111111-1111-1111-1111-111111111111
                      status: pending
                      type: credit
                      user:
                        email_address: plaid@plaid.com
                        legal_name: John Smith
                        routing_number: "111111111"
                    request_id: saKrIBuEB9qJZno
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      description: Use the `/processor/bank_transfer/create` endpoint to initiate a new bank transfer as a processor
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProcessorBankTransferCreateRequest'
  /processor/identity/get:
    post:
      tags:
      - plaid
      summary: Retrieve Identity data
      externalDocs:
        url: /api/processors/#processoridentityget
      operationId: processorIdentityGet
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProcessorIdentityGetResponse'
              examples:
                example-1:
                  value:
                    account:
                      account_id: XMGPJy4q1gsQoKd5z9R3tK8kJ9EWL8SdkgKMq
                      balances:
                        available: 100
                        current: 110
                        iso_currency_code: USD
                        limit: null
                        unofficial_currency_code: null
                      mask: "0000"
                      name: Plaid Checking
                      official_name: Plaid Gold Standard 0% Interest Checking
                      owners:
                      - addresses:
                        - data:
                            city: Malakoff
                            country: US
                            postal_code: "14236"
                            region: NY
                            street: 2992 Cameron Road
                          primary: true
                        - data:
                            city: San Matias
                            country: US
                            postal_code: 93405-2255
                            region: CA
                            street: 2493 Leisure Lane
                          primary: false
                        emails:
                        - data: accountholder0@example.com
                          primary: true
                          type: primary
                        - data: accountholder1@example.com
                          primary: false
                          type: secondary
                        - data: extraordinarily.long.email.username.123456@reallylonghostname.com
                          primary: false
                          type: other
                        names:
                        - Alberta Bobbeth Charleson
                        phone_numbers:
                        - data: "1112223333"
                          primary: false
                          type: home
                        - data: "1112224444"
                          primary: false
                          type: work
                        - data: "1112225555"
                          primary: false
                          type: mobile1
                      subtype: checking
                      type: depository
                    request_id: eOPkBl6t33veI2J
      description: The `/processor/identity/get` endpoint allows you to retrieve various account holder information on file with the financial institution, including names, emails, phone numbers, and addresses.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProcessorIdentityGetRequest'
  /processor/balance/get:
    post:
      tags:
      - plaid
      summary: Retrieve Balance data
      externalDocs:
        url: /api/processors/#processorbalanceget
      operationId: processorBalanceGet
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProcessorBalanceGetResponse'
              examples:
                example-1:
                  value:
                    account:
                      account_id: QKKzevvp33HxPWpoqn6rI13BxW4awNSjnw4xv
                      balances:
                        available: 100
                        current: 110
                        limit: null
                        iso_currency_code: USD
                        unofficial_currency_code: null
                      mask: "0000"
                      name: Plaid Checking
                      official_name: Plaid Gold Checking
                      subtype: checking
                      type: depository
                    request_id: 1zlMf
      description: 'The `/processor/balance/get` endpoint returns the real-time balance for each of an Item''s accounts. While other endpoints may return a balance object, only `/processor/balance/get` forces the available and current balance fields to be refreshed rather than cached. '
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProcessorBalanceGetRequest'
        description: |-
          The real-time balance for the account associated with a given `processor_token`.

          The current balance is the total amount of funds in the account. The available balance is the current balance less any outstanding holds or debits that have not yet posted to the account.

          Note that not all institutions calculate the available balance. In the event that available balance is unavailable from the institution, Plaid will return an available balance value of `null`.
  /item/webhook/update:
    post:
      tags:
      - plaid
      summary: Update Webhook URL
      externalDocs:
        url: /api/items/#itemwebhookupdate
      operationId: itemWebhookUpdate
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ItemWebhookUpdateResponse'
              examples:
                example-1:
                  value:
                    item:
                      available_products:
                      - balance
                      - identity
                      - payment_initiation
                      - transactions
                      billed_products:
                      - assets
                      - auth
                      consent_expiration_time: null
                      error: null
                      institution_id: ins_117650
                      item_id: DWVAAPWq4RHGlEaNyGKRTAnPLaEmo8Cvq7na6
                      update_type: background
                      webhook: https://www.genericwebhookurl.com/webhook
                    request_id: vYK11LNTfRoAMbj
      description: The POST `/item/webhook/update` allows you to update the webhook URL associated with an Item. This request triggers a [`WEBHOOK_UPDATE_ACKNOWLEDGED`](https://plaid.com/docs/api/webhooks/#item-webhook-url-updated) webhook to the newly specified webhook URL.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ItemWebhookUpdateRequest'
  /item/access_token/invalidate:
    post:
      tags:
      - plaid
      summary: Invalidate access_token
      externalDocs:
        url: /api/tokens/#itemaccess_tokeninvalidate
      operationId: itemAccessTokenInvalidate
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ItemAccessTokenInvalidateResponse'
              examples:
                example-1:
                  value:
                    new_access_token: access-sandbox-8ab976e6-64bc-4b38-98f7-731e7a349970
                    request_id: m8MDnv9okwxFNBV
      description: |
        By default, the `access_token` associated with an Item does not expire and should be stored in a persistent, secure manner.

        You can use the `/item/access_token/invalidate` endpoint to rotate the `access_token` associated with an Item. The endpoint returns a new `access_token` and immediately invalidates the previous `access_token`.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ItemAccessTokenInvalidateRequest'
  /webhook_verification_key/get:
    post:
      tags:
      - plaid
      summary: Get webhook verification key
      externalDocs:
        url: /api/webhooks/webhook-verification/#webhook_verification_keyget
      operationId: webhookVerificationKeyGet
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookVerificationKeyGetResponse'
              examples:
                example-1:
                  value:
                    key:
                      alg: ES256
                      created_at: 1560466150
                      crv: P-256
                      expired_at: null
                      kid: bfbd5111-8e33-4643-8ced-b2e642a72f3c
                      kty: EC
                      use: sig
                      x: hKXLGIjWvCBv-cP5euCTxl8g9GLG9zHo_3pO5NN1DwQ
                      "y": shhexqPB7YffGn6fR6h2UhTSuCtPmfzQJ6ENVIoO4Ys
                    request_id: RZ6Omi1bzzwDaLo
      description: |-
        Plaid signs all outgoing webhooks and provides JSON Web Tokens (JWTs) so that you can verify the authenticity of any incoming webhooks to your application. A message signature is included in the `Plaid-Verification` header.

        The `/webhook_verification_key/get` endpoint provides a JSON Web Key (JWK) that can be used to verify a JWT.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookVerificationKeyGetRequest'
  /liabilities/get:
    post:
      tags:
      - plaid
      summary: Retrieve Liabilities data
      externalDocs:
        url: /api/products/#liabilitiesget
      operationId: liabilitiesGet
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LiabilitiesGetResponse'
              examples:
                example-1:
                  value:
                    accounts:
                    - account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp
                      balances:
                        available: 100
                        current: 110
                        iso_currency_code: USD
                        limit: null
                        unofficial_currency_code: null
                      mask: "0000"
                      name: Plaid Checking
                      official_name: Plaid Gold Standard 0% Interest Checking
                      subtype: checking
                      type: depository
                    - account_id: dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK
                      balances:
                        available: null
                        current: 410
                        iso_currency_code: USD
                        limit: 2000
                        unofficial_currency_code: null
                      mask: "3333"
                      name: Plaid Credit Card
                      official_name: Plaid Diamond 12.5% APR Interest Credit Card
                      subtype: credit card
                      type: credit
                    - account_id: Pp1Vpkl9w8sajvK6oEEKtr7vZxBnGpf7LxxLE
                      balances:
                        available: null
                        current: 65262
                        iso_currency_code: USD
                        limit: null
                        unofficial_currency_code: null
                      mask: "7777"
                      name: Plaid Student Loan
                      official_name: null
                      subtype: student
                      type: loan
                    - account_id: BxBXxLj1m4HMXBm9WZJyUg9XLd4rKEhw8Pb1J
                      balances:
                        available: null
                        current: 56302.06
                        iso_currency_code: USD
                        limit: null
                        unofficial_currency_code: null
                      mask: "8888"
                      name: Plaid Mortgage
                      official_name: null
                      subtype: mortgage
                      type: loan
                    item:
                      available_products:
                      - balance
                      - investments
                      billed_products:
                      - assets
                      - auth
                      - identity
                      - liabilities
                      - transactions
                      consent_expiration_time: null
                      error: null
                      institution_id: ins_3
                      item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6
                      update_type: background
                      webhook: https://www.genericwebhookurl.com/webhook
                    liabilities:
                      credit:
                      - account_id: dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK
                        aprs:
                        - apr_percentage: 15.24
                          apr_type: balance_transfer_apr
                          balance_subject_to_apr: 1562.32
                          interest_charge_amount: 130.22
                        - apr_percentage: 27.95
                          apr_type: cash_apr
                          balance_subject_to_apr: 56.22
                          interest_charge_amount: 14.81
                        - apr_percentage: 12.5
                          apr_type: purchase_apr
                          balance_subject_to_apr: 157.01
                          interest_charge_amount: 25.66
                        - apr_percentage: 0
                          apr_type: special
                          balance_subject_to_apr: 1000
                          interest_charge_amount: 0
                        is_overdue: false
                        last_payment_amount: 168.25
                        last_payment_date: "2019-05-22"
                        last_statement_issue_date: "2019-05-28"
                        minimum_payment_amount: 20
                        next_payment_due_date: "2020-05-28"
                      mortgage:
                      - account_id: BxBXxLj1m4HMXBm9WZJyUg9XLd4rKEhw8Pb1J
                        account_number: "3120194154"
                        current_late_fee: 25
                        escrow_balance: 3141.54
                        has_pmi: true
                        has_prepayment_penalty: true
                        interest_rate:
                          percentage: 3.99
                          type: fixed
                        last_payment_amount: 3141.54
                        last_payment_date: "2019-08-01"
                        loan_term: 30 year
                        loan_type_description: conventional
                        maturity_date: "2045-07-31"
                        next_monthly_payment: 3141.54
                        next_payment_due_date: "2019-11-15"
                        origination_date: "2015-08-01"
                        origination_principal_amount: 425000
                        past_due_amount: 2304
                        property_address:
                          city: Malakoff
                          country: US
                          postal_code: "14236"
                          region: NY
                          street: 2992 Cameron Road
                        ytd_interest_paid: 12300.4
                        ytd_principal_paid: 12340.5
                      student:
                      - account_id: Pp1Vpkl9w8sajvK6oEEKtr7vZxBnGpf7LxxLE
                        account_number: "4277075694"
                        disbursement_dates:
                        - "2002-08-28"
                        expected_payoff_date: "2032-07-28"
                        guarantor: DEPT OF ED
                        interest_rate_percentage: 5.25
                        is_overdue: false
                        last_payment_amount: 138.05
                        last_payment_date: "2019-04-22"
                        last_statement_issue_date: "2019-04-28"
                        loan_name: Consolidation
                        loan_status:
                          end_date: "2032-07-28"
                          type: repayment
                        minimum_payment_amount: 25
                        next_payment_due_date: "2019-05-28"
                        origination_date: "2002-08-28"
                        origination_principal_amount: 25000
                        outstanding_interest_amount: 6227.36
                        payment_reference_number: "4277075694"
                        pslf_status:
                          estimated_eligibility_date: "2021-01-01"
                          payments_made: 200
                          payments_remaining: 160
                        repayment_plan:
                          description: Standard Repayment
                          type: standard
                        sequence_number: "1"
                        servicer_address:
                          city: San Matias
                          country: US
                          postal_code: "99415"
                          region: CA
                          street: 123 Relaxation Road
                        ytd_interest_paid: 280.55
                        ytd_principal_paid: 271.65
                    request_id: dTnnm60WgKGLnKL
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LiabilitiesGetRequest'
      description: |-
        The `/liabilities/get` endpoint returns various details about an Item with loan or credit accounts. Liabilities data is available primarily for US financial institutions, with some limited coverage of Canadian institutions. Currently supported account types are account_type `credit` with account subtype `credit card` or `paypal`, and account_type `loan` with account subtype `student` or `mortgage`. To limit accounts listed in Link to types and subtypes supported by Liabilities, you can use the `account_filters` parameter when [creating a Link token](https://plaid.com/docs/api/tokens/#linktokencreate).

        The types of information returned by Liabilities can include balances and due dates, loan terms, and account details such as original loan amount and guarantor. Data is refreshed approximately once per day; the latest data can be retrieved by calling `/liabilities/get`.

        Note: This request may take some time to complete if `liabilities` was not specified as an initial product when creating the Item. This is because Plaid must communicate directly with the institution to retrieve the additional data.
  /payment_initiation/recipient/create:
    post:
      tags:
      - plaid
      summary: Create payment recipient
      externalDocs:
        url: /api/products/#payment_initiationrecipientcreate
      operationId: paymentInitiationRecipientCreate
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentInitiationRecipientCreateResponse'
              examples:
                example-1:
                  value:
                    recipient_id: recipient-id-sandbox-9b6b4679-914b-445b-9450-efbdb80296f6
                    request_id: 4zlKapIkTm8p5KM
      description: |
        Create a payment recipient for payment initiation.  The recipient must be in Europe, within a country that is a member of the Single Euro Payment Area (SEPA).  For a standing order (recurring) payment, the recipient must be in the UK.

        The endpoint is idempotent: if a developer has already made a request with the same payment details, Plaid will return the same `recipient_id`.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentInitiationRecipientCreateRequest'
  /payment_initiation/recipient/get:
    post:
      tags:
      - plaid
      summary: Get payment recipient
      externalDocs:
        url: /api/products/#payment_initiationrecipientget
      operationId: paymentInitiationRecipientGet
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentInitiationRecipientGetResponse'
              examples:
                example-1:
                  value:
                    recipient_id: recipient-id-sandbox-9b6b4679-914b-445b-9450-efbdb80296f6
                    name: Wonder Wallet
                    iban: GB29NWBK60161331926819
                    address:
                      street:
                      - 96 Guild Street
                      - 9th Floor
                      city: London
                      postal_code: SE14 8JW
                      country: GB
                    request_id: 4zlKapIkTm8p5KM
      description: Get details about a payment recipient you have previously created.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentInitiationRecipientGetRequest'
  /payment_initiation/recipient/list:
    post:
      tags:
      - plaid
      summary: List payment recipients
      externalDocs:
        url: /api/products/#payment_initiationrecipientlist
      operationId: paymentInitiationRecipientList
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentInitiationRecipientListResponse'
              examples:
                example-1:
                  value:
                    recipients:
                    - recipient_id: recipient-id-sandbox-9b6b4679-914b-445b-9450-efbdb80296f6
                      name: Wonder Wallet
                      iban: GB29NWBK60161331926819
                      address:
                        street:
                        - 96 Guild Street
                        - 9th Floor
                        city: London
                        postal_code: SE14 8JW
                        country: GB
                    request_id: 4zlKapIkTm8p5KM
      description: The `/payment_initiation/recipient/list` endpoint list the payment recipients that you have previously created.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentInitiationRecipientListRequest'
  /payment_initiation/payment/create:
    post:
      tags:
      - plaid
      summary: Create a payment
      externalDocs:
        url: /api/products/#payment_initiationpaymentcreate
      operationId: paymentInitiationPaymentCreate
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentInitiationPaymentCreateResponse'
              examples:
                example-1:
                  value:
                    payment_id: payment-id-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3
                    status: PAYMENT_STATUS_INPUT_NEEDED
                    request_id: 4ciYVmesrySiUAB
      description: |-
        After creating a payment recipient, you can use the `/payment_initiation/payment/create` endpoint to create a payment to that recipient.  Payments can be one-time or standing order (recurring) and can be denominated in either EUR or GBP.  If making domestic GBP-denominated payments, your recipient must have been created with BACS numbers. In general, EUR-denominated payments will be sent via SEPA Credit Transfer and GBP-denominated payments will be sent via the Faster Payments network, but the payment network used will be determined by the institution. Payments sent via Faster Payments will typically arrive immediately, while payments sent via SEPA Credit Transfer will typically arrive in one business day.

        Standing orders (recurring payments) must be denominated in GBP and can only be sent to recipients in the UK. Once created, standing order payments cannot be modified or canceled via the API. An end user can cancel or modify a standing order directly on their banking application or website, or by contacting the bank. Standing orders will follow the payment rules of the underlying rails (Faster Payments in UK). Payments can be sent Monday to Friday, excluding bank holidays. If the pre-arranged date falls on a weekend or bank holiday, the payment is made on the next working day. It is not possible to guarantee the exact time the payment will reach the recipient’s account, although at least 90% of standing order payments are sent by 6am.

        In the Development environment, payments must be below 5 GBP / EUR. For details on any payment limits in Production, contact your Plaid Account Manager.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentInitiationPaymentCreateRequest'
  /payment_initiation/payment/token/create:
    post:
      tags:
      - plaid
      deprecated: true
      summary: Create payment token
      externalDocs:
        url: /link/maintain-legacy-integration/#creating-a-payment-token
      operationId: createPaymentToken
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentInitiationPaymentTokenCreateResponse'
              examples:
                example-1:
                  value:
                    payment_token: payment-token-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3
                    payment_token_expiration_time: "2020-01-01T00:00:00Z"
                    request_id: 4ciYVmesrySiUAB
      description: |-
        The `/payment_initiation/payment/token/create` endpoint has been deprecated. New Plaid customers will be unable to use this endpoint, and existing customers are encouraged to migrate to the newer, `link_token`-based flow. The recommended flow is to provide the `payment_id` to `/link/token/create`, which returns a `link_token` used to initialize Link.

        The `/payment_initiation/payment/token/create` is used to create a `payment_token`, which can then be used in Link initialization to enter a payment initiation flow. You can only use a `payment_token` once. If this attempt fails, the end user aborts the flow, or the token expires, you will need to create a new payment token. Creating a new payment token does not require end user input.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentInitiationPaymentTokenCreateRequest'
  /sandbox/item/reset_login:
    post:
      tags:
      - plaid
      summary: Force a Sandbox Item into an error state
      externalDocs:
        url: /api/sandbox/#sandboxitemreset_login
      operationId: sandboxItemResetLogin
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SandboxItemResetLoginResponse'
              examples:
                example-1:
                  value:
                    reset_login: true
                    request_id: m8MDnv9okwxFNBV
      description: |-
        `/sandbox/item/reset_login/` forces an Item into an `ITEM_LOGIN_REQUIRED` state in order to simulate an Item whose login is no longer valid. This makes it easy to test Link's [update mode](https://plaid.com/docs/link/update-mode) flow in the Sandbox environment.  After calling `/sandbox/item/reset_login`, You can then use Plaid Link update mode to restore the Item to a good state. An `ITEM_LOGIN_REQUIRED` webhook will also be fired after a call to this endpoint, if one is associated with the Item.


        In the Sandbox, Items will transition to an `ITEM_LOGIN_REQUIRED` error state automatically after 30 days, even if this endpoint is not called.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SandboxItemResetLoginRequest'
  /sandbox/item/set_verification_status:
    post:
      tags:
      - plaid
      summary: Set verification status for Sandbox account
      externalDocs:
        url: /api/sandbox/#sandboxitemset_verification_status
      operationId: sandboxItemSetVerificationStatus
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SandboxItemSetVerificationStatusResponse'
              examples:
                example-1:
                  value:
                    request_id: 1vwmF5TBQwiqfwP
      description: |-
        The `/sandbox/item/set_verification_status` endpoint can be used to change the verification status of an Item in in the Sandbox in order to simulate the Automated Micro-deposit flow.

        Note that not all Plaid developer accounts are enabled for micro-deposit based verification by default. Your account must be enabled for this feature in order to test it in Sandbox. To enable this features or check your status, contact your account manager or [submit a product access Support ticket](https://dashboard.plaid.com/support/new/product-and-development/product-troubleshooting/request-product-access).

        For more information on testing Automated Micro-deposits in Sandbox, see [Auth full coverage testing](https://plaid.com/docs/auth/coverage/testing#).
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SandboxItemSetVerificationStatusRequest'
  /item/public_token/exchange:
    post:
      tags:
      - plaid
      summary: Exchange public token for an access token
      externalDocs:
        url: /api/tokens/#itempublic_tokenexchange
      operationId: itemPublicTokenExchange
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ItemPublicTokenExchangeResponse'
              examples:
                example-1:
                  value:
                    access_token: access-sandbox-de3ce8ef-33f8-452c-a685-8671031fc0f6
                    item_id: M5eVJqLnv3tbzdngLDp9FL5OlDNxlNhlE55op
                    request_id: Aim3b
      description: |-
        Exchange a Link `public_token` for an API `access_token`. Link hands off the `public_token` client-side via the `onSuccess` callback once a user has successfully created an Item. The `public_token` is ephemeral and expires after 30 minutes.

        The response also includes an `item_id` that should be stored with the `access_token`. The `item_id` is used to identify an Item in a webhook. The `item_id` can also be retrieved by making an `/item/get` request.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ItemPublicTokenExchangeRequest'
  /item/public_token/create:
    post:
      tags:
      - plaid
      summary: Create public token
      externalDocs:
        url: /api/tokens/#itempublic_tokencreate
      operationId: itemCreatePublicToken
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ItemPublicTokenCreateResponse'
              examples:
                example-1:
                  value:
                    public_token: public-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d
                    request_id: Aim3b
      description: |-
        Note: As of July 2020, the `/item/public_token/create` endpoint is deprecated. Instead, use `/link/token/create` with an `access_token` to create a Link token for use with [update mode](https://plaid.com/docs/link/update-mode).

        If you need your user to take action to restore or resolve an error associated with an Item, generate a public token with the `/item/public_token/create` endpoint and then initialize Link with that `public_token`.

        A `public_token` is one-time use and expires after 30 minutes. You use a `public_token` to initialize Link in [update mode](https://plaid.com/docs/link/update-mode) for a particular Item. You can generate a `public_token` for an Item even if you did not use Link to create the Item originally.

        The `/item/public_token/create` endpoint is **not** used to create your initial `public_token`. If you have not already received an `access_token` for a specific Item, use Link to obtain your `public_token` instead. See the [Quickstart](https://plaid.com/docs/quickstart) for more information.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ItemPublicTokenCreateRequest'
  /payment_initiation/payment/get:
    post:
      tags:
      - plaid
      summary: Get payment details
      externalDocs:
        url: /api/products/#payment_initiationpaymentget
      operationId: paymentInitiationPaymentGet
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentInitiationPaymentGetResponse'
              examples:
                example-1:
                  value:
                    payment_id: payment-id-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3
                    payment_token: payment-token-sandbox-c6a26505-42b4-46fe-8ecf-bf9edcafbebb
                    reference: Account Funding 99744
                    amount:
                      currency: GBP
                      value: 100
                    status: PAYMENT_STATUS_INPUT_NEEDED
                    last_status_update: "2019-11-06T21:10:52Z"
                    payment_expiration_time: "2019-11-06T21:25:52Z"
                    recipient_id: recipient-id-sandbox-9b6b4679-914b-445b-9450-efbdb80296f6
                    bacs: null
                    iban: null
                    request_id: aEAQmewMzlVa1k6
      description: The `/payment_initiation/payment/get` endpoint can be used to check the status of a payment, as well as to receive basic information such as recipient and payment amount. In the case of standing orders, the `/payment_initiation/payment/get` endpoint will provide information about the status of the overall standing order itself; the API cannot be used to retrieve payment status for individual payments within a standing order.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentInitiationPaymentGetRequest'
  /payment_initiation/payment/list:
    post:
      tags:
      - plaid
      summary: List payments
      externalDocs:
        url: /api/products/#payment_initiationpaymentlist
      operationId: paymentInitiationPaymentList
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentInitiationPaymentListResponse'
              examples:
                example-1:
                  value:
                    payments:
                    - payment_id: payment-id-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3
                      reference: Account Funding 99744
                      amount:
                        currency: GBP
                        value: 100
                      status: PAYMENT_STATUS_INPUT_NEEDED
                      last_status_update: "2019-11-06T21:10:52Z"
                      recipient_id: recipient-id-sandbox-9b6b4679-914b-445b-9450-efbdb80296f6
                      bacs: null
                      iban: null
                    next_cursor: "2020-01-01T00:00:00Z"
                    request_id: aEAQmewMzlVa1k6
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentInitiationPaymentListRequest'
      description: The `/payment_initiation/payment/list` endpoint can be used to retrieve all created payments. By default, the 10 most recent payments are returned. You can request more payments and paginate through the results using the optional `count` and `cursor` parameters.
  /asset_report/create:
    post:
      tags:
      - plaid
      summary: Create an Asset Report
      externalDocs:
        url: /api/products/#asset_reportcreate
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetReportCreateResponse'
              examples:
                example-1:
                  value:
                    asset_report_token: assets-sandbox-6f12f5bb-22dd-4855-b918-f47ec439198a
                    asset_report_id: 1f414183-220c-44f5-b0c8-bc0e6d4053bb
                    request_id: Iam3b
      operationId: assetReportCreate
      description: |-
        The `/asset_report/create` endpoint initiates the process of creating an Asset Report, which can then be retrieved by passing the `asset_report_token` return value to the `/asset_report/get` or `/asset_report/pdf/get` endpoints.

        The Asset Report takes some time to be created and is not available immediately after calling `/asset_report/create`. When the Asset Report is ready to be retrieved using `/asset_report/get` or `/asset_report/pdf/get`, Plaid will fire a `PRODUCT_READY` webhook. For full details of the webhook schema, see [Asset Report webhooks](https://plaid.com/docs/api/webhooks/#Assets-webhooks).

        The `/asset_report/create` endpoint creates an Asset Report at a moment in time. Asset Reports are immutable. To get an updated Asset Report, use the `/asset_report/refresh` endpoint.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetReportCreateRequest'
  /asset_report/refresh:
    post:
      tags:
      - plaid
      summary: Refresh an Asset Report
      externalDocs:
        url: /api/products/#asset_reportrefresh
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetReportRefreshResponse'
              examples:
                example-1:
                  value:
                    asset_report_id: c33ebe8b-6a63-4d74-a83d-d39791231ac0
                    asset_report_token: assets-sandbox-8218d5f8-6d6d-403d-92f5-13a9afaa4398
                    request_id: NBZaq
      operationId: assetReportRefresh
      description: |-
        An Asset Report is an immutable snapshot of a user's assets. In order to "refresh" an Asset Report you created previously, you can use the `/asset_report/refresh` endpoint to create a new Asset Report based on the old one, but with the most recent data available.

        The new Asset Report will contain the same Items as the original Report, as well as the same filters applied by any call to `/asset_report/filter`. By default, the new Asset Report will also use the same parameters you submitted with your original `/asset_report/create` request, but the original `days_requested` value and the values of any parameters in the `options` object can be overridden with new values. To change these arguments, simply supply new values for them in your request to `/asset_report/refresh`. Submit an empty string ("") for any previously-populated fields you would like set as empty.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetReportRefreshRequest'
  /asset_report/remove:
    post:
      tags:
      - plaid
      summary: Delete an Asset Report
      externalDocs:
        url: /api/products/#asset_reportremove
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetReportRemoveResponse'
              examples:
                example-1:
                  value:
                    removed: true
                    request_id: I6zHN
      operationId: assetReportRemove
      description: |-
        The `/item/remove` endpoint allows you to invalidate an `access_token`, meaning you will not be able to create new Asset Reports with it. Removing an Item does not affect any Asset Reports or Audit Copies you have already created, which will remain accessible until you remove them specifically.

        The `/asset_report/remove` endpoint allows you to remove an Asset Report. Removing an Asset Report invalidates its `asset_report_token`, meaning you will no longer be able to use it to access Report data or create new Audit Copies. Removing an Asset Report does not affect the underlying Items, but does invalidate any `audit_copy_tokens` associated with the Asset Report.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetReportRemoveRequest'
  /asset_report/filter:
    post:
      tags:
      - plaid
      summary: Filter Asset Report
      externalDocs:
        url: /api/products/#asset_reportfilter
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetReportFilterResponse'
              examples:
                example-1:
                  value:
                    asset_report_token: assets-sandbox-bc410c6a-4653-4c75-985c-e757c3497c5c
                    asset_report_id: fdc09207-0cef-4d88-b5eb-0d970758ebd9
                    request_id: qEg07
      operationId: assetReportFilter
      description: |-
        By default, an Asset Report will contain all of the accounts on a given Item. In some cases, you may not want the Asset Report to contain all accounts. For example, you might have the end user choose which accounts are relevant in Link using the Account Select view, which you can enable in the dashboard. Or, you might always exclude certain account types or subtypes, which you can identify by using the `/accounts/get` endpoint. To narrow an Asset Report to only a subset of accounts, use the `/asset_report/filter` endpoint.

        To exclude certain Accounts from an Asset Report, first use the `/asset_report/create` endpoint to create the report, then send the `asset_report_token` along with a list of `account_ids` to exclude to the `/asset_report/filter` endpoint, to create a new Asset Report which contains only a subset of the original Asset Report's data.

        Because Asset Reports are immutable, calling `/asset_report/filter` does not alter the original Asset Report in any way; rather, `/asset_report/filter` creates a new Asset Report with a new token and id. Asset Reports created via `/asset_report/filter` do not contain new Asset data, and are not billed.

        Plaid will fire a [`PRODUCT_READY`](https://plaid.com/docs/api/webhooks) webhook once generation of the filtered Asset Report has completed.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetReportFilterRequest'
  /asset_report/get:
    post:
      tags:
      - plaid
      summary: Retrieve an Asset Report
      externalDocs:
        url: /api/products/#asset_reportget
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetReportGetResponse'
              examples:
                example-1:
                  value:
                    report:
                      asset_report_id: bf3a0490-344c-4620-a219-2693162e4b1d
                      client_report_id: 123abc
                      date_generated: "2020-06-05T22:47:53Z"
                      days_requested: 3
                      items:
                      - accounts:
                        - account_id: 3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr
                          balances:
                            available: 200
                            current: 210
                            iso_currency_code: USD
                            limit: null
                            unofficial_currency_code: null
                          days_available: 3
                          historical_balances:
                          - current: 210
                            date: "2020-06-04"
                            iso_currency_code: USD
                            unofficial_currency_code: null
                          - current: 210
                            date: "2020-06-03"
                            iso_currency_code: USD
                            unofficial_currency_code: null
                          - current: 210
                            date: "2020-06-02"
                            iso_currency_code: USD
                            unofficial_currency_code: null
                          mask: "1111"
                          name: Plaid Saving
                          official_name: Plaid Silver Standard 0.1% Interest Saving
                          owners:
                          - addresses:
                            - data:
                                city: Malakoff
                                country: US
                                postal_code: "14236"
                                region: NY
                                street: 2992 Cameron Road
                              primary: true
                            - data:
                                city: San Matias
                                country: US
                                postal_code: 93405-2255
                                region: CA
                                street: 2493 Leisure Lane
                              primary: false
                            emails:
                            - data: accountholder0@example.com
                              primary: true
                              type: primary
                            - data: accountholder1@example.com
                              primary: false
                              type: secondary
                            - data: extraordinarily.long.email.username.123456@reallylonghostname.com
                              primary: false
                              type: other
                            names:
                            - Alberta Bobbeth Charleson
                            phone_numbers:
                            - data: "1112223333"
                              primary: false
                              type: home
                            - data: "1112224444"
                              primary: false
                              type: work
                            - data: "1112225555"
                              primary: false
                              type: mobile
                          ownership_type: null
                          subtype: savings
                          transactions: []
                          type: depository
                        - account_id: BxBXxLj1m4HMXBm9WZJyUg9XLd4rKEhw8Pb1J
                          balances:
                            available: null
                            current: 56302.06
                            iso_currency_code: USD
                            limit: null
                            unofficial_currency_code: null
                          days_available: 3
                          historical_balances: []
                          mask: "8888"
                          name: Plaid Mortgage
                          official_name: null
                          owners:
                          - addresses:
                            - data:
                                city: Malakoff
                                country: US
                                postal_code: "14236"
                                region: NY
                                street: 2992 Cameron Road
                              primary: true
                            - data:
                                city: San Matias
                                country: US
                                postal_code: 93405-2255
                                region: CA
                                street: 2493 Leisure Lane
                              primary: false
                            emails:
                            - data: accountholder0@example.com
                              primary: true
                              type: primary
                            - data: accountholder1@example.com
                              primary: false
                              type: secondary
                            - data: extraordinarily.long.email.username.123456@reallylonghostname.com
                              primary: false
                              type: other
                            names:
                            - Alberta Bobbeth Charleson
                            phone_numbers:
                            - data: "1112223333"
                              primary: false
                              type: home
                            - data: "1112224444"
                              primary: false
                              type: work
                            - data: "1112225555"
                              primary: false
                              type: mobile
                          ownership_type: null
                          subtype: mortgage
                          transactions: []
                          type: loan
                        - account_id: dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK
                          balances:
                            available: null
                            current: 410
                            iso_currency_code: USD
                            limit: null
                            unofficial_currency_code: null
                          days_available: 3
                          historical_balances:
                          - current: 410
                            date: "2020-06-04"
                            iso_currency_code: USD
                            unofficial_currency_code: null
                          - current: 410
                            date: "2020-06-03"
                            iso_currency_code: USD
                            unofficial_currency_code: null
                          - current: 410
                            date: "2020-06-02"
                            iso_currency_code: USD
                            unofficial_currency_code: null
                          mask: "3333"
                          name: Plaid Credit Card
                          official_name: Plaid Diamond 12.5% APR Interest Credit Card
                          owners:
                          - addresses:
                            - data:
                                city: Malakoff
                                country: US
                                postal_code: "14236"
                                region: NY
                                street: 2992 Cameron Road
                              primary: true
                            - data:
                                city: San Matias
                                country: US
                                postal_code: 93405-2255
                                region: CA
                                street: 2493 Leisure Lane
                              primary: false
                            emails:
                            - data: accountholder0@example.com
                              primary: true
                              type: primary
                            - data: accountholder1@example.com
                              primary: false
                              type: secondary
                            - data: extraordinarily.long.email.username.123456@reallylonghostname.com
                              primary: false
                              type: other
                            names:
                            - Alberta Bobbeth Charleson
                            phone_numbers:
                            - data: "1112223333"
                              primary: false
                              type: home
                            - data: "1112224444"
                              primary: false
                              type: work
                            - data: "1112225555"
                              primary: false
                              type: mobile
                          ownership_type: null
                          subtype: credit card
                          transactions: []
                          type: credit
                        date_last_updated: "2020-06-05T22:47:52Z"
                        institution_id: ins_3
                        institution_name: Chase
                        item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6
                      user:
                        client_user_id: "123456789"
                        email: accountholder0@example.com
                        first_name: Alberta
                        last_name: Charleson
                        middle_name: Bobbeth
                        phone_number: 111-222-3333
                        ssn: 123-45-6789
                    request_id: eYupqX1mZkEuQRx
                    warnings: []
      operationId: assetReportGet
      description: |-
        The `/asset_report/get` endpoint retrieves the Asset Report in JSON format. Before calling `/asset_report/get`, you must first create the Asset Report using `/asset_report/create` (or filter an Asset Report using `/asset_report/filter`) and then wait for the [`PRODUCT_READY`](https://plaid.com/docs/api/webhooks) webhook to fire, indicating that the Report is ready to be retrieved.

        By default, an Asset Report includes transaction descriptions as returned by the bank, as opposed to parsed and categorized by Plaid. You can also receive cleaned and categorized transactions, as well as additional insights like merchant name or location information. We call this an Asset Report with Insights. An Asset Report with Insights provides transaction category, location, and merchant information in addition to the transaction strings provided in a standard Asset Report.

        To retrieve an Asset Report with Insights, call the `/asset_report/get` endpoint with `include_insights` set to `true`.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetReportGetRequest'
  /asset_report/pdf/get:
    post:
      tags:
      - plaid
      summary: Retrieve a PDF Asset Report
      externalDocs:
        url: /api/products/#asset_reportpdfget
      responses:
        "200":
          description: A PDF of the Asset Report
          content:
            application/pdf:
              schema:
                $ref: '#/components/schemas/AssetReportPDFGetResponse'
      operationId: assetReportPdfGet
      description: |-
        The `/asset_report/pdf/get` endpoint retrieves the Asset Report in PDF format. Before calling `/asset_report/pdf/get`, you must first create the Asset Report using `/asset_report/create` (or filter an Asset Report using `/asset_report/filter`) and then wait for the [`PRODUCT_READY`](https://plaid.com/docs/api/webhooks) webhook to fire, indicating that the Report is ready to be retrieved.

        The response to `/asset_report/pdf/get` is the PDF binary data. The `request_id`  is returned in the `Plaid-Request-ID` header.

        [View a sample PDF Asset Report](https://plaid.com/documents/sample-asset-report.pdf).
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetReportPDFGetRequest'
  /asset_report/audit_copy/create:
    post:
      tags:
      - plaid
      summary: Create Asset Report Audit Copy
      externalDocs:
        url: /api/products/#asset_reportaudit_copycreate
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetReportAuditCopyCreateResponse'
              examples:
                example-1:
                  value:
                    audit_copy_token: a-sandbox-3TAU2CWVYBDVRHUCAAAI27ULU4
                    request_id: Iam3b
      operationId: assetReportAuditCopyCreate
      description: |-
        Plaid can provide an Audit Copy of any Asset Report directly to a participating third party on your behalf. For example, Plaid can supply an Audit Copy directly to Fannie Mae on your behalf if you participate in the Day 1 Certainty™ program. An Audit Copy contains the same underlying data as the Asset Report.

        To grant access to an Audit Copy, use the `/asset_report/audit_copy/create` endpoint to create an `audit_copy_token` and then pass that token to the third party who needs access. Each third party has its own `auditor_id`, for example `fannie_mae`. You’ll need to create a separate Audit Copy for each third party to whom you want to grant access to the Report.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetReportAuditCopyCreateRequest'
  /asset_report/audit_copy/remove:
    post:
      tags:
      - plaid
      summary: Remove Asset Report Audit Copy
      externalDocs:
        url: /api/products/#asset_reportaudit_copyremove
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetReportAuditCopyRemoveResponse'
              examples:
                example-1:
                  value:
                    removed: true
                    request_id: m8MDnv9okwxFNBV
      operationId: assetReportAuditCopyRemove
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetReportAuditCopyRemoveRequest'
      description: The `/asset_report/audit_copy/remove` endpoint allows you to remove an Audit Copy. Removing an Audit Copy invalidates the `audit_copy_token` associated with it, meaning both you and any third parties holding the token will no longer be able to use it to access Report data. Items associated with the Asset Report, the Asset Report itself and other Audit Copies of it are not affected and will remain accessible after removing the given Audit Copy.
  /investments/holdings/get:
    post:
      tags:
      - plaid
      summary: Get Investment holdings
      externalDocs:
        url: /api/products/#investmentsholdingsget
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvestmentsHoldingsGetResponse'
              examples:
                example-1:
                  value:
                    accounts:
                    - account_id: 5Bvpj4QknlhVWk7GygpwfVKdd133GoCxB814g
                      balances:
                        available: 43200
                        current: 43200
                        iso_currency_code: USD
                        limit: null
                        unofficial_currency_code: null
                      mask: "4444"
                      name: Plaid Money Market
                      official_name: Plaid Platinum Standard 1.85% Interest Money Market
                      subtype: money market
                      type: depository
                    - account_id: JqMLm4rJwpF6gMPJwBqdh9ZjjPvvpDcb7kDK1
                      balances:
                        available: null
                        current: 320.76
                        iso_currency_code: USD
                        limit: null
                        unofficial_currency_code: null
                      mask: "5555"
                      name: Plaid IRA
                      official_name: null
                      subtype: ira
                      type: investment
                    - account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm
                      balances:
                        available: null
                        current: 23631.9805
                        iso_currency_code: USD
                        limit: null
                        unofficial_currency_code: null
                      mask: "6666"
                      name: Plaid 401k
                      official_name: null
                      subtype: 401k
                      type: investment
                    holdings:
                    - account_id: JqMLm4rJwpF6gMPJwBqdh9ZjjPvvpDcb7kDK1
                      cost_basis: 1
                      institution_price: 1
                      institution_price_as_of: "2021-04-13"
                      institution_value: 0.01
                      iso_currency_code: USD
                      quantity: 0.01
                      security_id: d6ePmbPxgWCWmMVv66q9iPV94n91vMtov5Are
                      unofficial_currency_code: null
                    - account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm
                      cost_basis: 1.5
                      institution_price: 2.11
                      institution_price_as_of: null
                      institution_value: 2.11
                      iso_currency_code: USD
                      quantity: 1
                      security_id: KDwjlXj1Rqt58dVvmzRguxJybmyQL8FgeWWAy
                      unofficial_currency_code: null
                    - account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm
                      cost_basis: 10
                      institution_price: 10.42
                      institution_price_as_of: null
                      institution_value: 20.84
                      iso_currency_code: USD
                      quantity: 2
                      security_id: NDVQrXQoqzt5v3bAe8qRt4A7mK7wvZCLEBBJk
                      unofficial_currency_code: null
                    - account_id: JqMLm4rJwpF6gMPJwBqdh9ZjjPvvpDcb7kDK1
                      cost_basis: 0.01
                      institution_price: 0.011
                      institution_price_as_of: null
                      institution_value: 110
                      iso_currency_code: USD
                      quantity: 10000
                      security_id: 8E4L9XLl6MudjEpwPAAgivmdZRdBPJuvMPlPb
                      unofficial_currency_code: null
                    - account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm
                      cost_basis: 23
                      institution_price: 27
                      institution_price_as_of: null
                      institution_value: 636.309
                      iso_currency_code: USD
                      quantity: 23.567
                      security_id: JDdP7XPMklt5vwPmDN45t3KAoWAPmjtpaW7DP
                      unofficial_currency_code: null
                    - account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm
                      cost_basis: 15
                      institution_price: 13.73
                      institution_price_as_of: null
                      institution_value: 1373.6865
                      iso_currency_code: USD
                      quantity: 100.05
                      security_id: nnmo8doZ4lfKNEDe3mPJipLGkaGw3jfPrpxoN
                      unofficial_currency_code: null
                    - account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm
                      cost_basis: 1
                      institution_price: 1
                      institution_price_as_of: null
                      institution_value: 12345.67
                      iso_currency_code: USD
                      quantity: 12345.67
                      security_id: d6ePmbPxgWCWmMVv66q9iPV94n91vMtov5Are
                      unofficial_currency_code: null
                    item:
                      available_products:
                      - balance
                      - identity
                      - liabilities
                      - transactions
                      billed_products:
                      - assets
                      - auth
                      - investments
                      consent_expiration_time: null
                      error: null
                      institution_id: ins_3
                      item_id: 4z9LPae1nRHWy8pvg9jrsgbRP4ZNQvIdbLq7g
                      update_type: background
                      webhook: https://www.genericwebhookurl.com/webhook
                    request_id: l68wb8zpS0hqmsJ
                    securities:
                    - close_price: 0.011
                      close_price_as_of: "2021-04-13"
                      cusip: null
                      institution_id: null
                      institution_security_id: null
                      is_cash_equivalent: false
                      isin: null
                      iso_currency_code: USD
                      name: Nflx Feb 01'18 $355 Call
                      proxy_security_id: null
                      security_id: 8E4L9XLl6MudjEpwPAAgivmdZRdBPJuvMPlPb
                      sedol: null
                      ticker_symbol: NFLX180201C00355000
                      type: derivative
                      unofficial_currency_code: null
                    - close_price: 27
                      close_price_as_of: null
                      cusip: "577130834"
                      institution_id: null
                      institution_security_id: null
                      is_cash_equivalent: false
                      isin: US5771308344
                      iso_currency_code: USD
                      name: Matthews Pacific Tiger Fund Insti Class
                      proxy_security_id: null
                      security_id: JDdP7XPMklt5vwPmDN45t3KAoWAPmjtpaW7DP
                      sedol: null
                      ticker_symbol: MIPTX
                      type: mutual fund
                      unofficial_currency_code: null
                    - close_price: 2.11
                      close_price_as_of: null
                      cusip: 00448Q201
                      institution_id: null
                      institution_security_id: null
                      is_cash_equivalent: false
                      isin: US00448Q2012
                      iso_currency_code: USD
                      name: Achillion Pharmaceuticals Inc.
                      proxy_security_id: null
                      security_id: KDwjlXj1Rqt58dVvmzRguxJybmyQL8FgeWWAy
                      sedol: null
                      ticker_symbol: ACHN
                      type: equity
                      unofficial_currency_code: null
                    - close_price: 10.42
                      close_price_as_of: null
                      cusip: "258620103"
                      institution_id: null
                      institution_security_id: null
                      is_cash_equivalent: false
                      isin: US2586201038
                      iso_currency_code: USD
                      name: DoubleLine Total Return Bond Fund
                      proxy_security_id: null
                      security_id: NDVQrXQoqzt5v3bAe8qRt4A7mK7wvZCLEBBJk
                      sedol: null
                      ticker_symbol: DBLTX
                      type: mutual fund
                      unofficial_currency_code: null
                    - close_price: 1
                      close_price_as_of: null
                      cusip: null
                      institution_id: null
                      institution_security_id: null
                      is_cash_equivalent: true
                      isin: null
                      iso_currency_code: USD
                      name: U S Dollar
                      proxy_security_id: null
                      security_id: d6ePmbPxgWCWmMVv66q9iPV94n91vMtov5Are
                      sedol: null
                      ticker_symbol: USD
                      type: cash
                      unofficial_currency_code: null
                    - close_price: 13.73
                      close_price_as_of: null
                      cusip: null
                      institution_id: ins_3
                      institution_security_id: NHX105509
                      is_cash_equivalent: false
                      isin: null
                      iso_currency_code: USD
                      name: NH PORTFOLIO 1055 (FIDELITY INDEX)
                      proxy_security_id: null
                      security_id: nnmo8doZ4lfKNEDe3mPJipLGkaGw3jfPrpxoN
                      sedol: null
                      ticker_symbol: NHX105509
                      type: etf
                      unofficial_currency_code: null
      operationId: investmentsHoldingsGet
      description: The `/investments/holdings/get` endpoint allows developers to receive user-authorized stock position data for `investment`-type accounts.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InvestmentsHoldingsGetRequest'
  /investments/transactions/get:
    post:
      tags:
      - plaid
      summary: Get investment transactions
      externalDocs:
        url: /api/products/#investmentstransactionsget
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvestmentsTransactionsGetResponse'
              examples:
                example-1:
                  value:
                    accounts:
                    - account_id: 5e66Dl6jNatx3nXPGwZ7UkJed4z6KBcZA4Rbe
                      balances:
                        available: 100
                        current: 110
                        iso_currency_code: USD
                        limit: null
                        unofficial_currency_code: null
                      mask: "0000"
                      name: Plaid Checking
                      official_name: Plaid Gold Standard 0% Interest Checking
                      subtype: checking
                      type: depository
                    - account_id: KqZZMoZmBWHJlz7yKaZjHZb78VNpaxfVa7e5z
                      balances:
                        available: null
                        current: 320.76
                        iso_currency_code: USD
                        limit: null
                        unofficial_currency_code: null
                      mask: "5555"
                      name: Plaid IRA
                      official_name: null
                      subtype: ira
                      type: investment
                    - account_id: rz99ex9ZQotvnjXdgQLEsR81e3ArPgulVWjGj
                      balances:
                        available: null
                        current: 23631.9805
                        iso_currency_code: USD
                        limit: null
                        unofficial_currency_code: null
                      mask: "6666"
                      name: Plaid 401k
                      official_name: null
                      subtype: 401k
                      type: investment
                    investment_transactions:
                    - account_id: rz99ex9ZQotvnjXdgQLEsR81e3ArPgulVWjGj
                      amount: -8.72
                      cancel_transaction_id: null
                      date: "2020-05-29"
                      fees: 0
                      investment_transaction_id: oq99Pz97joHQem4BNjXECev1E4B6L6sRzwANW
                      iso_currency_code: USD
                      name: INCOME DIV DIVIDEND RECEIVED
                      price: 0
                      quantity: 0
                      security_id: eW4jmnjd6AtjxXVrjmj6SX1dNEdZp3Cy8RnRQ
                      subtype: dividend
                      type: cash
                      unofficial_currency_code: null
                    - account_id: rz99ex9ZQotvnjXdgQLEsR81e3ArPgulVWjGj
                      amount: -1289.01
                      cancel_transaction_id: null
                      date: "2020-05-28"
                      fees: 7.99
                      investment_transaction_id: pK99jB9e7mtwjA435GpVuMvmWQKVbVFLWme57
                      iso_currency_code: USD
                      name: SELL Matthews Pacific Tiger Fund Insti Class
                      price: 27.53
                      quantity: -47.74104242992852
                      security_id: JDdP7XPMklt5vwPmDN45t3KAoWAPmjtpaW7DP
                      subtype: sell
                      type: sell
                      unofficial_currency_code: null
                    - account_id: rz99ex9ZQotvnjXdgQLEsR81e3ArPgulVWjGj
                      amount: 7.7
                      cancel_transaction_id: null
                      date: "2020-05-27"
                      fees: 7.99
                      investment_transaction_id: LKoo1ko93wtreBwM7yQnuQ3P5DNKbKSPRzBNv
                      iso_currency_code: USD
                      name: BUY DoubleLine Total Return Bond Fund
                      price: 10.42
                      quantity: 0.7388014749727547
                      security_id: NDVQrXQoqzt5v3bAe8qRt4A7mK7wvZCLEBBJk
                      subtype: buy
                      type: buy
                      unofficial_currency_code: null
                    item:
                      available_products:
                      - assets
                      - balance
                      - identity
                      - transactions
                      billed_products:
                      - auth
                      - investments
                      consent_expiration_time: null
                      error: null
                      institution_id: ins_12
                      item_id: 8Mqq5rqQ7Pcxq9MGDv3JULZ6yzZDLMCwoxGDq
                      update_type: background
                      webhook: https://www.genericwebhookurl.com/webhook
                    request_id: iv4q3ZlytOOthkv
                    securities:
                    - close_price: 27
                      close_price_as_of: null
                      cusip: "577130834"
                      institution_id: null
                      institution_security_id: null
                      is_cash_equivalent: false
                      isin: US5771308344
                      iso_currency_code: USD
                      name: Matthews Pacific Tiger Fund Insti Class
                      proxy_security_id: null
                      security_id: JDdP7XPMklt5vwPmDN45t3KAoWAPmjtpaW7DP
                      sedol: null
                      ticker_symbol: MIPTX
                      type: mutual fund
                      unofficial_currency_code: null
                    - close_price: 10.42
                      close_price_as_of: null
                      cusip: "258620103"
                      institution_id: null
                      institution_security_id: null
                      is_cash_equivalent: false
                      isin: US2586201038
                      iso_currency_code: USD
                      name: DoubleLine Total Return Bond Fund
                      proxy_security_id: null
                      security_id: NDVQrXQoqzt5v3bAe8qRt4A7mK7wvZCLEBBJk
                      sedol: null
                      ticker_symbol: DBLTX
                      type: mutual fund
                      unofficial_currency_code: null
                    - close_price: 34.73
                      close_price_as_of: null
                      cusip: 84470P109
                      institution_id: null
                      institution_security_id: null
                      is_cash_equivalent: false
                      isin: US84470P1093
                      iso_currency_code: USD
                      name: Southside Bancshares Inc.
                      proxy_security_id: null
                      security_id: eW4jmnjd6AtjxXVrjmj6SX1dNEdZp3Cy8RnRQ
                      sedol: null
                      ticker_symbol: SBSI
                      type: equity
                      unofficial_currency_code: null
                    total_investment_transactions: 3
      operationId: investmentsTransactionsGet
      description: |-
        The `/investments/transactions/get` endpoint allows developers to retrieve user-authorized transaction data for investment accounts.

        Transactions are returned in reverse-chronological order, and the sequence of transaction ordering is stable and will not shift.

        Due to the potentially large number of investment transactions associated with an Item, results are paginated. Manipulate the count and offset parameters in conjunction with the `total_investment_transactions` response body field to fetch all available investment transactions.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InvestmentsTransactionsGetRequest'
  /processor/token/create:
    post:
      tags:
      - plaid
      summary: Create processor token
      externalDocs:
        url: /api/processors/#processortokencreate
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProcessorTokenCreateResponse'
              examples:
                example-1:
                  value:
                    processor_token: processor-sandbox-0asd1-a92nc
                    request_id: xrQNYZ7Zoh6R7gV
      operationId: processorTokenCreate
      description: Used to create a token suitable for sending to one of Plaid's partners to enable integrations. Note that Stripe partnerships use bank account tokens instead; see `/processor/stripe/bank_account_token/create` for creating tokens for use with Stripe integrations.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProcessorTokenCreateRequest'
  /processor/stripe/bank_account_token/create:
    post:
      tags:
      - plaid
      summary: Create Stripe bank account token
      externalDocs:
        url: /api/processors/#processorstripebank_account_tokencreate
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProcessorStripeBankAccountTokenCreateResponse'
              examples:
                example-1:
                  value:
                    stripe_bank_account_token: btok_5oEetfLzPklE1fwJZ7SG
                    request_id: xrQNYZ7Zoh6R7gV
      operationId: processorStripeBankAccountTokenCreate
      description: Used to create a token suitable for sending to Stripe to enable Plaid-Stripe integrations. For a detailed guide on integrating Stripe, see [Add Stripe to your app](https://plaid.com/docs/auth/partnerships/stripe/).
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProcessorStripeBankAccountTokenCreateRequest'
  /processor/apex/processor_token/create:
    post:
      tags:
      - plaid
      summary: Create Apex bank account token
      externalDocs:
        url: /none/
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProcessorTokenCreateResponse'
      operationId: processorApexProcessorTokenCreate
      description: Used to create a token suitable for sending to Apex to enable Plaid-Apex integrations.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProcessorApexProcessorTokenCreateRequest'
  /deposit_switch/create:
    post:
      tags:
      - plaid
      summary: Create a deposit switch
      externalDocs:
        url: /api/products#deposit_switchcreate
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DepositSwitchCreateResponse'
              examples:
                example-1:
                  value:
                    deposit_switch_id: c7jMwPPManIwy9rwMewWP7lpb4pKRbtrbMomp
                    request_id: lMjeOeu9X1VUh1F
      operationId: depositSwitchCreate
      description: This endpoint creates a deposit switch entity that will be persisted throughout the lifecycle of the switch.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DepositSwitchCreateRequest'
  /item/import:
    post:
      tags:
      - plaid
      summary: Import Item
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ItemImportResponse'
              examples:
                example-1:
                  value:
                    access_token: access-sandbox-99ace160-3cf7-4e51-a083-403633425815
                    request_id: ewIBAn6RZirsk4W
      operationId: itemImport
      description: |-
        `/item/import` creates an Item via your Plaid Exchange Integration and returns an `access_token`. As part of an `/item/import` request, you will include a User ID (`user_auth.user_id`) and Authentication Token (`user_auth.auth_token`) that enable data aggregation through your Plaid Exchange API endpoints. These authentication principals are to be chosen by you.

        Upon creating an Item via `/item/import`, Plaid will automatically begin an extraction of that Item through the Plaid Exchange infrastructure you have already integrated. This will automatically generate the Plaid native account ID for the account the user will switch their direct deposit to (`target_account_id`).
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ItemImportRequest'
  /deposit_switch/token/create:
    post:
      tags:
      - plaid
      summary: Create a deposit switch token
      externalDocs:
        url: /deposit-switch/reference#deposit_switchtokencreate
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DepositSwitchTokenCreateResponse'
              examples:
                example-1:
                  value:
                    deposit_switch_token: deposit-switch-sandbox-3e5cacca-10a6-11ea-bcdb-6003089acac0
                    deposit_switch_token_expiration_time: "2019-12-31T12:01:37Z"
                    request_id: 68MvHx4Ub5NYoXt
      operationId: depositSwitchTokenCreate
      description: |
        In order for the end user to take action, you will need to create a public token representing the deposit switch. This token is used to initialize Link. It can be used one time and expires after 30 minutes.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DepositSwitchTokenCreateRequest'
  /link/token/create:
    post:
      tags:
      - plaid
      summary: Create Link Token
      externalDocs:
        url: /api/tokens/#linktokencreate
      operationId: linkTokenCreate
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LinkTokenCreateResponse'
              examples:
                example-1:
                  value:
                    link_token: link-production-840204-193734
                    expiration: "2020-03-27T12:56:34Z"
                    request_id: XQVgFigpGHXkb0b
      description: |-
        The `/link/token/create` endpoint creates a `link_token`, which is required as a parameter when initializing Link. Once Link has been initialized, it returns a `public_token`, which can then be exchanged for an `access_token` via `/item/public_token/exchange` as part of the main Link flow.

        A `link_token` generated by `/link/token/create` is also used to initialize other Link flows, such as the update mode flow for tokens with expired credentials, or the Payment Initiation (Europe) flow.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LinkTokenCreateRequest'
  /link/token/get:
    post:
      tags:
      - plaid
      summary: Get Link Token
      externalDocs:
        url: /api/tokens/#linktokenget
      operationId: linkTokenGet
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LinkTokenGetResponse'
              examples:
                example-1:
                  value:
                    created_at: "2020-12-02T21:14:54Z"
                    expiration: "2020-12-03T01:14:54Z"
                    link_token: link-sandbox-33792986-2b9c-4b80-b1f2-518caaac6183
                    metadata:
                      account_filters:
                        depository:
                          account_subtypes:
                          - checking
                          - savings
                      client_name: Insert Client name here
                      country_codes:
                      - US
                      initial_products:
                      - auth
                      language: en
                      redirect_uri: null
                      webhook: https://www.example.com/webhook
                    request_id: u0ydFs493XjyTYn
      description: |-
        The `/link/token/get` endpoint gets information about a previously-created `link_token` using the
        `/link/token/create` endpoint. It can be useful for debugging purposes.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LinkTokenGetRequest'
  /asset_report/audit_copy/get:
    post:
      summary: Retrieve an Asset Report Audit Copy
      tags:
      - plaid
      operationId: assetReportAuditCopyGet
      externalDocs:
        url: /none/
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetReportAuditCopyGetRequest'
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetReportGetResponse'
      description: '`/asset_report/audit_copy/get` allows auditors to get a copy of an Asset Report that was previously shared via the `/asset_report/audit_copy/create` endpoint.  The caller of `/asset_report/audit_copy/create` must provide the `audit_copy_token` to the auditor.  This token can then be used to call `/asset_report/audit_copy/create`.'
  /deposit_switch/get:
    post:
      summary: Retrieve a deposit switch
      externalDocs:
        url: /api/products#deposit_switchget
      tags:
      - plaid
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DepositSwitchGetResponse'
              examples:
                example-1:
                  value:
                    target_item_id: MdRAkq1QikR3BLjDyMfMkVpqLmEm1VR7bX5hE
                    target_account_id: bX5hEMdRAkq1QikR3BLjDyMfMkVpqLmEm1VR7
                    deposit_switch_id: LjDyMfMkVpqLmEm1VR7bQikR3BX5hEMdRAkq1
                    state: completed
                    switch_method: instant
                    date_created: "2019-11-01"
                    date_completed: "2019-11-01"
                    account_has_multiple_allocations: true
                    is_allocated_remainder: false
                    percent_allocated: 50
                    amount_allocated: null
                    employer_name: COMPANY INC
                    employer_id: pqLmEm1VR7bQi11231
                    institution_name: Bank of America
                    institution_id: ins_1
                    request_id: lMjeOeu9X1VUh1F
      operationId: depositSwitchGet
      description: This endpoint returns information related to how the user has configured their payroll allocation and the state of the switch. You can use this information to build logic related to the user's direct deposit allocation preferences.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DepositSwitchGetRequest'
    parameters: []
  /transfer/get:
    post:
      summary: Retrieve a transfer
      tags:
      - plaid
      externalDocs:
        url: /transfer/reference#transferget
      operationId: transferGet
      responses:
        "200":
          description: OK
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransferGetResponse'
              examples:
                example-1:
                  value:
                    transfer:
                      account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B
                      ach_class: ppd
                      amount: "12.34"
                      cancellable: true
                      created: "2020-08-06T17:27:15Z"
                      custom_tag: my tag
                      description: Testing2
                      direction: outbound
                      failure_reason:
                        ach_return_code: R13
                        description: Invalid ACH routing number
                      id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9
                      iso_currency_code: USD
                      metadata:
                        key1: value1
                        key2: value2
                      network: ach
                      origination_account_id: 11111111-1111-1111-1111-111111111111
                      status: pending
                      type: credit
                      user:
                        email_address: plaid@plaid.com
                        legal_name: John Smith
                        phone_number: null
                        address: null
                    request_id: saKrIBuEB9qJZno
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      description: The `/transfer/get` fetches information about the transfer corresponding to the given `transfer_id`.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransferGetRequest'
            examples: {}
      parameters: []
  /bank_transfer/get:
    post:
      summary: Retrieve a bank transfer
      tags:
      - plaid
      externalDocs:
        url: /api/products#bank_transferget
      operationId: bankTransferGet
      responses:
        "200":
          description: OK
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankTransferGetResponse'
              examples:
                example-1:
                  value:
                    bank_transfer:
                      account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B
                      ach_class: ppd
                      amount: "12.34"
                      cancellable: true
                      created: "2020-08-06T17:27:15Z"
                      custom_tag: my tag
                      description: Testing2
                      direction: outbound
                      failure_reason:
                        ach_return_code: R13
                        description: Invalid ACH routing number
                      id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9
                      iso_currency_code: USD
                      metadata:
                        key1: value1
                        key2: value2
                      network: ach
                      origination_account_id: 11111111-1111-1111-1111-111111111111
                      status: pending
                      type: credit
                      user:
                        email_address: plaid@plaid.com
                        legal_name: John Smith
                        routing_number: "111111111"
                    request_id: saKrIBuEB9qJZno
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      description: The `/bank_transfer/get` fetches information about the bank transfer corresponding to the given `bank_transfer_id`.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BankTransferGetRequest'
            examples: {}
      parameters: []
  /transfer/authorization/create:
    post:
      summary: Create a transfer authorization
      tags:
      - plaid
      externalDocs:
        url: /transfer/reference#transferauthorizationcreate
      operationId: transferAuthorizationCreate
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransferAuthorizationCreateResponse'
              examples:
                example-1:
                  value:
                    authorization:
                      id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9
                      created: "2020-08-06T17:27:15Z"
                      decision: approved
                      decision_rationale: null
                      proposed_transfer:
                        ach_class: ppd
                        account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B
                        type: credit
                        user:
                          legal_name: Foo Bar
                          phone_number: 123-456-7890
                          email_address: user@plaid.com
                          address:
                            street: 100 Market Street
                            city: San Francisco
                            region: California
                            postal_code: "94103"
                            country: US
                        amount: "12.34"
                        iso_currency_code: USD
                        description: A description of the proposed transfer
                        network: ach
                        origination_account_id: 0123-4567-8901-2345-67890123
                    request_id: saKrIBuEB9qJZno
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      description: |-
        Use the `/transfer/authorization/create` endpoint to determine transfer failure risk.

        In Plaid's sandbox environment the decisions will be returned as follows:

          - To approve a transfer, create an Item in Link with the username `user_good` and password `pass_good`

          - To decline a transfer with the rationale code `NSF`, create an Item in Link with the username `declined_nsf_good` and password `pass_good`

          - To decline a transfer with the rationale code `RISK`, create an Item in Link with the username `declined_risk_good` and password `pass_good`

          - To permit a transfer with the rationale code `MANUALLY_VERIFIED_ITEM`, create an Item in Link through the [Same Day Micro-deposits flow](https://plaid.com/docs/auth/coverage/testing/#testing-same-day-micro-deposits).

          - To permit a transfer with the rationale code `LOGIN_REQUIRED`, [reset the login for an Item](https://plaid.com/docs/sandbox/#item_login_required).

        All username/password combinations other than the ones listed above will result in a decision of permitted and rationale code `ERROR`.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransferAuthorizationCreateRequest'
  /transfer/create:
    post:
      summary: Create a transfer
      tags:
      - plaid
      externalDocs:
        url: /transfer/reference#transfercreate
      operationId: transferCreate
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransferCreateResponse'
              examples:
                example-1:
                  value:
                    transfer:
                      id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9
                      ach_class: ppd
                      account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B
                      type: credit
                      user:
                        legal_name: Foo Bar
                        phone_number: 123-456-7890
                        email_address: user@plaid.com
                        address:
                          street: 100 Market Street
                          city: San Francisco
                          region: California
                          postal_code: "94103"
                          country: US
                      amount: "12.34"
                      iso_currency_code: USD
                      description: A description of the proposed transfer
                      created: "2020-08-06T17:27:15Z"
                      status: pending
                      network: ach
                      cancellable: true
                      failure_reason: null
                      custom_tag: My custom tag
                      metadata:
                        key1: value1
                        key2: value2
                      origination_account_id: 0123-4567-8901-2345-67890123
                      direction: outbound
                    request_id: saKrIBuEB9qJZno
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      description: Use the `/transfer/create` endpoint to initiate a new transfer.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransferCreateRequest'
  /bank_transfer/create:
    post:
      summary: Create a bank transfer
      tags:
      - plaid
      externalDocs:
        url: /api/products#bank_transfercreate
      operationId: bankTransferCreate
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankTransferCreateResponse'
              examples:
                example-1:
                  value:
                    bank_transfer:
                      account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B
                      ach_class: ppd
                      amount: "12.34"
                      cancellable: true
                      created: "2020-08-06T17:27:15Z"
                      custom_tag: my tag
                      description: Testing2
                      direction: outbound
                      failure_reason: null
                      id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9
                      iso_currency_code: USD
                      metadata:
                        key1: value1
                        key2: value2
                      network: ach
                      origination_account_id: 11111111-1111-1111-1111-111111111111
                      status: pending
                      type: credit
                      user:
                        email_address: plaid@plaid.com
                        legal_name: John Smith
                        routing_number: "111111111"
                    request_id: saKrIBuEB9qJZno
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      description: Use the `/bank_transfer/create` endpoint to initiate a new bank transfer.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BankTransferCreateRequest'
  /transfer/list:
    post:
      summary: List transfers
      tags:
      - plaid
      externalDocs:
        url: /transfer/reference#transferlist
      operationId: transferList
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransferListResponse'
              examples:
                example-1:
                  value:
                    transfers:
                    - account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B
                      ach_class: ppd
                      amount: "12.34"
                      cancellable: true
                      created: "2020-08-06T17:27:15Z"
                      custom_tag: my tag
                      description: Testing2
                      direction: outbound
                      failure_reason:
                        ach_return_code: R13
                        description: Invalid ACH routing number
                      id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9
                      iso_currency_code: USD
                      metadata:
                        key1: value1
                        key2: value2
                      network: ach
                      origination_account_id: 11111111-1111-1111-1111-111111111111
                      status: pending
                      type: credit
                      user:
                        email_address: plaid@plaid.com
                        legal_name: John Smith
                        phone_number: null
                        address: null
                    request_id: saKrIBuEB9qJZno
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      description: |
        Use the `/transfer/list` endpoint to see a list of all your transfers and their statuses. Results are paginated; use the `count` and `offset` query parameters to retrieve the desired transfers.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransferListRequest'
  /bank_transfer/list:
    post:
      summary: List bank transfers
      tags:
      - plaid
      externalDocs:
        url: /api/products#bank_transferlist
      operationId: bankTransferList
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankTransferListResponse'
              examples:
                example-1:
                  value:
                    bank_transfers:
                    - account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B
                      ach_class: ppd
                      amount: "12.34"
                      cancellable: true
                      created: "2020-08-06T17:27:15Z"
                      custom_tag: my tag
                      description: Testing2
                      direction: outbound
                      failure_reason:
                        ach_return_code: R13
                        description: Invalid ACH routing number
                      id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9
                      iso_currency_code: USD
                      metadata:
                        key1: value1
                        key2: value2
                      network: ach
                      origination_account_id: 11111111-1111-1111-1111-111111111111
                      status: pending
                      type: credit
                      user:
                        email_address: plaid@plaid.com
                        legal_name: John Smith
                        routing_number: "111111111"
                    request_id: saKrIBuEB9qJZno
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      description: |
        Use the `/bank_transfer/list` endpoint to see a list of all your bank transfers and their statuses. Results are paginated; use the `count` and `offset` query parameters to retrieve the desired bank transfers.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BankTransferListRequest'
  /transfer/cancel:
    post:
      summary: Cancel a transfer
      tags:
      - plaid
      externalDocs:
        url: /transfer/reference#transfercancel
      operationId: transferCancel
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransferCancelResponse'
              examples:
                example-1:
                  value:
                    request_id: saKrIBuEB9qJZno
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      description: Use the `/transfer/cancel` endpoint to cancel a transfer.  A transfer is eligible for cancelation if the `cancellable` property returned by `/transfer/get` is `true`.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransferCancelRequest'
  /bank_transfer/cancel:
    post:
      summary: Cancel a bank transfer
      tags:
      - plaid
      externalDocs:
        url: /api/products#bank_transfercancel
      operationId: bankTransferCancel
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankTransferCancelResponse'
              examples:
                example-1:
                  value:
                    request_id: saKrIBuEB9qJZno
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      description: Use the `/bank_transfer/cancel` endpoint to cancel a bank transfer.  A transfer is eligible for cancelation if the `cancellable` property returned by `/bank_transfer/get` is `true`.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BankTransferCancelRequest'
  /transfer/event/list:
    post:
      summary: List transfer events
      tags:
      - plaid
      externalDocs:
        url: /transfer/reference#transfereventlist
      operationId: transferEventList
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransferEventListResponse'
              examples:
                example-1:
                  value:
                    transfer_events:
                    - account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B
                      transfer_amount: "12.34"
                      transfer_id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9
                      transfer_iso_currency_code: USD
                      transfer_type: credit
                      direction: outbound
                      event_id: 1
                      event_type: receiver_pending
                      failure_reason: null
                      origination_account_id: null
                      receiver_details:
                        available_balance: positive
                      timestamp: "2020-08-06T17:27:15Z"
                    request_id: mdqfuVxeoza6mhu
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      description: Use the `/transfer/event/list` endpoint to get a list of transfer events based on specified filter criteria.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransferEventListRequest'
  /bank_transfer/event/list:
    post:
      summary: List bank transfer events
      tags:
      - plaid
      externalDocs:
        url: /api/products#bank_transfereventlist
      operationId: bankTransferEventList
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankTransferEventListResponse'
              examples:
                example-1:
                  value:
                    bank_transfer_events:
                    - account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B
                      bank_transfer_amount: "12.34"
                      bank_transfer_id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9
                      bank_transfer_iso_currency_code: USD
                      bank_transfer_type: credit
                      direction: outbound
                      event_id: 1
                      event_type: receiver_pending
                      failure_reason: null
                      origination_account_id: null
                      receiver_details:
                        available_balance: positive
                      timestamp: "2020-08-06T17:27:15Z"
                    request_id: mdqfuVxeoza6mhu
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      description: Use the `/bank_transfer/event/list` endpoint to get a list of bank transfer events based on specified filter criteria.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BankTransferEventListRequest'
  /transfer/event/sync:
    post:
      summary: Sync transfer events
      tags:
      - plaid
      externalDocs:
        url: /transfer/reference#transfereventsync
      operationId: transferEventSync
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransferEventSyncResponse'
              examples:
                example-1:
                  value:
                    transfer_events:
                    - account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B
                      transfer_amount: "12.34"
                      transfer_id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9
                      transfer_iso_currency_code: USD
                      transfer_type: credit
                      direction: outbound
                      event_id: 1
                      event_type: pending
                      failure_reason: null
                      origination_account_id: null
                      receiver_details: null
                      timestamp: "2020-08-06T17:27:15Z"
                    request_id: mdqfuVxeoza6mhu
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransferEventSyncRequest'
      description: '`/transfer/event/sync` allows you to request up to the next 25 transfer events that happened after a specific `event_id`. Use the `/transfer/event/sync` endpoint to guarantee you have seen all transfer events.'
  /bank_transfer/event/sync:
    post:
      summary: Sync bank transfer events
      tags:
      - plaid
      externalDocs:
        url: /api/products#bank_transfereventsync
      operationId: bankTransferEventSync
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankTransferEventSyncResponse'
              examples:
                example-1:
                  value:
                    bank_transfer_events:
                    - account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B
                      bank_transfer_amount: "12.34"
                      bank_transfer_id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9
                      bank_transfer_iso_currency_code: USD
                      bank_transfer_type: credit
                      direction: outbound
                      event_id: 1
                      event_type: pending
                      failure_reason: null
                      origination_account_id: null
                      receiver_details: null
                      timestamp: "2020-08-06T17:27:15Z"
                    request_id: mdqfuVxeoza6mhu
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BankTransferEventSyncRequest'
      description: '`/bank_transfer/event/sync` allows you to request up to the next 25 bank transfer events that happened after a specific `event_id`. Use the `/bank_transfer/event/sync` endpoint to guarantee you have seen all bank transfer events.'
  /bank_transfer/sweep/get:
    post:
      summary: Retrieve a sweep
      tags:
      - plaid
      externalDocs:
        url: /api/products#bank_transfersweepget
      operationId: bankTransferSweepGet
      responses:
        "200":
          description: OK
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankTransferSweepGetResponse'
              examples:
                example-1:
                  value:
                    sweep:
                      id: 0
                      transfer_id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9
                      created_at: "2020-08-06T17:27:15Z"
                      amount: "12.34"
                      iso_currency_code: USD
                      sweep_account:
                        account_number: "123456789"
                        routing_number: "111111111"
                    request_id: saKrIBuEB9qJZno
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      description: The `/bank_transfer/sweep/get` endpoint fetches information about the sweep corresponding to the given `sweep_id`.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BankTransferSweepGetRequest'
            examples: {}
      parameters: []
  /bank_transfer/balance/get:
    post:
      summary: Get balance of your Bank Transfer account
      tags:
      - plaid
      externalDocs:
        url: /api/products#bank_transferbalanceget
      operationId: bankTransferBalanceGet
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankTransferBalanceGetResponse'
              examples:
                example-1:
                  value:
                    balance:
                      available: "1721.70"
                      transactable: "721.70"
                    origination_account_id: 11111111-1111-1111-1111-111111111111
                    request_id: mdqfuVxeoza6mhu
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      description: |-
        Use the `/bank_transfer/balance/get` endpoint to see the available balance in your bank transfer account. Debit transfers increase this balance once their status is posted. Credit transfers decrease this balance when they are created.

        The transactable balance shows the amount in your account that you are able to use for transfers, and is essentially your available balance minus your minimum balance.

        Note that this endpoint can only be used with FBO accounts, when using Bank Transfers in the Full Service configuration. It cannot be used on your own account when using Bank Transfers in the BTS Platform configuration.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BankTransferBalanceGetRequest'
  /bank_transfer/migrate_account:
    post:
      summary: Migrate account into Bank Transfers
      tags:
      - plaid
      externalDocs:
        url: /api/products#bank_transfermigrate_account
      operationId: bankTransferMigrateAccount
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankTransferMigrateAccountResponse'
              examples:
                example-1:
                  value:
                    access_token: access-sandbox-435beced-94e8-4df3-a181-1dde1cfa19f0
                    account_id: zvyDgbeeDluZ43AJP6m5fAxDlgoZXDuoy5gjN
                    request_id: mdqfuVxeoza6mhu
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      description: As an alternative to adding Items via Link, you can also use the `/bank_transfer/migrate_account` endpoint to migrate known account and routing numbers to Plaid Items.  Note that Items created in this way are not compatible with endpoints for other products, such as `/accounts/balance/get`, and can only be used with Bank Transfer endpoints.  If you require access to other endpoints, create the Item through Link instead.  Access to `/bank_transfer/migrate_account` is not enabled by default; to obtain access, contact your Plaid Account Manager.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BankTransferMigrateAccountRequest'
  /sandbox/bank_transfer/simulate:
    post:
      summary: Simulate a bank transfer event in Sandbox
      tags:
      - plaid
      externalDocs:
        url: /api/sandbox/#sandboxbank_transfersimulate
      operationId: sandboxBankTransferSimulate
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SandboxBankTransferSimulateResponse'
              examples:
                example-1:
                  value:
                    request_id: mdqfuVxeoza6mhu
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      description: Use the `/sandbox/bank_transfer/simulate` endpoint to simulate a bank transfer event in the Sandbox environment.  Note that while an event will be simulated and will appear when using endpoints such as `/bank_transfer/event/sync` or `/bank_transfer/event/list`, no transactions will actually take place and funds will not move between accounts, even within the Sandbox.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SandboxBankTransferSimulateRequest'
  /sandbox/transfer/simulate:
    post:
      summary: Simulate a transfer event in Sandbox
      tags:
      - plaid
      externalDocs:
        url: /transfer/reference#sandboxtransfersimulate
      operationId: sandboxTransferSimulate
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SandboxTransferSimulateResponse'
              examples:
                example-1:
                  value:
                    request_id: mdqfuVxeoza6mhu
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      description: Use the `/sandbox/transfer/simulate` endpoint to simulate a transfer event in the Sandbox environment.  Note that while an event will be simulated and will appear when using endpoints such as `/transfer/event/sync` or `/transfer/event/list`, no transactions will actually take place and funds will not move between accounts, even within the Sandbox.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SandboxTransferSimulateRequest'
  /employers/search:
    post:
      tags:
      - plaid
      externalDocs:
        url: /api/employers/#employerssearch
      operationId: employersSearch
      summary: Search employer database
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmployersSearchResponse'
              examples:
                example-1:
                  value:
                    employers:
                    - name: Plaid Inc.
                      address:
                        city: San Francisco
                        country: US
                        postal_code: "94103"
                        region: CA
                        street: 1098 Harrison St
                      confidence_score: 1
                      employer_id: emp_1
                    request_id: ixTBLZGvhD4NnmB
      description: |-
        `/employers/search` allows you the ability to search Plaid’s database of known employers, for use with Deposit Switch. You can use this endpoint to look up a user's employer in order to confirm that they are supported. Users with non-supported employers can then be routed out of the Deposit Switch flow.

        The data in the employer database is currently limited. As the Deposit Switch and Income products progress through their respective beta periods, more employers are being regularly added. Because the employer database is frequently updated, we recommend that you do not cache or store data from this endpoint for more than a day.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmployersSearchRequest'
  /income/verification/create:
    post:
      summary: Create an income verification instance
      tags:
      - plaid
      deprecated: true
      externalDocs:
        url: /api/products/#incomeverificationcreate
      operationId: incomeVerificationCreate
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IncomeVerificationCreateResponse'
              examples:
                example-1:
                  value:
                    income_verification_id: f2a826d7-25cf-483b-a124-c40beb64b732
                    request_id: lMjeOeu9X1VUh1F
      description: '`/income/verification/create` begins the income verification process by returning an `income_verification_id`. You can then provide the `income_verification_id` to `/link/token/create` under the `income_verification` parameter in order to create a Link instance that will prompt the user to go through the income verification flow. Plaid will fire an `INCOME` webhook once the user completes the Payroll Income flow, or when the uploaded documents in the Document Income flow have finished processing. '
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IncomeVerificationCreateRequest'
  /income/verification/summary/get:
    post:
      summary: Retrieve a summary of information derived from income verification
      tags:
      - plaid
      externalDocs:
        url: /api/products/#incomeverificationsummaryget
      operationId: incomeVerificationSummaryGet
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IncomeVerificationSummaryGetResponse'
              examples:
                example-1:
                  value:
                    income_summaries:
                    - employee_name:
                        value: ANNA CHARLESTON
                        verification_status: UNVERIFIED
                      employer_name:
                        value: PLAID INC
                        verification_status: UNVERIFIED
                      pay_frequency:
                        value: semimonthly
                        verification_status: UNVERIFIED
                      projected_wage:
                        value: 100000
                        verification_status: UNVERIFIED
                      verified_transaction:
                        account_id: ""
                        amount: 0
                        date: ""
                        description: ""
                        transaction_id: ""
                      ytd_gross_income:
                        value: 59375
                        verification_status: UNVERIFIED
                      ytd_net_income:
                        value: 66205.35
                        verification_status: UNVERIFIED
                    request_id: LhQf0THi8SH1yJm
      description: '`/income/verification/summary/get` returns a verification summary for the income that was verified for an end user. It can be called once the status of the verification has been set to `VERIFICATION_STATUS_PROCESSING_COMPLETE`, as reported by the `INCOME: verification_status` webhook. Attempting to call the endpoint before verification has been completed will result in an error.'
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IncomeVerificationSummaryGetRequest'
  /income/verification/paystub/get:
    post:
      summary: (Deprecated) Retrieve information from a single paystub used for income verification
      deprecated: true
      tags:
      - plaid
      operationId: incomeVerificationPaystubGet
      responses:
        "200":
          description: OK
          content:
            application/json:
              examples:
                example-1:
                  value:
                    request_id: 2pxQ59buGdsHRef
                    document_metadata:
                      name: paystub.pdf
                      status: DOCUMENT_STATUS_PROCESSING_COMPLETE
                      doc_id: 2jkflanbd
                    paystub:
                      deductions:
                        subtotals: []
                        totals: []
                      doc_id: 2jkflanbd
                      earnings:
                        subtotals: []
                        totals: []
                      employee:
                        address:
                          city: SAN FRANCISCO
                          country: US
                          postal_code: "94133"
                          region: CA
                          street: 2140 TAYLOR ST
                        name: ANNA CHARLESTON
                      employer:
                        name: PLAID INC
                        address:
                          city: SAN FRANCISCO
                          country: US
                          postal_code: "94111"
                          region: CA
                          street: 1098 HARRISON ST
                      employment_details:
                        annual_salary:
                          amount: 60000
                          currency: USD
                        hire_date: "2020-09-15"
                      net_pay:
                        distribution_details: []
                        total:
                          canonical_description: NET PAY
                          description: TOTAL NET PAY
                          ytd_pay:
                            amount: 39456
                            currency: USD
                          current_pay:
                            amount: 1490.21
                            currency: USD
                      income_breakdown: []
                      pay_period_details:
                        check_amount: 1490.21
                        end_date: "2020-12-15"
                        gross_earnings: 4500
                        pay_day: "2020-12-15"
                        start_date: "2020-12-01"
                      paystub_details:
                        pay_frequency: BI-WEEKLY
                        paystub_provider: ADP
                        pay_period_start_date: "2020-12-01"
                        pay_period_end_date: "2020-12-15"
                        pay_date: "2020-12-15"
                      ytd_earnings:
                        gross_earnings: 59375
                        net_earnings: 39456
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IncomeVerificationPaystubGetRequest'
  /income/verification/paystubs/get:
    post:
      summary: Retrieve information from the paystubs used for income verification
      tags:
      - plaid
      externalDocs:
        url: /api/products/#incomeverificationpaystubsget
      operationId: incomeVerificationPaystubsGet
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IncomeVerificationPaystubsGetResponse'
              examples:
                example-1:
                  value:
                    request_id: 2pxQ59buGdsHRef
                    document_metadata:
                      name: paystub.pdf
                      status: DOCUMENT_STATUS_PROCESSING_COMPLETE
                      doc_id: 2jkflanbd
                    paystubs:
                      deductions:
                        subtotals: []
                        totals: []
                      doc_id: 2jkflanbd
                      earnings:
                        subtotals: []
                        totals: []
                      employee:
                        address:
                          city: SAN FRANCISCO
                          country: US
                          postal_code: "94133"
                          region: CA
                          street: 2140 TAYLOR ST
                        name: ANNA CHARLESTON
                      employer:
                        name: PLAID INC
                        address:
                          city: SAN FRANCISCO
                          country: US
                          postal_code: "94111"
                          region: CA
                          street: 1098 HARRISON ST
                      employment_details:
                        annual_salary:
                          amount: 60000
                          currency: USD
                        hire_date: "2020-09-15"
                      net_pay:
                        distribution_details: []
                        total:
                          canonical_description: NET PAY
                          description: TOTAL NET PAY
                          ytd_pay:
                            amount: 39456
                            currency: USD
                          current_pay:
                            amount: 1490.21
                            currency: USD
                      income_breakdown: []
                      pay_period_details:
                        check_amount: 1490.21
                        end_date: "2020-12-15"
                        gross_earnings: 4500
                        pay_day: "2020-12-15"
                        start_date: "2020-12-01"
                      paystub_details:
                        pay_frequency: BI-WEEKLY
                        paystub_provider: ADP
                        pay_period_start_date: "2020-12-01"
                        pay_period_end_date: "2020-12-15"
                        pay_date: "2020-12-15"
                      ytd_earnings:
                        gross_earnings: 59375
                        net_earnings: 39456
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IncomeVerificationPaystubsGetRequest'
      description: '`/income/verification/paystubs/get` returns the information collected from the paystubs that were used to verify an end user''s income. It can be called once the status of the verification has been set to `VERIFICATION_STATUS_PROCESSING_COMPLETE`, as reported by the `INCOME: verification_status` webhook. Attempting to call the endpoint before verification has been completed will result in an error.'
  /income/verification/documents/download:
    post:
      summary: Download the original documents used for income verification
      tags:
      - plaid
      externalDocs:
        url: /api/products/#incomeverificationdocumentsdownload
      operationId: incomeVerificationDocumentsDownload
      responses:
        "200":
          description: A ZIP file containing the source paystub(s) used as the basis for income verification.
          content:
            application/zip:
              schema:
                type: string
                format: binary
      description: |-
        `/income/verification/documents/download` provides the ability to download the source paystub PDF that the end user uploaded via Paystub Import.

        The response to `/income/verification/documents/download` is a ZIP file in binary data. The `request_id`  is returned in the `Plaid-Request-ID` header.

        For Payroll Income, the most recent file available for download with the payroll provider will also be available from this endpoint.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IncomeVerificationDocumentsDownloadRequest'
    parameters: []
  /income/verification/refresh:
    post:
      tags:
      - plaid
      summary: Refresh an income verification
      externalDocs:
        url: /api/products/#incomeverificationrefresh
      operationId: incomeVerificationRefresh
      description: '`/income/verification/refresh` refreshes a given income verification.'
      responses:
        "200":
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IncomeVerificationRefreshResponse'
        default:
          description: Error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IncomeVerificationRefreshRequest'
  /income/verification/taxforms/get:
    post:
      tags:
      - plaid
      summary: Retrieve information from the tax documents used for income verification
      externalDocs:
        url: /api/products#incomeverificationtaxformsget
      operationId: incomeVerificationTaxformsGet
      description: '`/income/verification/taxforms/get` returns the information collected from taxforms that were used to verify an end user''s. It can be called once the status of the verification has been set to `VERIFICATION_STATUS_PROCESSING_COMPLETE`, as reported by the `INCOME: verification_status` webhook. Attempting to call the endpoint before verification has been completed will result in an error.'
      responses:
        "200":
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IncomeVerificationTaxformsGetResponse'
        default:
          description: Error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IncomeVerificationTaxformsGetRequest'
  /deposit_switch/alt/create:
    post:
      summary: Create a deposit switch without using Plaid Exchange
      tags:
      - plaid
      externalDocs:
        url: /api/products#deposit_switchaltcreate
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DepositSwitchAltCreateResponse'
              examples:
                example-1:
                  value:
                    deposit_switch_id: c7jMwPPManIwy9rwMewWP7lpb4pKRbtrbMomp
                    request_id: lMjeOeu9X1VUh1F
      operationId: depositSwitchAltCreate
      description: This endpoint provides an alternative to `/deposit_switch/create` for customers who have not yet fully integrated with Plaid Exchange. Like `/deposit_switch/create`, it creates a deposit switch entity that will be persisted throughout the lifecycle of the switch.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DepositSwitchAltCreateRequest'
  /sandbox/bank_transfer/fire_webhook:
    post:
      summary: Manually fire a Bank Transfer webhook
      tags:
      - plaid
      externalDocs:
        url: /api/sandbox/#sandboxbank_transferfire_webhook
      operationId: sandboxBankTransferFireWebhook
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SandboxBankTransferFireWebhookResponse'
              examples:
                example-1:
                  value:
                    request_id: mdqfuVxeoza6mhu
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      description: Use the `/sandbox/bank_transfer/fire_webhook` endpoint to manually trigger a Bank Transfers webhook in the Sandbox environment.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SandboxBankTransferFireWebhookRequest'
  /sandbox/income/fire_webhook:
    post:
      summary: Manually fire an Income webhook
      tags:
      - plaid
      externalDocs:
        url: /api/sandbox/#sandboxincomefire_webhook
      operationId: sandboxIncomeFireWebhook
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SandboxIncomeFireWebhookResponse'
              examples:
                example-1:
                  value:
                    request_id: mdqfuVxeoza6mhu
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      description: Use the `/sandbox/income/fire_webhook` endpoint to manually trigger an Income webhook in the Sandbox environment.
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SandboxIncomeFireWebhookRequest'
  /sandbox/oauth/select_accounts:
    post:
      summary: Save the selected accounts when connecting to the Platypus Oauth institution
      tags:
      - plaid
      operationId: sandboxOauthSelectAccounts
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SandboxOauthSelectAccountsResponse'
        default:
          description: Error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SandboxOauthSelectAccountsRequest'
  /signal/evaluate:
    post:
      tags:
      - plaid
      summary: Evaluate a planned ACH transaction
      externalDocs:
        url: /signal/reference#signalevaluate
      operationId: signalEvaluate
      description: |-
        Use `/signal/evaluate` to evaluate a planned ACH transaction to get a return risk assessment (such as a risk score and risk tier) and additional risk signals.

        In order to obtain a valid score for an ACH transaction, Plaid must have an access token for the account, and the Item must be healthy (receiving product updates) or have recently been in a healthy state. If the transaction does not meet eligibility requirements, an error will be returned corresponding to the underlying cause.
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SignalEvaluateResponse'
              examples:
                example-1:
                  value:
                    scores:
                      customer_initiated_return_risk:
                        score: 9
                        risk_tier: 1
                      bank_initiated_return_risk:
                        score: 72
                        risk_tier: 7
                    core_attributes:
                      unauthorized_transactions_count_7d: 0
                      unauthorized_transactions_count_30d: 0
                      unauthorized_transactions_count_60d: 0
                      unauthorized_transactions_count_90d: 0
                      nsf_overdraft_transactions_count_7d: 1
                      nsf_overdraft_transactions_count_30d: 1
                      nsf_overdraft_transactions_count_60d: 2
                      nsf_overdraft_transactions_count_90d: 2
                      days_since_first_plaid_connection: 510
                      plaid_connections_count_7d: 6
                      plaid_connections_count_30d: 7
                      total_plaid_connections_count: 15
                      is_savings_or_money_market_account: false
                      total_credit_transactions_amount_10d: 507.04
                      total_debit_transactions_amount_10d: 590.14
                      p50_credit_transactions_amount_28d: 46.79
                      p50_debit_transactions_amount_28d: 75
                      p95_credit_transactions_amount_28d: 155.95
                      p95_debit_transactions_amount_28d: 799.59
                      days_with_negative_balance_count_90d: 0
                      p90_eod_balance_30d: 555.71
                      p90_eod_balance_60d: 449.96
                      p90_eod_balance_90d: 434.38
                      p10_eod_balance_30d: 320.44
                      p10_eod_balance_60d: 320.46
                      p10_eod_balance_90d: 320.23
                      available_balance: 420.22
                      current_balance: 476
                      balance_last_updated: "2021-02-25 09:18:21.787082"
                      phone_change_count_28d: 0
                      phone_change_count_90d: 0
                      email_change_count_28d: 0
                      email_change_count_90d: 0
                      address_change_count_28d: 0
                      address_change_count_90d: 0
                    request_id: mdqfuVxeoza6mhu
        default:
          description: Error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SignalEvaluateRequest'
  /signal/decision/report:
    post:
      tags:
      - plaid
      summary: Report whether you initiated an ACH transaction
      externalDocs:
        url: /signal/reference#signaldecisionreport
      operationId: signalDecisionReport
      description: After calling `/signal/evaluate`, call `/signal/decision/report` to report whether the transaction was initiated. This endpoint will return an `INVALID_REQUEST` error if called a second time with a different value for `initiated`.
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SignalDecisionReportResponse'
              examples:
                example-1:
                  value:
                    request_id: mdqfuVxeoza6mhu
        default:
          description: Error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SignalDecisionReportRequest'
  /signal/return/report:
    post:
      tags:
      - plaid
      summary: Report a return for an ACH transaction
      externalDocs:
        url: /signal/reference#signalreturnreport
      operationId: signalReturnReport
      description: Call the `/signal/return/report` endpoint to report a returned transaction that was previously sent to the `/signal/evaluate` endpoint. Your feedback will be used by the model to incorporate the latest risk trend in your portfolio.
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SignalReturnReportResponse'
              examples:
                example-1:
                  value:
                    request_id: mdqfuVxeoza6mhu
        default:
          description: Error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        description: Request payload
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SignalReturnReportRequest'
components:
  securitySchemes:
    clientId:
      type: apiKey
      in: header
      name: PLAID-CLIENT-ID
      description: Represents API Key `PLAID-CLIENT-ID`
    secret:
      type: apiKey
      in: header
      name: PLAID-SECRET
      description: Respresents API Key `PLAID-SECRET`
    plaidVersion:
      type: apiKey
      in: header
      name: Plaid-Version
      description: Respresents API Key `Plaid-Version`
  schemas:
    ItemGetRequest:
      description: ItemGetRequest defines the request schema for `/item/get`
      type: object
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        access_token:
          $ref: '#/components/schemas/AccessToken'
      required:
      - access_token
    ItemGetResponse:
      type: object
      additionalProperties: true
      description: ItemGetResponse defines the response schema for `/item/get` and `/item/webhook/update`
      properties:
        item:
          $ref: '#/components/schemas/Item'
        status:
          $ref: '#/components/schemas/ItemStatusNullable'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - item
      - request_id
    AuthGetRequest:
      type: object
      description: AuthGetRequest defines the request schema for `/auth/get`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        access_token:
          $ref: '#/components/schemas/AccessToken'
        options:
          $ref: '#/components/schemas/AuthGetRequestOptions'
      required:
      - access_token
    AuthGetRequestOptions:
      type: object
      description: An optional object to filter `/auth/get` results.
      properties:
        account_ids:
          type: array
          description: |-
            A list of `account_ids` to retrieve for the Item.
            Note: An error will be returned if a provided `account_id` is not associated with the Item.
          items:
            type: string
    AuthGetResponse:
      type: object
      additionalProperties: true
      description: AuthGetResponse defines the response schema for `/auth/get`
      properties:
        accounts:
          type: array
          description: The `accounts` for which numbers are being retrieved.
          items:
            $ref: '#/components/schemas/AccountBase'
        numbers:
          $ref: '#/components/schemas/AuthGetNumbers'
        item:
          $ref: '#/components/schemas/Item'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - accounts
      - numbers
      - item
      - request_id
    AuthGetNumbers:
      type: object
      additionalProperties: true
      description: An object containing identifying numbers used for making electronic transfers to and from the `accounts`. The identifying number type (ACH, EFT, IBAN, or BACS) used will depend on the country of the account. An account may have more than one number type. If a particular identifying number type is not used by any `accounts` for which data has been requested, the array for that type will be empty.
      properties:
        ach:
          type: array
          description: An array of ACH numbers identifying accounts.
          items:
            $ref: '#/components/schemas/NumbersACH'
        eft:
          type: array
          description: An array of EFT numbers identifying accounts.
          items:
            $ref: '#/components/schemas/NumbersEFT'
        international:
          type: array
          description: An array of IBAN numbers identifying accounts.
          items:
            $ref: '#/components/schemas/NumbersInternational'
        bacs:
          type: array
          description: An array of BACS numbers identifying accounts.
          items:
            $ref: '#/components/schemas/NumbersBACS'
      required:
      - ach
      - eft
      - international
      - bacs
    TransactionsGetRequest:
      type: object
      description: TransactionsGetRequest defines the request schema for `/transactions/get`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        options:
          $ref: '#/components/schemas/TransactionsGetRequestOptions'
        access_token:
          $ref: '#/components/schemas/AccessToken'
        secret:
          $ref: '#/components/schemas/APISecret'
        start_date:
          type: string
          format: date
          description: The earliest date for which data should be returned. Dates should be formatted as YYYY-MM-DD.
        end_date:
          type: string
          format: date
          description: The latest date for which data should be returned. Dates should be formatted as YYYY-MM-DD.
      required:
      - access_token
      - start_date
      - end_date
    TransactionsGetRequestOptions:
      type: object
      description: An optional object to be used with the request. If specified, `options` must not be `null`.
      properties:
        account_ids:
          type: array
          description: |-
            A list of `account_ids` to retrieve for the Item

            Note: An error will be returned if a provided `account_id` is not associated with the Item.
          items:
            type: string
        count:
          type: integer
          default: 100
          description: The number of transactions to fetch.
          minimum: 1
          maximum: 500
          exclusiveMinimum: false
        offset:
          type: integer
          default: 0
          description: The number of transactions to skip. The default value is 0.
          minimum: 0
        include_original_description:
          type: boolean
          default: false
          description: Include the raw unparsed transaction description from the financial institution. This field is disabled by default. If you need this information in addition to the parsed data provided, contact your Plaid Account Manager.
          nullable: true
    TransactionsGetResponse:
      type: object
      additionalProperties: true
      description: TransactionsGetResponse defines the response schema for `/transactions/get`
      properties:
        accounts:
          type: array
          description: An array containing the `accounts` associated with the Item for which transactions are being returned. Each transaction can be mapped to its corresponding account via the `account_id` field.
          items:
            $ref: '#/components/schemas/AccountBase'
        transactions:
          type: array
          description: An array containing transactions from the account. Transactions are returned in reverse chronological order, with the most recent at the beginning of the array. The maximum number of transactions returned is determined by the `count` parameter.
          items:
            $ref: '#/components/schemas/Transaction'
        total_transactions:
          type: integer
          description: The total number of transactions available within the date range specified. If `total_transactions` is larger than the size of the `transactions` array, more transactions are available and can be fetched via manipulating the `offset` parameter.
        item:
          $ref: '#/components/schemas/Item'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - accounts
      - transactions
      - total_transactions
      - item
      - request_id
    TransactionsRefreshRequest:
      type: object
      description: TransactionsRefreshRequest defines the request schema for `/transactions/refresh`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        access_token:
          $ref: '#/components/schemas/AccessToken'
        secret:
          $ref: '#/components/schemas/APISecret'
      required:
      - access_token
    TransactionsRefreshResponse:
      type: object
      description: TransactionsRefreshResponse defines the response schema for `/transactions/refresh`
      properties:
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - request_id
    InstitutionsGetRequest:
      type: object
      description: InstitutionsGetRequest defines the request schema for `/institutions/get`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        count:
          type: integer
          maximum: 500
          description: The total number of Institutions to return.
        offset:
          type: integer
          description: The number of Institutions to skip.
        country_codes:
          type: array
          description: |
            Specify an array of Plaid-supported country codes this institution supports, using the ISO-3166-1 alpha-2 country code standard.
          minItems: 1
          items:
            $ref: '#/components/schemas/CountryCode'
        options:
          $ref: '#/components/schemas/InstitutionsGetRequestOptions'
      required:
      - count
      - offset
      - country_codes
    InstitutionsGetRequestOptions:
      type: object
      description: An optional object to filter `/institutions/get` results.
      properties:
        products:
          type: array
          description: 'Filter the Institutions based on which products they support. '
          items:
            $ref: '#/components/schemas/Products'
        routing_numbers:
          type: array
          description: Specify an array of routing numbers to filter institutions. The response will only return institutions that match all of the routing numbers in the array.
          items:
            type: string
        oauth:
          type: boolean
          description: Limit results to institutions with or without OAuth login flows. This is primarily relevant to institutions with European country codes.
        include_optional_metadata:
          type: boolean
          description: |-
            When `true`, return the institution's homepage URL, logo and primary brand color.

            Note that Plaid does not own any of the logos shared by the API, and that by accessing or using these logos, you agree that you are doing so at your own risk and will, if necessary, obtain all required permissions from the appropriate rights holders and adhere to any applicable usage guidelines. Plaid disclaims all express or implied warranties with respect to the logos.
        include_payment_initiation_metadata:
          type: boolean
          default: false
          description: When `true`, returns metadata related to the Payment Initiation product indicating which payment configurations are supported.
    InstitutionsGetResponse:
      type: object
      additionalProperties: true
      description: InstitutionsGetResponse defines the response schema for `/institutions/get`
      properties:
        institutions:
          type: array
          description: A list of Plaid Institution
          items:
            $ref: '#/components/schemas/Institution'
        total:
          type: integer
          description: The total number of institutions available via this endpoint
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - institutions
      - total
      - request_id
    InstitutionsSearchRequest:
      type: object
      description: InstitutionsSearchRequest defines the request schema for `/institutions/search`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        query:
          type: string
          description: The search query. Institutions with names matching the query are returned
        products:
          type: array
          description: Filter the Institutions based on whether they support all products listed in `products`. Provide `null` to get institutions regardless of supported products. Note that when `auth` is specified as a product, if you are enabled for Instant Match or Automated Micro-deposits, institutions that support those products will be returned even if `auth` is not present in their product array.
          minItems: 1
          items:
            $ref: '#/components/schemas/Products'
        country_codes:
          type: array
          description: |
            Specify an array of Plaid-supported country codes this institution supports, using the ISO-3166-1 alpha-2 country code standard.
          items:
            $ref: '#/components/schemas/CountryCode'
        options:
          $ref: '#/components/schemas/InstitutionsSearchRequestOptions'
      required:
      - query
      - products
      - country_codes
    InstitutionsSearchRequestOptions:
      type: object
      description: An optional object to filter `/institutions/search` results.
      properties:
        oauth:
          type: boolean
          description: Limit results to institutions with or without OAuth login flows. This is primarily relevant to institutions with European country codes
        include_optional_metadata:
          type: boolean
          description: When true, return the institution's homepage URL, logo and primary brand color.
        include_payment_initiation_metadata:
          type: boolean
          default: false
          description: When `true`, returns metadata related to the Payment Initiation product indicating which payment configurations are supported.
        payment_initiation:
          $ref: '#/components/schemas/InstitutionsSearchPaymentInitiationOptions'
    InstitutionsSearchPaymentInitiationOptions:
      type: object
      description: Additional options that will be used to filter institutions by various Payment Initiation configurations.
      additionalProperties: true
      nullable: true
      properties:
        payment_id:
          type: string
          description: A unique ID identifying the payment
    InstitutionsSearchResponse:
      type: object
      additionalProperties: true
      description: InstitutionsSearchResponse defines the response schema for `/institutions/search`
      properties:
        institutions:
          type: array
          description: An array of institutions matching the search criteria
          items:
            $ref: '#/components/schemas/Institution'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - institutions
      - request_id
    InstitutionsGetByIdRequest:
      type: object
      description: InstitutionsGetByIdRequest defines the request schema for `/institutions/get_by_id`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        institution_id:
          type: string
          description: The ID of the institution to get details about
        country_codes:
          type: array
          description: |
            Specify an array of Plaid-supported country codes this institution supports, using the ISO-3166-1 alpha-2 country code standard.
          items:
            $ref: '#/components/schemas/CountryCode'
        options:
          $ref: '#/components/schemas/InstitutionsGetByIdRequestOptions'
      required:
      - institution_id
      - country_codes
    InstitutionsGetByIdRequestOptions:
      type: object
      description: Specifies optional parameters for `/institutions/get_by_id`. If provided, must not be `null`.
      properties:
        include_optional_metadata:
          default: false
          type: boolean
          description: |-
            When `true`, return an institution's logo, brand color, and URL. When available, the bank's logo is returned as a base64 encoded 152x152 PNG, the brand color is in hexadecimal format. The default value is `false`.

            Note that Plaid does not own any of the logos shared by the API and that by accessing or using these logos, you agree that you are doing so at your own risk and will, if necessary, obtain all required permissions from the appropriate rights holders and adhere to any applicable usage guidelines. Plaid disclaims all express or implied warranties with respect to the logos.
        include_status:
          type: boolean
          default: false
          description: If `true`, the response will include status information about the institution. Default value is `false`.
        include_payment_initiation_metadata:
          type: boolean
          default: false
          description: When `true`, returns metadata related to the Payment Initiation product indicating which payment configurations are supported.
    InstitutionsGetByIdResponse:
      type: object
      additionalProperties: true
      description: InstitutionsGetByIdResponse defines the response schema for `/institutions/get_by_id`
      properties:
        institution:
          $ref: '#/components/schemas/Institution'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - institution
      - request_id
    ItemRemoveRequest:
      type: object
      description: ItemRemoveRequest defines the request schema for `/item/remove`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        access_token:
          $ref: '#/components/schemas/AccessToken'
      required:
      - access_token
    ItemRemoveResponse:
      type: object
      additionalProperties: true
      description: ItemRemoveResponse defines the response schema for `/item/remove`
      properties:
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - request_id
    AccountsGetRequest:
      type: object
      description: AccountsGetRequest defines the request schema for `/accounts/get`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        access_token:
          $ref: '#/components/schemas/AccessToken'
        options:
          $ref: '#/components/schemas/AccountsGetRequestOptions'
      required:
      - access_token
      x-examples:
        example-1: {}
    AccountsGetRequestOptions:
      type: object
      description: An optional object to filter `/accounts/get` results.
      properties:
        account_ids:
          type: array
          description: An array of `account_ids` to retrieve for the Account.
          items:
            type: string
    AccountsGetResponse:
      type: object
      additionalProperties: true
      description: AccountsGetResponse defines the response schema for `/accounts/get` and `/accounts/balance/get`.
      properties:
        accounts:
          type: array
          description: |-
            An array of financial institution accounts associated with the Item.
            If `/accounts/balance/get` was called, each account will include real-time balance information.
          items:
            $ref: '#/components/schemas/AccountBase'
        item:
          $ref: '#/components/schemas/Item'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - accounts
      - item
      - request_id
    CategoriesGetRequest:
      type: object
      description: CategoriesGetRequest defines the request schema for `/categories/get`
    CategoriesGetResponse:
      type: object
      additionalProperties: true
      description: CategoriesGetResponse defines the response schema for `/categories/get`
      properties:
        categories:
          type: array
          description: An array of all of the transaction categories used by Plaid.
          items:
            $ref: '#/components/schemas/Category'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - categories
      - request_id
    SandboxOverridePassword:
      type: string
      nullable: true
      default: pass_good
      description: Test password to use for the creation of the Sandbox Item. Default value is `pass_good`.
    SandboxOverrideUsername:
      type: string
      nullable: true
      default: user_good
      description: Test username to use for the creation of the Sandbox Item. Default value is `user_good`.
    SandboxProcessorTokenCreateRequest:
      type: object
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        institution_id:
          type: string
          description: The ID of the institution the Item will be associated with
        options:
          $ref: '#/components/schemas/SandboxProcessorTokenCreateRequestOptions'
      required:
      - institution_id
    SandboxProcessorTokenCreateRequestOptions:
      type: object
      description: An optional set of options to be used when configuring the Item. If specified, must not be `null`.
      properties:
        override_username:
          $ref: '#/components/schemas/SandboxOverrideUsername'
        override_password:
          $ref: '#/components/schemas/SandboxOverridePassword'
    SandboxProcessorTokenCreateResponse:
      type: object
      additionalProperties: true
      properties:
        processor_token:
          type: string
          description: A processor token that can be used to call the `/processor/` endpoints.
        request_id:
          $ref: '#/components/schemas/RequestID'
      description: ""
      required:
      - processor_token
      - request_id
    SandboxPublicTokenCreateRequest:
      type: object
      description: SandboxPublicTokenCreateRequest defines the request schema for `/sandbox/public_token/create`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        institution_id:
          type: string
          description: The ID of the institution the Item will be associated with
        initial_products:
          type: array
          description: The products to initially pull for the Item. May be any products that the specified `institution_id`  supports. This array may not be empty.
          items:
            $ref: '#/components/schemas/Products'
          minItems: 1
        options:
          $ref: '#/components/schemas/SandboxPublicTokenCreateRequestOptions'
      required:
      - institution_id
      - initial_products
    SandboxPublicTokenCreateRequestOptions:
      type: object
      description: An optional set of options to be used when configuring the Item. If specified, must not be `null`.
      properties:
        webhook:
          type: string
          description: Specify a webhook to associate with the new Item.
        override_username:
          $ref: '#/components/schemas/SandboxOverrideUsername'
        override_password:
          $ref: '#/components/schemas/SandboxOverridePassword'
        transactions:
          $ref: '#/components/schemas/SandboxPublicTokenCreateRequestOptionsTransactions'
    SandboxPublicTokenCreateRequestOptionsTransactions:
      type: object
      description: SandboxPublicTokenCreateRequestOptionsTransactions is an optional set of parameters corresponding to transactions options.
      properties:
        start_date:
          type: string
          format: date
          description: The earliest date for which to fetch transaction history. Dates should be formatted as YYYY-MM-DD.
        end_date:
          type: string
          format: date
          description: The most recent date for which to fetch transaction history. Dates should be formatted as YYYY-MM-DD.
      title: SandboxPublicTokenCreateRequestOptionsTransactions
    SandboxPublicTokenCreateResponse:
      type: object
      additionalProperties: true
      description: SandboxPublicTokenCreateResponse defines the response schema for `/sandbox/public_token/create`
      properties:
        public_token:
          type: string
          description: A public token that can be exchanged for an access token using `/item/public_token/exchange`
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - public_token
      - request_id
    SandboxItemFireWebhookRequest:
      type: object
      description: SandboxItemFireWebhookRequest defines the request schema for `/sandbox/item/fire_webhook`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        access_token:
          $ref: '#/components/schemas/AccessToken'
        webhook_code:
          type: string
          enum:
          - DEFAULT_UPDATE
          description: |-
            The following values for `webhook_code` are supported:

            * `DEFAULT_UPDATE`
      required:
      - access_token
      - webhook_code
    SandboxItemFireWebhookResponse:
      type: object
      additionalProperties: true
      description: SandboxItemFireWebhookResponse defines the response schema for `/sandbox/item/fire_webhook`
      properties:
        webhook_fired:
          type: boolean
          description: Value is `true`  if the test` webhook_code`  was successfully fired.
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - webhook_fired
      - request_id
    AccountsBalanceGetRequest:
      type: object
      description: AccountsBalanceGetRequest defines the request schema for `/accounts/balance/get`
      properties:
        access_token:
          $ref: '#/components/schemas/AccessToken'
        secret:
          $ref: '#/components/schemas/APISecret'
        client_id:
          $ref: '#/components/schemas/APIClientID'
        options:
          $ref: '#/components/schemas/AccountsBalanceGetRequestOptions'
      required:
      - access_token
    AccountsBalanceGetRequestOptions:
      type: object
      description: An optional object to filter `/accounts/balance/get` results.
      properties:
        account_ids:
          type: array
          description: |-
            A list of `account_ids` to retrieve for the Item. The default value is `null`.

            Note: An error will be returned if a provided `account_id` is not associated with the Item.
          items:
            type: string
        min_last_updated_datetime:
          $ref: '#/components/schemas/MinLastUpdatedDatetime'
    MinLastUpdatedDatetime:
      title: MinLastUpdatedDatetime
      type: string
      format: date-time
      description: |-
        Timestamp in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDTHH:mm:ssZ`) indicating the oldest acceptable balance when making a request to `/accounts/balance/get`.

        If the balance that is pulled for `ins_128026` (Capital One) is older than the given timestamp, an `INVALID_REQUEST` error with the code of `LAST_UPDATED_DATETIME_OUT_OF_RANGE` will be returned with the most recent timestamp for the requested account contained in the response.

        This field is only used when the institution is `ins_128026` (Capital One), in which case a value must be provided or an `INVALID_REQUEST` error with the code of `INVALID_FIELD` will be returned. For all other institutions, this field is ignored.
    IdentityGetRequest:
      type: object
      description: IdentityGetRequest defines the request schema for `/identity/get`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        access_token:
          $ref: '#/components/schemas/AccessToken'
        options:
          $ref: '#/components/schemas/IdentityGetRequestOptions'
      required:
      - access_token
    IdentityGetRequestOptions:
      type: object
      description: An optional object to filter `/identity/get` results.
      properties:
        account_ids:
          type: array
          description: |-
            A list of `account_ids` to retrieve for the Item.
            Note: An error will be returned if a provided `account_id` is not associated with the Item.
          items:
            type: string
    IdentityGetResponse:
      type: object
      additionalProperties: true
      description: IdentityGetResponse defines the response schema for `/identity/get`
      properties:
        accounts:
          type: array
          description: The accounts for which Identity data has been requested
          items:
            $ref: '#/components/schemas/AccountIdentity'
        item:
          $ref: '#/components/schemas/Item'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - accounts
      - item
      - request_id
    ProcessorAuthGetRequest:
      type: object
      description: ProcessorAuthGetRequest defines the request schema for `/processor/auth/get`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        processor_token:
          $ref: '#/components/schemas/ProcessorToken'
      required:
      - processor_token
    ProcessorAuthGetResponse:
      type: object
      additionalProperties: true
      description: ProcessorAuthGetResponse defines the response schema for `/processor/auth/get`
      properties:
        request_id:
          $ref: '#/components/schemas/RequestID'
        numbers:
          $ref: '#/components/schemas/ProcessorNumber'
        account:
          $ref: '#/components/schemas/AccountBase'
      required:
      - request_id
      - numbers
      - account
    ProcessorBankTransferCreateRequest:
      title: ProcessorBankTransferCreateRequest
      type: object
      description: Defines the request schema for `/processor/bank_transfer/create`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        idempotency_key:
          $ref: '#/components/schemas/BankTransferIdempotencyKey'
        processor_token:
          $ref: '#/components/schemas/ProcessorToken'
        type:
          $ref: '#/components/schemas/BankTransferType'
        network:
          $ref: '#/components/schemas/BankTransferNetwork'
        amount:
          $ref: '#/components/schemas/BankTransferAmount'
        iso_currency_code:
          type: string
          description: The currency of the transfer amount – should be set to "USD".
        description:
          type: string
          description: The transfer description. Maximum of 10 characters.
          maxLength: 10
        ach_class:
          $ref: '#/components/schemas/ACHClass'
        user:
          $ref: '#/components/schemas/BankTransferUser'
        custom_tag:
          type: string
          maxLength: 100
          nullable: true
          description: An arbitrary string provided by the client for storage with the bank transfer. May be up to 100 characters.
        metadata:
          $ref: '#/components/schemas/BankTransferMetadata'
        origination_account_id:
          type: string
          nullable: true
          description: Plaid’s unique identifier for the origination account for this transfer. If you have more than one origination account, this value must be specified.
      required:
      - idempotency_key
      - processor_token
      - type
      - network
      - amount
      - iso_currency_code
      - description
      - user
    ProcessorBankTransferCreateResponse:
      title: ProcessorBankTransferCreateResponse
      type: object
      additionalProperties: true
      description: Defines the response schema for `/processor/bank_transfer/create`
      properties:
        bank_transfer:
          $ref: '#/components/schemas/BankTransfer'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - bank_transfer
      - request_id
    ProcessorNumber:
      type: object
      additionalProperties: true
      description: An object containing identifying numbers used for making electronic transfers to and from the `account`. The identifying number type (ACH, EFT, IBAN, or BACS) used will depend on the country of the account. An account may have more than one number type. If a particular identifying number type is not used by the `account` for which auth data has been requested, a null value will be returned.
      properties:
        ach:
          $ref: '#/components/schemas/NumbersACHNullable'
        eft:
          $ref: '#/components/schemas/NumbersEFTNullable'
        international:
          $ref: '#/components/schemas/NumbersInternationalNullable'
        bacs:
          $ref: '#/components/schemas/NumbersBACSNullable'
    ProcessorIdentityGetRequest:
      type: object
      description: ProcessorIdentityGetRequest defines the request schema for `/processor/identity/get`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        processor_token:
          $ref: '#/components/schemas/ProcessorToken'
      required:
      - processor_token
    ProcessorIdentityGetResponse:
      type: object
      additionalProperties: true
      description: ProcessorIdentityGetResponse defines the response schema for `/processor/identity/get`
      properties:
        account:
          $ref: '#/components/schemas/AccountIdentity'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - account
      - request_id
    ProcessorBalanceGetRequest:
      type: object
      description: ProcessorBalanceGetRequest defines the request schema for `/processor/balance/get`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        processor_token:
          $ref: '#/components/schemas/ProcessorToken'
        options:
          $ref: '#/components/schemas/ProcessorBalanceGetRequestOptions'
      required:
      - processor_token
    ProcessorBalanceGetRequestOptions:
      type: object
      description: An optional object to filter `/processor/balance/get` results.
      properties:
        min_last_updated_datetime:
          $ref: '#/components/schemas/MinLastUpdatedDatetime'
    ProcessorBalanceGetResponse:
      type: object
      additionalProperties: true
      description: ProcessorBalanceGetResponse defines the response schema for `/processor/balance/get`
      properties:
        account:
          $ref: '#/components/schemas/AccountBase'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - account
      - request_id
    ItemWebhookUpdateRequest:
      type: object
      description: ItemWebhookUpdateRequest defines the request schema for `/item/webhook/update`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        access_token:
          $ref: '#/components/schemas/AccessToken'
        webhook:
          type: string
          description: The new webhook URL to associate with the Item.
      required:
      - access_token
      - webhook
    ItemWebhookUpdateResponse:
      type: object
      additionalProperties: true
      description: ItemWebhookUpdateResponse defines the response schema for `/item/webhook/update`
      properties:
        item:
          $ref: '#/components/schemas/Item'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - item
      - request_id
    ItemAccessTokenInvalidateRequest:
      type: object
      description: ItemAccessTokenInvalidateRequest defines the request schema for `/item/access_token/invalidate`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        access_token:
          $ref: '#/components/schemas/AccessToken'
      required:
      - access_token
    ItemAccessTokenInvalidateResponse:
      type: object
      additionalProperties: true
      description: ItemAccessTokenInvalidateResponse defines the response schema for `/item/access_token/invalidate`
      properties:
        new_access_token:
          $ref: '#/components/schemas/AccessToken'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - new_access_token
      - request_id
    WebhookVerificationKeyGetRequest:
      type: object
      description: WebhookVerificationKeyGetRequest defines the request schema for `/webhook_verification_key/get`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        key_id:
          type: string
          description: The key ID ( `kid` ) from the JWT header.
      required:
      - key_id
    WebhookVerificationKeyGetResponse:
      type: object
      additionalProperties: true
      description: WebhookVerificationKeyGetResponse defines the response schema for `/webhook_verification_key/get`
      properties:
        key:
          $ref: '#/components/schemas/JWKPublicKey'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - key
      - request_id
    JWKPublicKey:
      type: object
      additionalProperties: true
      description: A JSON Web Key (JWK) that can be used in conjunction with [JWT libraries](https://jwt.io/#libraries-io) to verify Plaid webhooks
      properties:
        alg:
          type: string
          description: The alg member identifies the cryptographic algorithm family used with the key.
        crv:
          type: string
          description: The crv member identifies the cryptographic curve used with the key.
        kid:
          type: string
          description: The kid (Key ID) member can be used to match a specific key. This can be used, for instance, to choose among a set of keys within the JWK during key rollover.
        kty:
          type: string
          description: The kty (key type) parameter identifies the cryptographic algorithm family used with the key, such as RSA or EC.
        use:
          type: string
          description: The use (public key use) parameter identifies the intended use of the public key.
        x:
          type: string
          description: The x member contains the x coordinate for the elliptic curve point.
        "y":
          type: string
          description: The y member contains the y coordinate for the elliptic curve point.
        created_at:
          type: integer
          description: The timestamp when the key was created, in Unix time.
        expired_at:
          type: integer
          description: The timestamp when the key expired, in Unix time.
          nullable: true
      required:
      - alg
      - kid
      - kty
      - crv
      - x
      - "y"
      - use
      - created_at
      - expired_at
    LiabilitiesGetRequest:
      type: object
      description: LiabilitiesGetRequest defines the request schema for `/liabilities/get`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        access_token:
          $ref: '#/components/schemas/AccessToken'
        options:
          $ref: '#/components/schemas/LiabilitiesGetRequestOptions'
      required:
      - access_token
    LiabilitiesGetRequestOptions:
      type: object
      description: An optional object to filter `/liabilities/get` results. If provided, `options` cannot be null.
      properties:
        account_ids:
          type: array
          description: |-
            A list of accounts to retrieve for the Item.

            An error will be returned if a provided `account_id` is not associated with the Item
          items:
            type: string
    LiabilitiesGetResponse:
      type: object
      additionalProperties: true
      description: LiabilitiesGetResponse defines the response schema for `/liabilities/get`
      properties:
        accounts:
          type: array
          description: An array of accounts associated with the Item
          items:
            $ref: '#/components/schemas/AccountBase'
        item:
          $ref: '#/components/schemas/Item'
        liabilities:
          $ref: '#/components/schemas/LiabilitiesObject'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - accounts
      - item
      - liabilities
      - request_id
    PaymentInitiationRecipientCreateRequest:
      type: object
      description: PaymentInitiationRecipientCreateRequest defines the request schema for `/payment_initiation/recipient/create`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        name:
          type: string
          description: The name of the recipient
          minLength: 1
        iban:
          type: string
          description: The International Bank Account Number (IBAN) for the recipient. If BACS data is not provided, an IBAN is required.
          nullable: true
          minLength: 15
          maxLength: 34
        bacs:
          $ref: '#/components/schemas/RecipientBACSNullable'
        address:
          $ref: '#/components/schemas/PaymentInitiationAddress'
      required:
      - name
    PaymentInitiationRecipientCreateResponse:
      type: object
      additionalProperties: true
      description: PaymentInitiationRecipientCreateResponse defines the response schema for `/payment_initation/recipient/create`
      properties:
        recipient_id:
          type: string
          description: A unique ID identifying the recipient
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - recipient_id
      - request_id
    PaymentInitiationRecipientGetRequest:
      type: object
      description: PaymentInitiationRecipientGetRequest defines the request schema for `/payment_initiation/recipient/get`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        recipient_id:
          type: string
          description: The ID of the recipient
          minLength: 1
      required:
      - recipient_id
    PaymentInitiationRecipientGetResponse:
      additionalProperties: true
      description: PaymentInitiationRecipientGetResponse defines the response schema for `/payment_initiation/recipient/get`
      allOf:
      - $ref: '#/components/schemas/PaymentInitiationRecipient'
      - type: object
        properties:
          request_id:
            $ref: '#/components/schemas/RequestID'
      required:
      - recipient_id
      - name
      - request_id
    PaymentInitiationRecipient:
      type: object
      additionalProperties: true
      description: PaymentInitiationRecipient defines a payment initiation recipient
      properties:
        recipient_id:
          type: string
          description: The ID of the recipient.
        name:
          type: string
          description: The name of the recipient.
        address:
          $ref: '#/components/schemas/PaymentInitiationAddress'
        iban:
          type: string
          description: The International Bank Account Number (IBAN) for the recipient.
          nullable: true
        bacs:
          $ref: '#/components/schemas/RecipientBACSNullable'
        emi_recipient_id:
          type: string
          description: The EMI (E-Money Institution) recipient that this recipient is associated with, if any. This EMI recipient is used as an intermediary account to enable Plaid to reconcile the settlement of funds for Payment Initiation requests.
          nullable: true
      required:
      - recipient_id
      - name
      title: PaymentInitiationRecipient
    PaymentInitiationRecipientListRequest:
      type: object
      description: PaymentInitiationRecipientListRequest defines the request schema for `/payment_initiation/recipient/list`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
    PaymentInitiationRecipientListResponse:
      type: object
      additionalProperties: true
      description: PaymentInitiationRecipientListResponse defines the response schema for `/payment_initiation/recipient/list`
      properties:
        recipients:
          type: array
          description: An array of payment recipients created for Payment Initiation
          items:
            $ref: '#/components/schemas/PaymentInitiationRecipient'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - recipients
      - request_id
    PaymentInitiationPaymentCreateRequest:
      type: object
      description: PaymentInitiationPaymentCreateRequest defines the request schema for `/payment_initiation/payment/create`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        recipient_id:
          type: string
          description: The ID of the recipient the payment is for.
          minLength: 1
        reference:
          type: string
          description: A reference for the payment. This must be an alphanumeric string with at most 18 characters and must not contain any special characters (since not all institutions support them).
          minLength: 1
          maxLength: 18
        amount:
          $ref: '#/components/schemas/PaymentAmount'
        schedule:
          $ref: '#/components/schemas/ExternalPaymentScheduleRequest'
        options:
          $ref: '#/components/schemas/ExternalPaymentOptions'
      required:
      - recipient_id
      - reference
      - amount
    PaymentInitiationPaymentCreateResponse:
      type: object
      additionalProperties: true
      description: PaymentInitiationPaymentCreateResponse defines the response schema for `/payment_initiation/payment/create`
      properties:
        payment_id:
          type: string
          description: A unique ID identifying the payment
        status:
          type: string
          enum:
          - PAYMENT_STATUS_INPUT_NEEDED
          description: |-
            For a payment returned by this endpoint, there is only one possible value:

            `PAYMENT_STATUS_INPUT_NEEDED`: The initial phase of the payment
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - payment_id
      - status
      - request_id
    SandboxItemResetLoginRequest:
      type: object
      description: SandboxItemResetLoginRequest defines the request schema for `/sandbox/item/reset_login`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        access_token:
          $ref: '#/components/schemas/AccessToken'
      required:
      - access_token
    SandboxItemResetLoginResponse:
      type: object
      additionalProperties: true
      description: SandboxItemResetLoginResponse defines the response schema for `/sandbox/item/reset_login`
      properties:
        reset_login:
          type: boolean
          description: '`true` if the call succeeded'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - reset_login
      - request_id
    SandboxItemSetVerificationStatusRequest:
      type: object
      description: SandboxItemSetVerificationStatusRequest defines the request schema for `/sandbox/item/set_verification_status`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        access_token:
          $ref: '#/components/schemas/AccessToken'
        account_id:
          type: string
          description: The `account_id` of the account whose verification status is to be modified
        verification_status:
          enum:
          - automatically_verified
          - verification_expired
          type: string
          description: The verification status to set the account to.
      required:
      - access_token
      - account_id
      - verification_status
    SandboxItemSetVerificationStatusResponse:
      type: object
      additionalProperties: true
      description: SandboxItemSetVerificationStatusResponse defines the response schema for `/sandbox/item/set_verification_status`
      properties:
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - request_id
    ItemPublicTokenExchangeRequest:
      type: object
      description: ItemPublicTokenExchangeRequest defines the request schema for `/item/public_token/exchange`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        public_token:
          type: string
          description: Your `public_token`, obtained from the Link `onSuccess` callback or `/sandbox/item/public_token/create`.
      required:
      - public_token
    ItemPublicTokenExchangeResponse:
      type: object
      additionalProperties: true
      description: ItemPublicTokenExchangeResponse defines the response schema for `/item/public_token/exchange`
      properties:
        access_token:
          $ref: '#/components/schemas/AccessToken'
        item_id:
          type: string
          description: The `item_id` value of the Item associated with the returned `access_token`
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - access_token
      - item_id
      - request_id
    ItemPublicTokenCreateRequest:
      type: object
      description: ItemPublicTokenCreateRequest defines the request schema for `/item/public_token/create`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        access_token:
          $ref: '#/components/schemas/AccessToken'
      required:
      - access_token
    ItemPublicTokenCreateResponse:
      type: object
      additionalProperties: true
      description: ItemPublicTokenCreateResponse defines the response schema for `/item/public_token/create`
      properties:
        public_token:
          type: string
          description: A `public_token` for the particular Item corresponding to the specified `access_token`
        expiration:
          type: string
          format: date-time
          description: The RFC 3339 timestamp after which the token will expire. 
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - public_token
      - request_id
    PaymentInitiationPaymentGetRequest:
      type: object
      description: PaymentInitiationPaymentGetRequest defines the request schema for `/payment_initiation/payment/get`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        payment_id:
          type: string
          description: The `payment_id` returned from `/payment_initiation/payment/create`.
          minLength: 1
      required:
      - payment_id
    PaymentInitiationPaymentGetResponse:
      additionalProperties: true
      description: PaymentInitiationPaymentGetResponse defines the response schema for `/payment_initation/payment/get`
      allOf:
      - $ref: '#/components/schemas/PaymentInitiationPayment'
      - type: object
        properties:
          request_id:
            $ref: '#/components/schemas/RequestID'
      required:
      - request_id
      - payment_id
      - amount
      - status
      - recipient_id
      - reference
      - last_status_update
      - bacs
      - iban
    PaymentInitiationPayment:
      type: object
      additionalProperties: true
      description: PaymentInitiationPayment defines a payment initiation payment
      properties:
        payment_id:
          type: string
          description: The ID of the payment. Like all Plaid identifiers, the `payment_id` is case sensitive.
        amount:
          $ref: '#/components/schemas/PaymentAmount'
        status:
          type: string
          enum:
          - PAYMENT_STATUS_INPUT_NEEDED
          - PAYMENT_STATUS_PROCESSING
          - PAYMENT_STATUS_INITIATED
          - PAYMENT_STATUS_COMPLETED
          - PAYMENT_STATUS_INSUFFICIENT_FUNDS
          - PAYMENT_STATUS_FAILED
          - PAYMENT_STATUS_BLOCKED
          - PAYMENT_STATUS_UNKNOWN
          description: |-
            The status of the payment.

            `PAYMENT_STATUS_INPUT_NEEDED`: This is the initial state of all payments. It indicates that the payment is waiting on user input to continue processing. A payment may re-enter this state later on if further input is needed.

            `PAYMENT_STATUS_PROCESSING`: The payment is currently being processed. The payment will automatically exit this state when processing is complete.

            `PAYMENT_STATUS_INITIATED`: The payment has been successfully initiated and is considered complete.

            `PAYMENT_STATUS_COMPLETED`: Indicates that the standing order has been successfully established. This state is only used for standing orders.

            `PAYMENT_STATUS_INSUFFICIENT_FUNDS`: The payment has failed due to insufficient funds.

            `PAYMENT_STATUS_FAILED`: The payment has failed to be initiated. This error is retryable once the root cause is resolved.

            `PAYMENT_STATUS_BLOCKED`: The payment has been blocked. This is a retryable error.

            `PAYMENT_STATUS_UNKNOWN`: The payment status is unknown.
        recipient_id:
          type: string
          description: The ID of the recipient
        reference:
          type: string
          description: A reference for the payment.
        adjusted_reference:
          type: string
          description: The value of the reference sent to the bank after adjustment to pass bank validation rules.
          nullable: true
        last_status_update:
          format: date-time
          type: string
          description: The date and time of the last time the `status` was updated, in IS0 8601 format
        schedule:
          $ref: '#/components/schemas/ExternalPaymentScheduleGet'
        refund_details:
          $ref: '#/components/schemas/ExternalPaymentRefundDetails'
        bacs:
          $ref: '#/components/schemas/SenderBACSNullable'
        iban:
          type: string
          description: The International Bank Account Number (IBAN) for the sender, if specified in the `/payment_initiation/payment/create` call.
          nullable: true
        emi_account_id:
          type: string
          description: The EMI (E-Money Institution) account that this payment is associated with, if any. This EMI account is used as an intermediary account to enable Plaid to reconcile the settlement of funds for Payment Initiation requests.
          nullable: true
          minLength: 1
      required:
      - payment_id
      - amount
      - status
      - recipient_id
      - reference
      - last_status_update
      - bacs
      - iban
    PaymentInitiationPaymentTokenCreateRequest:
      type: object
      description: PaymentInitiationPaymentTokenCreateRequest defines the request schema for `/payment_initiation/payment/token/create`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        payment_id:
          type: string
          description: The `payment_id` returned from `/payment_initiation/payment/create`.
          minLength: 1
      required:
      - payment_id
    PaymentInitiationPaymentTokenCreateResponse:
      type: object
      additionalProperties: true
      description: PaymentInitiationPaymentTokenCreateResponse defines the response schema for `/payment_initiation/payment/token/create`
      properties:
        payment_token:
          type: string
          description: A `payment_token` that can be provided to Link initialization to enter the payment initiation flow
        payment_token_expiration_time:
          format: date-time
          type: string
          description: The date and time at which the token will expire, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. A `payment_token` expires after 15 minutes.
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - payment_token
      - payment_token_expiration_time
      - request_id
    PaymentInitiationPaymentListRequest:
      type: object
      description: PaymentInitiationPaymentListRequest defines the request schema for `/payment_initiation/payment/list`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        count:
          type: integer
          minimum: 1
          maximum: 200
          default: 10
          description: The maximum number of payments to return. If `count` is not specified, a maximum of 10 payments will be returned, beginning with the most recent payment before the cursor (if specified).
          nullable: true
        cursor:
          type: string
          description: A string in RFC 3339 format (i.e. "2019-12-06T22:35:49Z"). Only payments created before the cursor will be returned.
          format: date-time
          nullable: true
    PaymentInitiationPaymentListResponse:
      type: object
      additionalProperties: true
      description: PaymentInitiationPaymentListResponse defines the response schema for `/payment_initiation/payment/list`
      properties:
        payments:
          type: array
          description: An array of payments that have been created, associated with the given `client_id`.
          items:
            $ref: '#/components/schemas/PaymentInitiationPayment'
        next_cursor:
          nullable: true
          format: date-time
          type: string
          description: The value that, when used as the optional `cursor` parameter to `/payment_initiation/payment/list`, will return the next unreturned payment as its first payment.
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - payments
      - next_cursor
      - request_id
    AssetReportCreateRequest:
      type: object
      description: AssetReportCreateRequest defines the request schema for `/asset_report/create`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        access_tokens:
          type: array
          description: An array of access tokens corresponding to the Items that will be included in the report. The `assets` product must have been initialized for the Items during link; the Assets product cannot be added after initialization.
          items:
            $ref: '#/components/schemas/AccessToken'
          minItems: 1
          maxItems: 99
        days_requested:
          type: integer
          maximum: 730
          minimum: 0
          description: The maximum integer number of days of history to include in the Asset Report. If using Fannie Mae Day 1 Certainty, `days_requested` must be at least 61 for new originations or at least 31 for refinancings.
        options:
          $ref: '#/components/schemas/AssetReportCreateRequestOptions'
      required:
      - access_tokens
      - days_requested
    AssetReportCreateRequestOptions:
      type: object
      description: An optional object to filter `/asset_report/create` results. If provided, must be non-`null`. The optional `user` object is required for the report to be eligible for Fannie Mae's Day 1 Certainty program.
      properties:
        client_report_id:
          type: string
          description: Client-generated identifier, which can be used by lenders to track loan applications.
        webhook:
          type: string
          description: URL to which Plaid will send Assets webhooks, for example when the requested Asset Report is ready.
        user:
          $ref: '#/components/schemas/AssetReportUser'
    AssetReportCreateResponse:
      type: object
      additionalProperties: true
      description: AssetReportCreateResponse defines the response schema for `/asset_report/create`
      properties:
        asset_report_token:
          $ref: '#/components/schemas/AssetReportToken'
        asset_report_id:
          $ref: '#/components/schemas/AssetReportId'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - asset_report_token
      - asset_report_id
      - request_id
    AssetReportRefreshRequest:
      type: object
      description: AssetReportRefreshRequest defines the request schema for `/asset_report/refresh`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        asset_report_token:
          $ref: '#/components/schemas/AssetReportRefreshAssetReportToken'
        days_requested:
          type: integer
          minimum: 0
          maximum: 730
          description: The maximum number of days of history to include in the Asset Report. Must be an integer. If not specified, the value from the original call to `/asset_report/create` will be used.
        options:
          $ref: '#/components/schemas/AssetReportRefreshRequestOptions'
      required:
      - asset_report_token
    AssetReportRefreshRequestOptions:
      description: An optional object to filter `/asset_report/refresh` results. If provided, cannot be `null`. If not specified, the `options` from the original call to `/asset_report/create` will be used.
      type: object
      properties:
        client_report_id:
          type: string
          description: Client-generated identifier, which can be used by lenders to track loan applications.
        webhook:
          type: string
          description: URL to which Plaid will send Assets webhooks, for example when the requested Asset Report is ready.
        user:
          $ref: '#/components/schemas/AssetReportUser'
    AssetReportRefreshResponse:
      type: object
      additionalProperties: true
      description: AssetReportRefreshResponse defines the response schema for `/asset_report/refresh`
      properties:
        asset_report_id:
          $ref: '#/components/schemas/AssetReportId'
        asset_report_token:
          $ref: '#/components/schemas/AssetReportToken'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - asset_report_id
      - asset_report_token
      - request_id
    AssetReportRemoveRequest:
      type: object
      description: AssetReportRemoveRequest defines the request schema for `/asset_report/remove`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        asset_report_token:
          $ref: '#/components/schemas/AssetReportToken'
      required:
      - asset_report_token
    AssetReportRemoveResponse:
      type: object
      additionalProperties: true
      description: AssetReportRemoveResponse defines the response schema for `/asset_report/remove`
      properties:
        removed:
          type: boolean
          description: '`true` if the Asset Report was successfully removed.'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - removed
      - request_id
    AssetReportFilterRequest:
      type: object
      description: AssetReportFilterRequest defines the request schema for `/asset_report/filter`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        asset_report_token:
          $ref: '#/components/schemas/AssetReportToken'
        account_ids_to_exclude:
          type: array
          description: The accounts to exclude from the Asset Report, identified by `account_id`.
          items:
            type: string
      required:
      - asset_report_token
      - account_ids_to_exclude
    AssetReportFilterResponse:
      type: object
      additionalProperties: true
      description: AssetReportFilterResponse defines the response schema for `/asset_report/filter`
      properties:
        asset_report_token:
          $ref: '#/components/schemas/AssetReportToken'
        asset_report_id:
          $ref: '#/components/schemas/AssetReportId'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - asset_report_token
      - asset_report_id
      - request_id
    AssetReportGetRequest:
      type: object
      description: AssetReportGetRequest defines the request schema for `/asset_report/get`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        asset_report_token:
          $ref: '#/components/schemas/AssetReportToken'
        include_insights:
          type: boolean
          description: '`true` if you would like to retrieve the Asset Report with Insights, `false` otherwise. This field defaults to `false` if omitted.'
      required:
      - asset_report_token
    AssetReportGetResponse:
      type: object
      additionalProperties: true
      description: AssetReportGetResponse defines the response schema for `/asset_report/get`
      properties:
        report:
          $ref: '#/components/schemas/AssetReport'
        warnings:
          type: array
          description: If the Asset Report generation was successful but identity information cannot be returned, this array will contain information about the errors causing identity information to be missing
          items:
            $ref: '#/components/schemas/Warning'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - report
      - warnings
      - request_id
    AssetReportPDFGetRequest:
      type: object
      description: AssetReportPDFGetRequest defines the request schema for `/asset_report/pdf/get`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        asset_report_token:
          $ref: '#/components/schemas/AssetReportToken'
      required:
      - asset_report_token
    AssetReportPDFGetResponse:
      format: binary
      type: string
    AssetReportAuditCopyCreateRequest:
      type: object
      description: AssetReportAuditCopyCreateRequest defines the request schema for `/asset_report/audit_copy/get`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        asset_report_token:
          $ref: '#/components/schemas/AssetReportToken'
        auditor_id:
          type: string
          description: The `auditor_id` of the third party with whom you would like to share the Asset Report.
      required:
      - asset_report_token
      - auditor_id
    AssetReportAuditCopyCreateResponse:
      type: object
      additionalProperties: true
      description: AssetReportAuditCopyCreateResponse defines the response schema for `/asset_report/audit_copy/get`
      properties:
        audit_copy_token:
          type: string
          description: A token that can be shared with a third party auditor to allow them to obtain access to the Asset Report. This token should be stored securely.
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - audit_copy_token
      - request_id
    AssetReportAuditCopyRemoveRequest:
      type: object
      description: AssetReportAuditCopyRemoveRequest defines the request schema for `/asset_report/audit_copy/remove`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        audit_copy_token:
          type: string
          description: The `audit_copy_token` granting access to the Audit Copy you would like to revoke.
      required:
      - audit_copy_token
    AssetReportAuditCopyRemoveResponse:
      type: object
      additionalProperties: true
      description: AssetReportAuditCopyRemoveResponse defines the response schema for `/asset_report/audit_copy/remove`
      properties:
        removed:
          type: boolean
          description: '`true` if the Audit Copy was successfully removed.'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - removed
      - request_id
    InvestmentsHoldingsGetRequest:
      type: object
      description: InvestmentsHoldingsGetRequest defines the request schema for `/investments/holdings/get`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        access_token:
          $ref: '#/components/schemas/AccessToken'
        options:
          $ref: '#/components/schemas/InvestmentHoldingsGetRequestOptions'
      required:
      - access_token
    InvestmentHoldingsGetRequestOptions:
      type: object
      description: An optional object to filter `/investments/holdings/get` results. If provided, must not be `null`.
      properties:
        account_ids:
          type: array
          description: An array of `account_id`s to retrieve for the Item. An error will be returned if a provided `account_id` is not associated with the Item.
          items:
            type: string
    InvestmentsHoldingsGetResponse:
      type: object
      additionalProperties: true
      description: InvestmentsHoldingsGetResponse defines the response schema for `/investments/holdings/get`
      properties:
        accounts:
          type: array
          description: The accounts associated with the Item
          items:
            $ref: '#/components/schemas/AccountBase'
        holdings:
          type: array
          description: 'The holdings belonging to investment accounts associated with the Item. Details of the securities in the holdings are provided in the `securities` field. '
          items:
            $ref: '#/components/schemas/Holding'
        securities:
          description: 'Objects describing the securities held in the accounts associated with the Item. '
          type: array
          items:
            $ref: '#/components/schemas/Security'
        item:
          $ref: '#/components/schemas/Item'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - accounts
      - holdings
      - securities
      - item
      - request_id
    InvestmentsTransactionsGetRequest:
      type: object
      description: InvestmentsTransactionsGetRequest defines the request schema for `/investments/transactions/get`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        access_token:
          $ref: '#/components/schemas/AccessToken'
        start_date:
          type: string
          format: date
          description: The earliest date for which to fetch transaction history. Dates should be formatted as YYYY-MM-DD.
        end_date:
          type: string
          format: date
          description: The most recent date for which to fetch transaction history. Dates should be formatted as YYYY-MM-DD.
        options:
          $ref: '#/components/schemas/InvestmentsTransactionsGetRequestOptions'
      required:
      - access_token
      - start_date
      - end_date
    InvestmentsTransactionsGetRequestOptions:
      description: An optional object to filter `/investments/transactions/get` results. If provided, must be non-`null`.
      type: object
      properties:
        account_ids:
          type: array
          description: An array of `account_ids` to retrieve for the Item.
          items:
            type: string
        count:
          type: integer
          default: 100
          minimum: 1
          maximum: 500
          description: |
            The number of transactions to fetch.
        offset:
          type: integer
          description: The number of transactions to skip when fetching transaction history
          default: 0
          minimum: 0
    InvestmentsTransactionsGetResponse:
      type: object
      additionalProperties: true
      description: InvestmentsTransactionsGetResponse defines the response schema for `/investments/transactions/get`
      properties:
        item:
          $ref: '#/components/schemas/Item'
        accounts:
          type: array
          description: The accounts for which transaction history is being fetched.
          items:
            $ref: '#/components/schemas/AccountBase'
        securities:
          type: array
          description: All securities for which there is a corresponding transaction being fetched.
          items:
            $ref: '#/components/schemas/Security'
        investment_transactions:
          type: array
          description: The transactions being fetched
          items:
            $ref: '#/components/schemas/InvestmentTransaction'
        total_investment_transactions:
          type: integer
          description: The total number of transactions available within the date range specified. If `total_investment_transactions` is larger than the size of the `transactions` array, more transactions are available and can be fetched via manipulating the `offset` parameter.'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - item
      - accounts
      - securities
      - investment_transactions
      - total_investment_transactions
      - request_id
    ProcessorTokenCreateRequest:
      type: object
      description: ProcessorTokenCreateRequest defines the request schema for `/processor/token/create`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        access_token:
          $ref: '#/components/schemas/AccessToken'
        account_id:
          type: string
          description: The `account_id` value obtained from the `onSuccess` callback in Link
        processor:
          type: string
          enum:
          - achq
          - alpaca
          - astra
          - check
          - checkbook
          - circle
          - drivewealth
          - dwolla
          - galileo
          - lithic
          - modern_treasury
          - moov
          - ocrolus
          - prime_trust
          - rize
          - sila_money
          - sbv_api
          - treasury_prime
          - unit
          - vesta
          - vopay
          - wyre
          description: The processor you are integrating with.
      required:
      - access_token
      - account_id
      - processor
    ProcessorTokenCreateResponse:
      type: object
      additionalProperties: true
      description: ProcessorTokenCreateResponse defines the response schema for `/processor/token/create` and `/processor/apex/processor_token/create`
      properties:
        processor_token:
          type: string
          description: The `processor_token` that can then be used by the Plaid partner to make API requests
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - processor_token
      - request_id
    ProcessorStripeBankAccountTokenCreateRequest:
      type: object
      description: ProcessorStripeBankAccountTokenCreateRequest defines the request schema for `/processor/stripe/bank_account/create`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        access_token:
          $ref: '#/components/schemas/AccessToken'
        account_id:
          type: string
          description: The `account_id` value obtained from the `onSuccess` callback in Link
      required:
      - access_token
      - account_id
    ProcessorStripeBankAccountTokenCreateResponse:
      type: object
      additionalProperties: true
      description: ProcessorStripeBankAccountTokenCreateResponse defines the response schema for `/processor/stripe/bank_account/create`
      properties:
        stripe_bank_account_token:
          type: string
          description: A token that can be sent to Stripe for use in making API calls to Plaid
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - stripe_bank_account_token
      - request_id
    ProcessorApexProcessorTokenCreateRequest:
      type: object
      description: ProcessorApexProcessorTokenCreateRequest defines the request schema for `/processor/apex/processor_token/create`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        access_token:
          $ref: '#/components/schemas/AccessToken'
        account_id:
          type: string
          description: The `account_id` value obtained from the `onSuccess` callback in Link
      required:
      - access_token
      - account_id
    DepositSwitchCreateRequest:
      type: object
      description: DepositSwitchCreateRequest defines the request schema for `/deposit_switch/create`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        target_access_token:
          type: string
          description: 'Access token for the target Item, typically provided in the Import Item response. '
        target_account_id:
          type: string
          description: Plaid Account ID that specifies the target bank account. This account will become the recipient for a user's direct deposit.
        country_code:
          type: string
          title: CountryCode
          enum:
          - US
          - CA
          description: ISO-3166-1 alpha-2 country code standard.
          nullable: true
        options:
          $ref: '#/components/schemas/DepositSwitchCreateRequestOptions'
      required:
      - target_access_token
      - target_account_id
    DepositSwitchCreateRequestOptions:
      type: object
      title: DepositSwitchCreateRequestOptions
      description: Options to configure the `/deposit_switch/create` request. If provided, cannot be `null`.
      x-private-visibility: false
      properties:
        webhook:
          type: string
          description: |
            The URL registered to receive webhooks when the status of a deposit switch request has changed.
          nullable: true
        transaction_item_access_tokens:
          type: array
          description: An array of access tokens corresponding to transaction items to use when attempting to match the user to their Payroll Provider. These tokens must be created by the same client id as the one creating the switch, and have access to the transactions product.
          items:
            $ref: '#/components/schemas/AccessToken'
          minItems: 1
          maxItems: 99
    DepositSwitchCreateResponse:
      type: object
      additionalProperties: true
      description: DepositSwitchCreateResponse defines the response schema for `/deposit_switch/create`
      properties:
        deposit_switch_id:
          type: string
          description: ID of the deposit switch. This ID is persisted throughout the lifetime of the deposit switch.
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - deposit_switch_id
      - request_id
    ItemImportRequest:
      type: object
      description: ItemImportRequest defines the request schema for `/item/import`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        products:
          type: array
          description: Array of product strings
          items:
            $ref: '#/components/schemas/Products'
          minItems: 1
        user_auth:
          $ref: '#/components/schemas/ItemImportRequestUserAuth'
        options:
          $ref: '#/components/schemas/ItemImportRequestOptions'
      required:
      - products
      - user_auth
    ItemImportRequestOptions:
      type: object
      description: An optional object to configure `/item/import` request.
      properties:
        webhook:
          type: string
          description: |
            Specifies a webhook URL to associate with an Item. Plaid fires a webhook if credentials fail.
    ItemImportRequestUserAuth:
      type: object
      required:
      - user_id
      - auth_token
      description: Object of user ID and auth token pair, permitting Plaid to aggregate a user’s accounts
      properties:
        user_id:
          type: string
          description: Opaque user identifier
        auth_token:
          type: string
          description: Authorization token Plaid will use to aggregate this user’s accounts
    ItemImportResponse:
      type: object
      additionalProperties: true
      description: ItemImportResponse defines the response schema for `/item/import`
      properties:
        access_token:
          $ref: '#/components/schemas/AccessToken'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - access_token
      - request_id
    DepositSwitchTokenCreateRequest:
      type: object
      description: DepositSwitchTokenCreateRequest defines the request schema for `/deposit_switch/token/create`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        deposit_switch_id:
          type: string
          description: The ID of the deposit switch
      required:
      - deposit_switch_id
    DepositSwitchTokenCreateResponse:
      type: object
      additionalProperties: true
      description: DepositSwitchTokenCreateResponse defines the response schema for `/deposit_switch/token/create`
      properties:
        deposit_switch_token:
          type: string
          description: Deposit switch token, used to initialize Link for the Deposit Switch product
        deposit_switch_token_expiration_time:
          type: string
          description: Expiration time of the token, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - deposit_switch_token
      - deposit_switch_token_expiration_time
      - request_id
    LinkTokenGetRequest:
      type: object
      description: LinkTokenGetRequest defines the request schema for `/link/token/get`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        link_token:
          type: string
          description: A `link_token` from a previous invocation of `/link/token/create`
      required:
      - link_token
    LinkTokenCreateRequest:
      type: object
      description: LinkTokenCreateRequest defines the request schema for `/link/token/create`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        client_name:
          type: string
          description: The name of your application, as it should be displayed in Link. Maximum length of 30 characters.
        language:
          type: string
          description: |-
            The language that Link should be displayed in.

            Supported languages are:
            - English (`'en'`)
            - French (`'fr'`)
            - Spanish (`'es'`)
            - Dutch (`'nl'`)

            When using a Link customization, the language configured here must match the setting in the customization, or the customization will not be applied.
        country_codes:
          type: array
          description: |-
            Specify an array of Plaid-supported country codes using the ISO-3166-1 alpha-2 country code standard. Institutions from all listed countries will be shown.  Supported country codes are: `US`, `CA`, `ES`, `FR`, `GB`, `IE`, `NL`.

            If Link is launched with multiple country codes, only products that you are enabled for in all countries will be used by Link. Note that while all countries are enabled by default in Sandbox and Development, in Production only US and Canada are enabled by default. To gain access to European institutions in the Production environment, [file a product access Support ticket](https://dashboard.plaid.com/support/new/product-and-development/product-troubleshooting/request-product-access) via the Plaid dashboard. If you initialize with a European country code, your users will see the European consent panel during the Link flow.

            If using a Link customization, make sure the country codes in the customization match those specified in `country_codes`. If both `country_codes` and a Link customization are used, the value in `country_codes` may override the value in the customization.

            If using the Auth features Instant Match, Same-day Micro-deposits, or Automated Micro-deposits, `country_codes` must be set to `['US']`.
          items:
            $ref: '#/components/schemas/CountryCode'
          minItems: 1
        user:
          $ref: '#/components/schemas/LinkTokenCreateRequestUser'
        products:
          type: array
          description: |-
            List of Plaid product(s) you wish to use. If launching Link in update mode, should be omitted; required otherwise. Valid products are:

            `transactions`, `auth`, `identity`, `assets`, `investments`, `liabilities`, `payment_initiation`, `deposit_switch`, `income_verification`

            `balance` is *not* a valid value, the Balance product does not require explicit initalization and will automatically be initialized when any other product is initialized.

            Only institutions that support *all* requested products will be shown in Link; to maximize the number of institutions listed, it is recommended to initialize Link with the minimal product set required for your use case. Additional products can be added after Link initialization by calling the relevant endpoints. For details and exceptions, see [Choosing when to initialize products](https://plaid.com/docs/link/best-practices/#choosing-when-to-initialize-products).

            Note that, unless you have opted to disable Instant Match support, institutions that support Instant Match will also be shown in Link if `auth` is specified as a product, even though these institutions do not contain `auth` in their product array.

            In Production, you will be billed for each product that you specify when initializing Link. Note that a product cannot be removed from an Item once the Item has been initialized with that product. To stop billing on an Item for subscription-based products, such as Liabilities, Investments, and Transactions, remove the Item via `/item/remove`.
          items:
            $ref: '#/components/schemas/Products'
        webhook:
          type: string
          description: The destination URL to which any webhooks should be sent.
        access_token:
          type: string
          description: The `access_token` associated with the Item to update, used when updating or modifying an existing `access_token`. Used when launching Link in update mode, when completing the Same-day (manual) Micro-deposit flow, or (optionally) when initializing Link as part of the Payment Initiation (UK and Europe) flow.
        link_customization_name:
          type: string
          description: The name of the Link customization from the Plaid Dashboard to be applied to Link. If not specified, the `default` customization will be used. When using a Link customization, the language in the customization must match the language selected via the `language` parameter, and the countries in the customization should match the country codes selected via `country_codes`.
        redirect_uri:
          type: string
          description: A URI indicating the destination where a user should be forwarded after completing the Link flow; used to support OAuth authentication flows when launching Link in the browser or via a webview. The `redirect_uri` should not contain any query parameters. When used in Production or Development, must be an https URI. To specify any subdomain, use `*` as a wildcard character, e.g. `https://*.example.com/oauth.html`. If `android_package_name` is specified, this field should be left blank.  Note that any redirect URI must also be added to the Allowed redirect URIs list in the [developer dashboard](https://dashboard.plaid.com/team/api).
        android_package_name:
          type: string
          description: 'The name of your app''s Android package. Required if using the `link_token` to initialize Link on Android. When creating a `link_token` for initializing Link on other platforms, this field must be left blank. Any package name specified here must also be added to the Allowed Android package names setting on the [developer dashboard](https://dashboard.plaid.com/team/api). '
        account_filters:
          $ref: '#/components/schemas/LinkTokenAccountFilters'
        eu_config:
          $ref: '#/components/schemas/LinkTokenEUConfig'
        institution_id:
          type: string
          description: Used for certain Europe-only configurations, as well as certain legacy use cases in other regions.
        payment_initiation:
          $ref: '#/components/schemas/LinkTokenCreateRequestPaymentInitiation'
        deposit_switch:
          $ref: '#/components/schemas/LinkTokenCreateRequestDepositSwitch'
        income_verification:
          $ref: '#/components/schemas/LinkTokenCreateRequestIncomeVerification'
        auth:
          $ref: '#/components/schemas/LinkTokenCreateRequestAuth'
      required:
      - client_name
      - language
      - country_codes
      - user
    LinkTokenAccountFilters:
      description: |
        By default, Link will provide limited account filtering: it will only display Institutions that are compatible with all products supplied in the `products` parameter of `/link/token/create`, and, if `auth` is specified in the `products` array, will also filter out accounts other than `checking` and `savings` accounts on the Account Select pane. You can further limit the accounts shown in Link by using `account_filters` to specify the account subtypes to be shown in Link. Only the specified subtypes will be shown. This filtering applies to both the Account Select view (if enabled) and the Institution Select view. Institutions that do not support the selected subtypes will be omitted from Link. To indicate that all subtypes should be shown, use the value `"all"`. If the `account_filters` filter is used, any account type for which a filter is not specified will be entirely omitted from Link. For a full list of valid types and subtypes, see the [Account schema](https://plaid.com/docs/api/accounts#accounts-schema).

        For institutions using OAuth, the filter will not affect the list of accounts shown by the bank in the OAuth window.
      type: object
      additionalProperties: true
      properties:
        depository:
          $ref: '#/components/schemas/DepositoryFilter'
        credit:
          $ref: '#/components/schemas/CreditFilter'
        loan:
          $ref: '#/components/schemas/LoanFilter'
        investment:
          $ref: '#/components/schemas/InvestmentFilter'
    LinkTokenEUConfig:
      description: Configuration parameters for EU flows
      type: object
      properties:
        headless:
          type: boolean
          description: If `true`, open Link without an initial UI. Defaults to `false`.
    LinkTokenCreateRequestPaymentInitiation:
      type: object
      description: Specifies options for initializing Link for use with the Payment Initiation (Europe) product. This field is required if `payment_initiation` is included in the `products` array.
      properties:
        payment_id:
          type: string
          description: The `payment_id` provided by the `/payment_initiation/payment/create` endpoint.
          minLength: 1
      required:
      - payment_id
    LinkTokenCreateRequestDepositSwitch:
      type: object
      description: Specifies options for initializing Link for use with the Deposit Switch (beta) product. This field is required if `deposit_switch` is included in the `products` array.
      properties:
        deposit_switch_id:
          type: string
          description: The `deposit_switch_id` provided by the `/deposit_switch/create` endpoint.
      required:
      - deposit_switch_id
    LinkTokenCreateRequestAuth:
      type: object
      description: Specifies options for initializing Link for use with the Auth product. This field is currently only required if using the Flexible Auth product (currently in closed beta).
      properties:
        flow_type:
          type: string
          enum:
          - FLEXIBLE_AUTH
          description: The optional Auth flow to use. Currently only used to enable Flexible Auth.
      required:
      - flow_type
    LinkTokenCreateRequestUser:
      type: object
      description: An object specifying information about the end user who will be linking their account.
      properties:
        client_user_id:
          type: string
          description: A unique ID representing the end user. Typically this will be a user ID number from your application. Personally identifiable information, such as an email address or phone number, should not be used in the `client_user_id`. It is currently used as a means of searching logs for the given user in the Plaid Dashboard.
        legal_name:
          type: string
          description: The user's full legal name. This is an optional field used in the [returning user experience](https://plaid.com/docs/link/returning-user) to associate Items to the user.
        phone_number:
          type: string
          description: The user's phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format. This field is optional, but required to enable the [returning user experience](https://plaid.com/docs/link/returning-user).
        phone_number_verified_time:
          format: date-time
          type: string
          description: |
            The date and time the phone number was verified in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDThh:mm:ssZ`). This field is optional, but required to enable any [returning user experience](https://plaid.com/docs/link/returning-user).

             Only pass a verification time for a phone number that you have verified. If you have performed verification but don’t have the time, you may supply a signal value of the start of the UNIX epoch.

             Example: `2020-01-01T00:00:00Z`
        email_address:
          type: string
          description: The user's email address. This field is optional, but required to enable the [pre-authenticated returning user flow](https://plaid.com/docs/link/returning-user/#enabling-the-returning-user-experience).
        email_address_verified_time:
          type: string
          format: date-time
          description: |-
            The date and time the email address was verified in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDThh:mm:ssZ`). This is an optional field used in the [returning user experience](https://plaid.com/docs/link/returning-user).

             Only pass a verification time for an email address that you have verified. If you have performed verification but don’t have the time, you may supply a signal value of the start of the UNIX epoch.

             Example: `2020-01-01T00:00:00Z`
        ssn:
          type: string
          description: To be provided in the format "ddd-dd-dddd". This field is optional and will support not-yet-implemented functionality for new products.
        date_of_birth:
          type: string
          format: date-time
          description: To be provided in the format "yyyy-mm-dd". This field is optional and will support not-yet-implemented functionality for new products.
      required:
      - client_user_id
    LinkTokenCreateRequestAccountSubtypes:
      description: |
        By default, Link will only display account types that are compatible with all products supplied in the `products` parameter of `/link/token/create`. You can further limit the accounts shown in Link by using `account_filters` to specify the account subtypes to be shown in Link. Only the specified subtypes will be shown. This filtering applies to both the Account Select view (if enabled) and the Institution Select view. Institutions that do not support the selected subtypes will be omitted from Link. To indicate that all subtypes should be shown, use the value `"all"`. If the `account_filters` filter is used, any account type for which a filter is not specified will be entirely omitted from Link.

        For a full list of valid types and subtypes, see the [Account schema](https://plaid.com/docs/api/accounts#accounts-schema).

        For institutions using OAuth, the filter will not affect the list of institutions or accounts shown by the bank in the OAuth window.
      type: object
      properties:
        depository:
          description: A filter to apply to `depository`-type accounts
          type: object
          additionalProperties: true
          properties:
            account_subtypes:
              $ref: '#/components/schemas/AccountSubtypes'
        credit:
          description: A filter to apply to `credit`-type accounts
          type: object
          additionalProperties: true
          properties:
            account_subtypes:
              $ref: '#/components/schemas/AccountSubtypes'
        loan:
          description: A filter to apply to `loan`-type accounts
          type: object
          additionalProperties: true
          properties:
            account_subtypes:
              $ref: '#/components/schemas/AccountSubtypes'
        investment:
          description: A filter to apply to `investment`-type accounts
          type: object
          additionalProperties: true
          properties:
            account_subtypes:
              $ref: '#/components/schemas/AccountSubtypes'
    LinkTokenGetResponse:
      type: object
      additionalProperties: true
      description: LinkTokenGetResponse defines the response schema for `/link/token/get`
      properties:
        link_token:
          type: string
          description: A `link_token`, which can be supplied to Link in order to initialize it and receive a `public_token`, which can be exchanged for an `access_token`.
        created_at:
          type: string
          format: date-time
          nullable: true
          description: The creation timestamp for the `link_token`, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format.
        expiration:
          type: string
          format: date-time
          nullable: true
          description: The expiration timestamp for the `link_token`, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format.
        metadata:
          $ref: '#/components/schemas/LinkTokenGetMetadataResponse'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - link_token
      - created_at
      - expiration
      - metadata
      - request_id
    LinkTokenGetMetadataResponse:
      type: object
      additionalProperties: true
      description: An object specifying the arguments originally provided to the `/link/token/create` call.
      properties:
        initial_products:
          type: array
          description: The `products` specified in the `/link/token/create` call.
          items:
            $ref: '#/components/schemas/Products'
        webhook:
          type: string
          description: The `webhook` specified in the `/link/token/create` call.
          nullable: true
        country_codes:
          type: array
          description: The `country_codes` specified in the `/link/token/create` call.
          items:
            $ref: '#/components/schemas/CountryCode'
        language:
          type: string
          nullable: true
          description: The `language` specified in the `/link/token/create` call.
        account_filters:
          $ref: '#/components/schemas/AccountFiltersResponse'
        redirect_uri:
          type: string
          description: The `redirect_uri` specified in the `/link/token/create` call.
          nullable: true
        client_name:
          type: string
          nullable: true
          description: The `client_name` specified in the `/link/token/create` call.
      required:
      - initial_products
      - webhook
      - country_codes
      - language
      - redirect_uri
      - client_name
    LinkTokenCreateResponse:
      type: object
      additionalProperties: true
      description: LinkTokenCreateResponse defines the response schema for `/link/token/create`
      properties:
        link_token:
          type: string
          description: A `link_token`, which can be supplied to Link in order to initialize it and receive a `public_token`, which can be exchanged for an `access_token`.
        expiration:
          type: string
          format: date-time
          description: The expiration date for the `link_token`, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. A `link_token` created to generate a `public_token` that will be exchanged for a new `access_token` expires after 4 hours. A `link_token` created for an existing Item (such as when updating an existing `access_token` by launching Link in update mode) expires after 30 minutes.
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - link_token
      - expiration
      - request_id
    Item:
      description: Metadata about the Item.
      type: object
      additionalProperties: true
      properties:
        item_id:
          description: The Plaid Item ID. The `item_id` is always unique; linking the same account at the same institution twice will result in two Items with different `item_id` values. Like all Plaid identifiers, the `item_id` is case-sensitive.
          type: string
        institution_id:
          description: The Plaid Institution ID associated with the Item. Field is `null` for Items created via Same Day Micro-deposits.
          type: string
          nullable: true
        webhook:
          description: The URL registered to receive webhooks for the Item.
          type: string
          nullable: true
        error:
          $ref: '#/components/schemas/Error'
        available_products:
          description: A list of products available for the Item that have not yet been accessed.
          type: array
          items:
            $ref: '#/components/schemas/Products'
        billed_products:
          description: |
            A list of products that have been billed for the Item. Note - `billed_products` is populated in all environments but only requests in Production are billed.
          type: array
          items:
            $ref: '#/components/schemas/Products'
        consent_expiration_time:
          description: |
            The RFC 3339 timestamp after which the consent provided by the end user will expire. Upon consent expiration, the item will enter the `ITEM_LOGIN_REQUIRED` error state. To circumvent the `ITEM_LOGIN_REQUIRED` error and maintain continuous consent, the end user can reauthenticate via Link’s update mode in advance of the consent expiration time.

            Note - This is only relevant for certain OAuth-based institutions. For all other institutions, this field will be null.
          type: string
          format: date-time
          nullable: true
        update_type:
          type: string
          description: |-
            Indicates whether an Item requires user interaction to be updated, which can be the case for Items with some forms of two-factor authentication.

            `background` - Item can be updated in the background

            `user_present_required` - Item requires user interaction to be updated
          enum:
          - background
          - user_present_required
      required:
      - item_id
      - webhook
      - error
      - available_products
      - billed_products
      - consent_expiration_time
      - update_type
    Error:
      description: We use standard HTTP response codes for success and failure notifications, and our errors are further classified by `error_type`. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues.  Error fields will be `null` if no error has occurred.
      type: object
      additionalProperties: true
      title: Error
      nullable: true
      properties:
        error_type:
          enum:
          - INVALID_REQUEST
          - INVALID_RESULT
          - INVALID_INPUT
          - INSTITUTION_ERROR
          - RATE_LIMIT_EXCEEDED
          - API_ERROR
          - ITEM_ERROR
          - ASSET_REPORT_ERROR
          - RECAPTCHA_ERROR
          - OAUTH_ERROR
          - PAYMENT_ERROR
          - BANK_TRANSFER_ERROR
          type: string
          description: A broad categorization of the error. Safe for programatic use.
        error_code:
          description: The particular error code. Safe for programmatic use.
          type: string
        error_message:
          description: A developer-friendly representation of the error code. This may change over time and is not safe for programmatic use.
          type: string
        display_message:
          description: |-
            A user-friendly representation of the error code. `null` if the error is not related to user action.

            This may change over time and is not safe for programmatic use.
          type: string
          nullable: true
        request_id:
          type: string
          description: A unique ID identifying the request, to be used for troubleshooting purposes. This field will be omitted in errors provided by webhooks.
        causes:
          type: array
          description: |-
            In the Assets product, a request can pertain to more than one Item. If an error is returned for such a request, `causes` will return an array of errors containing a breakdown of these errors on the individual Item level, if any can be identified.

            `causes` will only be provided for the `error_type` `ASSET_REPORT_ERROR`.
          items: {}
        status:
          type: number
          description: The HTTP status code associated with the error. This will only be returned in the response body when the error information is provided via a webhook.
          nullable: true
        documentation_url:
          type: string
          description: The URL of a Plaid documentation page with more information about the error
        suggested_action:
          type: string
          description: Suggested steps for resolving the error
      required:
      - error_type
      - error_code
      - error_message
      - display_message
    ItemStatusNullable:
      nullable: true
      description: An object with information about the status of the Item.
      allOf:
      - $ref: '#/components/schemas/ItemStatus'
      - type: object
        additionalProperties: true
    ItemStatusTransactions:
      description: Information about the last successful and failed transactions update for the Item.
      type: object
      additionalProperties: true
      nullable: true
      properties:
        last_successful_update:
          description: '[ISO 8601](https://wikipedia.org/wiki/ISO_8601) timestamp of the last successful transactions update for the Item. The status will update each time Plaid successfully connects with the institution, regardless of whether any new data is available in the update.'
          type: string
          format: date-time
          nullable: true
        last_failed_update:
          description: '[ISO 8601](https://wikipedia.org/wiki/ISO_8601) timestamp of the last failed transactions update for the Item. The status will update each time Plaid fails an attempt to connect with the institution, regardless of whether any new data is available in the update.'
          type: string
          format: date-time
          nullable: true
    ItemStatusInvestments:
      description: Information about the last successful and failed investments update for the Item.
      type: object
      additionalProperties: true
      nullable: true
      properties:
        last_successful_update:
          description: '[ISO 8601](https://wikipedia.org/wiki/ISO_8601) timestamp of the last successful investments update for the Item. The status will update each time Plaid successfully connects with the institution, regardless of whether any new data is available in the update.'
          type: string
          format: date-time
          nullable: true
        last_failed_update:
          description: '[ISO 8601](https://wikipedia.org/wiki/ISO_8601) timestamp of the last failed investments update for the Item. The status will update each time Plaid fails an attempt to connect with the institution, regardless of whether any new data is available in the update.'
          type: string
          format: date-time
          nullable: true
    ItemStatusLastWebhook:
      description: Information about the last webhook fired for the Item.
      type: object
      additionalProperties: true
      nullable: true
      properties:
        sent_at:
          description: |
            [ISO 8601](https://wikipedia.org/wiki/ISO_8601) timestamp of when the webhook was fired.
          type: string
          format: date-time
          nullable: true
        code_sent:
          description: The last webhook code sent.
          type: string
          nullable: true
    ItemStatus:
      description: An object with information about the status of the Item.
      type: object
      additionalProperties: true
      nullable: true
      x-examples:
        example-1: {}
      title: ItemStatus
      properties:
        investments:
          $ref: '#/components/schemas/ItemStatusInvestments'
        transactions:
          $ref: '#/components/schemas/ItemStatusTransactions'
        last_webhook:
          $ref: '#/components/schemas/ItemStatusLastWebhook'
    AccountType:
      type: string
      title: AccountType
      enum:
      - investment
      - credit
      - depository
      - loan
      - brokerage
      - other
      description: |-
        `investment:` Investment account

        `credit:` Credit card

        `depository:` Depository account

        `loan:` Loan account

        `brokerage`: An investment account. Used for `/assets/` endpoints only; other endpoints use `investment`.

        `other:` Non-specified account type

        See the [Account type schema](https://plaid.com/docs/api/accounts#account-type-schema) for a full listing of account types and corresponding subtypes.
    OverrideAccountType:
      type: string
      title: OverrideAccountType
      enum:
      - investment
      - credit
      - depository
      - loan
      - other
      description: |-
        `investment:` Investment account

        `credit:` Credit card

        `depository:` Depository account

        `loan:` Loan account

        `other:` Non-specified account type

        See the [Account type schema](https://plaid.com/docs/api/accounts#account-type-schema) for a full listing of account types and corresponding subtypes.
    AccountBase:
      title: Account
      type: object
      additionalProperties: true
      description: A single account at a financial institution.
      x-examples:
        example-1: {}
      properties:
        account_id:
          type: string
          description: |-
            Plaid’s unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new `account_id` will be assigned to the account.

            The `account_id` can also change if the `access_token` is deleted and the same credentials that were used to generate that `access_token` are used to generate a new `access_token` on a later date. In that case, the new `account_id` will be different from the old `account_id`.

            If an account with a specific `account_id` disappears instead of changing, the account is likely closed. Closed accounts are not returned by the Plaid API.

            Like all Plaid identifiers, the `account_id` is case sensitive.
        balances:
          $ref: '#/components/schemas/AccountBalance'
        mask:
          type: string
          description: The last 2-4 alphanumeric characters of an account's official account number. Note that the mask may be non-unique between an Item's accounts, and it may also not match the mask that the bank displays to the user.
          nullable: true
        name:
          type: string
          description: The name of the account, either assigned by the user or by the financial institution itself
        official_name:
          type: string
          description: The official name of the account as given by the financial institution
          nullable: true
        type:
          $ref: '#/components/schemas/AccountType'
        subtype:
          $ref: '#/components/schemas/AccountSubtype'
        verification_status:
          type: string
          enum:
          - automatically_verified
          - pending_automatic_verification
          - pending_manual_verification
          - manually_verified
          - verification_expired
          - verification_failed
          description: "The current verification status of an Auth Item initiated through Automated or Manual micro-deposits.  Returned for Auth Items only.\n\n`pending_automatic_verification`: The Item is pending automatic verification\n\n`pending_manual_verification`: The Item is pending manual micro-deposit verification. Items remain in this state until the user successfully verifies the two amounts.\n\n`automatically_verified`: The Item has successfully been automatically verified\t\n\n`manually_verified`: The Item has successfully been manually verified\n\n`verification_expired`: Plaid was unable to automatically verify the deposit within 7 calendar days and will no longer attempt to validate the Item. Users may retry by submitting their information again through Link.\n\n`verification_failed`: The Item failed manual micro-deposit verification because the user exhausted all 3 verification attempts. Users may retry by submitting their information again through Link.\t\n\t"
      required:
      - account_id
      - balances
      - mask
      - name
      - official_name
      - type
      - subtype
    AccountBalance:
      title: AccountBalance
      type: object
      additionalProperties: true
      description: A set of fields describing the balance for an account. Balance information may be cached unless the balance object was returned by `/accounts/balance/get`.
      properties:
        available:
          type: number
          description: |-
            The amount of funds available to be withdrawn from the account, as determined by the financial institution.

            For `credit`-type accounts, the `available` balance typically equals the `limit` less the `current` balance, less any pending outflows plus any pending inflows.

            For `depository`-type accounts, the `available` balance typically equals the `current` balance less any pending outflows plus any pending inflows. For `depository`-type accounts, the `available` balance does not include the overdraft limit.

            For `investment`-type accounts, the `available` balance is the total cash available to withdraw as presented by the institution.

            Note that not all institutions calculate the `available`  balance. In the event that `available` balance is unavailable, Plaid will return an `available` balance value of `null`.

            Available balance may be cached and is not guaranteed to be up-to-date in realtime unless the value was returned by `/accounts/balance/get`.
          nullable: true
        current:
          type: number
          description: |-
            The total amount of funds in or owed by the account.

            For `credit`-type accounts, a positive balance indicates the amount owed; a negative amount indicates the lender owing the account holder.

            For `loan`-type accounts, the current balance is the principal remaining on the loan, except in the case of student loan accounts at Sallie Mae (`ins_116944`). For Sallie Mae student loans, the account's balance includes both principal and any outstanding interest.

            For `investment`-type accounts, the current balance is the total value of assets as presented by the institution.

            Note that balance information may be cached unless the value was returned by `/accounts/balance/get`; if the Item is enabled for Transactions, the balance will be at least as recent as the most recent Transaction update. If you require realtime balance information, use the `available` balance as provided by `/accounts/balance/get`.
          nullable: true
        limit:
          type: number
          description: |-
            For `credit`-type accounts, this represents the credit limit.

            For `depository`-type accounts, this represents the pre-arranged overdraft limit, which is common for current (checking) accounts in Europe.

            In North America, this field is typically only available for `credit`-type accounts.
          nullable: true
        iso_currency_code:
          type: string
          description: The ISO-4217 currency code of the balance. Always null if `unofficial_currency_code` is non-null.
          nullable: true
        unofficial_currency_code:
          type: string
          description: |-
            The unofficial currency code associated with the balance. Always null if `iso_currency_code` is non-null. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.

            See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `unofficial_currency_code`s.
          nullable: true
        last_updated_datetime:
          type: string
          format: date-time
          description: |-
            Timestamp in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDTHH:mm:ssZ`) indicating the last time that the balance for the given account has been updated

            This is currently only provided when the `min_last_updated_datetime` is passed when calling `/accounts/balance/get` for `ins_128026` (Capital One).
          nullable: true
      required:
      - available
      - current
      - limit
      - iso_currency_code
      - unofficial_currency_code
    AccountSubtype:
      type: string
      nullable: true
      title: AccountSubtype
      description: See the [Account type schema](https://plaid.com/docs/api/accounts/#account-type-schema) for a full listing of account types and corresponding subtypes.
      enum:
      - 401a
      - 401k
      - 403B
      - 457b
      - "529"
      - brokerage
      - cash isa
      - education savings account
      - ebt
      - fixed annuity
      - gic
      - health reimbursement arrangement
      - hsa
      - isa
      - ira
      - lif
      - life insurance
      - lira
      - lrif
      - lrsp
      - non-taxable brokerage account
      - other
      - other insurance
      - other annuity
      - prif
      - rdsp
      - resp
      - rlif
      - rrif
      - pension
      - profit sharing plan
      - retirement
      - roth
      - roth 401k
      - rrsp
      - sep ira
      - simple ira
      - sipp
      - stock plan
      - thrift savings plan
      - tfsa
      - trust
      - ugma
      - utma
      - variable annuity
      - credit card
      - paypal
      - cd
      - checking
      - savings
      - money market
      - prepaid
      - auto
      - business
      - commercial
      - construction
      - consumer
      - home
      - home equity
      - loan
      - mortgage
      - overdraft
      - line of credit
      - student
      - cash management
      - keogh
      - mutual fund
      - recurring
      - rewards
      - safe deposit
      - sarsep
      - null
    NumbersACH:
      title: NumbersACH
      type: object
      additionalProperties: true
      description: Identifying information for transferring money to or from a US account via ACH or wire transfer.
      properties:
        account_id:
          type: string
          description: The Plaid account ID associated with the account numbers
        account:
          type: string
          description: |-
            The ACH account number for the account.

            Note that when using OAuth with Chase Bank (`ins_56`), Chase will issue "tokenized" routing and account numbers, which are not the user's actual account and routing numbers. These tokenized numbers should work identically to normal account and routing numbers. The digits returned in the mask field will continue to reflect the actual account number, rather than the tokenized account number. If a user revokes their permissions to your app, the tokenized numbers will continue to work for ACH deposits, but not withdrawals.
        routing:
          type: string
          description: The ACH routing number for the account. If the institution is `ins_56`, this may be a tokenized routing number. For more information, see the description of the `account` field.
        wire_routing:
          type: string
          description: The wire transfer routing number for the account, if available
          nullable: true
      required:
      - account_id
      - account
      - routing
      - wire_routing
    NumbersACHNullable:
      nullable: true
      description: Identifying information for transferring money to or from a US account via ACH or wire transfer.
      allOf:
      - $ref: '#/components/schemas/NumbersACH'
      - type: object
        additionalProperties: true
    NumbersEFT:
      title: NumbersEFT
      type: object
      additionalProperties: true
      description: Identifying information for transferring money to or from a Canadian bank account via EFT.
      properties:
        account_id:
          type: string
          description: The Plaid account ID associated with the account numbers
        account:
          type: string
          description: The EFT account number for the account
        institution:
          type: string
          description: The EFT institution number for the account
        branch:
          type: string
          description: The EFT branch number for the account
      required:
      - account_id
      - account
      - institution
      - branch
    NumbersEFTNullable:
      nullable: true
      description: Identifying information for transferring money to or from a Canadian bank account via EFT.
      allOf:
      - $ref: '#/components/schemas/NumbersEFT'
      - type: object
        additionalProperties: true
    NumbersInternational:
      title: NumbersInternational
      type: object
      additionalProperties: true
      description: Identifying information for transferring money to or from an international bank account via wire transfer.
      properties:
        account_id:
          type: string
          description: The Plaid account ID associated with the account numbers
        iban:
          type: string
          description: The International Bank Account Number (IBAN) for the account
        bic:
          type: string
          description: The Bank Identifier Code (BIC) for the account
      required:
      - account_id
      - iban
      - bic
    NumbersInternationalNullable:
      nullable: true
      description: Identifying information for transferring money to or from an international bank account via wire transfer.
      allOf:
      - $ref: '#/components/schemas/NumbersInternational'
      - type: object
        additionalProperties: true
    NumbersBACS:
      title: NumbersBACS
      type: object
      additionalProperties: true
      description: Identifying information for transferring money to or from a UK bank account via BACS.
      properties:
        account_id:
          type: string
          description: The Plaid account ID associated with the account numbers
        account:
          type: string
          description: The BACS account number for the account
        sort_code:
          type: string
          description: The BACS sort code for the account
      required:
      - account_id
      - account
      - sort_code
    NumbersBACSNullable:
      description: Identifying information for transferring money to or from a UK bank account via BACS.
      nullable: true
      allOf:
      - $ref: '#/components/schemas/NumbersBACS'
      - type: object
        additionalProperties: true
    RecipientBACS:
      title: RecipientBACS
      type: object
      additionalProperties: true
      nullable: true
      description: An object containing a BACS account number and sort code. If an IBAN is not provided or if this recipient needs to accept domestic GBP-denominated payments, BACS data is required.
      properties:
        account:
          type: string
          description: The account number of the account. Maximum of 10 characters.
          minLength: 1
          maxLength: 10
        sort_code:
          type: string
          description: The 6-character sort code of the account.
          minLength: 6
          maxLength: 6
    RecipientBACSNullable:
      nullable: true
      allOf:
      - $ref: '#/components/schemas/RecipientBACS'
      - type: object
        additionalProperties: true
      description: The account number and sort code of the recipient's account.
    SenderBACSNullable:
      nullable: true
      allOf:
      - $ref: '#/components/schemas/RecipientBACS'
      - type: object
        additionalProperties: true
      description: The account number and sort code of the sender's account, if specified in the `/payment_initiation/payment/create` call.
    PaymentInitiationOptionalRestrictionBacs:
      nullable: true
      allOf:
      - $ref: '#/components/schemas/RecipientBACS'
      - type: object
        additionalProperties: true
      description: An optional object used to restrict the accounts used for payments. If provided, the end user will be able to send payments only from the specified bank account.
    RequestID:
      title: RequestID
      type: string
      description: A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.
    TransactionBase:
      title: TransactionBase
      type: object
      additionalProperties: true
      description: A representation of a transaction
      x-examples: {}
      properties:
        transaction_type:
          type: string
          enum:
          - digital
          - place
          - special
          - unresolved
          description: |
            Please use the `payment_channel` field, `transaction_type` will be deprecated in the future.

            `digital:` transactions that took place online.

            `place:` transactions that were made at a physical location.

            `special:` transactions that relate to banks, e.g. fees or deposits.

            `unresolved:` transactions that do not fit into the other three types.
          deprecated: true
        pending_transaction_id:
          type: string
          description: The ID of a posted transaction's associated pending transaction, where applicable.
          nullable: true
        category_id:
          description: |-
            The ID of the category to which this transaction belongs. See [Categories](https://plaid.com/docs/#category-overview).

            If the `transactions` object was returned by an Assets endpoint such as `/asset_report/get/` or `/asset_report/pdf/get`, this field will only appear in an Asset Report with Insights.
          type: string
          nullable: true
        category:
          type: array
          description: |-
            A hierarchical array of the categories to which this transaction belongs. See [Categories](https://plaid.com/docs/#category-overview).

            If the `transactions` object was returned by an Assets endpoint such as `/asset_report/get/` or `/asset_report/pdf/get`, this field will only appear in an Asset Report with Insights.
          nullable: true
          items:
            type: string
        location:
          $ref: '#/components/schemas/Location'
        payment_meta:
          $ref: '#/components/schemas/PaymentMeta'
        account_owner:
          type: string
          description: The name of the account owner. This field is not typically populated and only relevant when dealing with sub-accounts.
          nullable: true
        name:
          type: string
          description: |-
            The merchant name or transaction description.

            If the `transactions` object was returned by a Transactions endpoint such as `/transactions/get`, this field will always appear. If the `transactions` object was returned by an Assets endpoint such as `/asset_report/get/` or `/asset_report/pdf/get`, this field will only appear in an Asset Report with Insights.
        original_description:
          type: string
          description: The string returned by the financial institution to describe the transaction. For transactions returned by `/transactions/get`, this field is in beta and will be omitted unless the client is both enrolled in the closed beta program and has set `options.include_original_description` to `true`.
          nullable: true
        account_id:
          type: string
          description: The ID of the account in which this transaction occurred.
        amount:
          type: number
          description: The settled value of the transaction, denominated in the account's currency, as stated in `iso_currency_code` or `unofficial_currency_code`. Positive values when money moves out of the account; negative values when money moves in. For example, debit card purchases are positive; credit card payments, direct deposits, and refunds are negative.
        iso_currency_code:
          type: string
          description: The ISO-4217 currency code of the transaction. Always `null` if `unofficial_currency_code` is non-null.
          nullable: true
        unofficial_currency_code:
          type: string
          description: |-
            The unofficial currency code associated with the transaction. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.

            See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s.
          nullable: true
        date:
          type: string
          format: date
          description: For pending transactions, the date that the transaction occurred; for posted transactions, the date that the transaction posted. Both dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DD` ).
        pending:
          type: boolean
          description: When `true`, identifies the transaction as pending or unsettled. Pending transaction details (name, type, amount, category ID) may change before they are settled.
        transaction_id:
          type: string
          description: The unique ID of the transaction. Like all Plaid identifiers, the `transaction_id` is case sensitive.
      required:
      - transaction_id
      - pending
      - date
      - unofficial_currency_code
      - iso_currency_code
      - amount
      - account_id
    Transaction:
      title: Transaction
      description: A representation of a transaction
      x-examples: {}
      allOf:
      - $ref: '#/components/schemas/TransactionBase'
      - type: object
        additionalProperties: true
        properties:
          payment_channel:
            type: string
            enum:
            - online
            - in store
            - other
            description: |
              The channel used to make a payment.
              `online:` transactions that took place online.

              `in store:` transactions that were made at a physical location.

              `other:` transactions that relate to banks, e.g. fees or deposits.

              This field replaces the `transaction_type` field.
          merchant_name:
            type: string
            description: The merchant name, as extracted by Plaid from the `name` field.
            nullable: true
          authorized_date:
            type: string
            format: date
            description: The date that the transaction was authorized. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DD` ).
            nullable: true
          authorized_datetime:
            type: string
            format: date-time
            description: |-
              Date and time when a transaction was authorized in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DDTHH:mm:ssZ` ).

              This field is only populated for UK institutions. For institutions in other countries, will be `null`.
            nullable: true
          datetime:
            type: string
            format: date-time
            description: |-
              Date and time when a transaction was posted in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DDTHH:mm:ssZ` ).

              This field is only populated for UK institutions. For institutions in other countries, will be `null`.
            nullable: true
          check_number:
            type: string
            description: The check number of the transaction. This field is only populated for check transactions.
            nullable: true
          transaction_code:
            $ref: '#/components/schemas/TransactionCode'
        required:
        - account_owner
        - pending_transaction_id
        - payment_channel
        - payment_meta
        - name
        - merchant_name
        - location
        - authorized_date
        - authorized_datetime
        - datetime
        - category_id
        - category
        - transaction_code
        - check_number
    Location:
      title: Transaction Location
      type: object
      additionalProperties: true
      description: A representation of where a transaction took place
      properties:
        address:
          type: string
          description: The street address where the transaction occurred.
          nullable: true
        city:
          type: string
          description: The city where the transaction occurred.
          nullable: true
        region:
          type: string
          description: The region or state where the transaction occurred.
          nullable: true
        postal_code:
          type: string
          description: The postal code where the transaction occurred.
          nullable: true
        country:
          type: string
          description: The ISO 3166-1 alpha-2 country code where the transaction occurred.
          nullable: true
        lat:
          type: number
          description: The latitude where the transaction occurred.
          nullable: true
        lon:
          type: number
          description: The longitude where the transaction occurred.
          nullable: true
        store_number:
          type: string
          description: The merchant defined store number where the transaction occurred.
          nullable: true
      required:
      - address
      - city
      - region
      - postal_code
      - country
      - lat
      - lon
      - store_number
    Institution:
      title: Institution
      type: object
      additionalProperties: true
      description: Details relating to a specific financial institution
      properties:
        institution_id:
          type: string
          description: Unique identifier for the institution
        name:
          type: string
          description: The official name of the institution
        products:
          type: array
          description: A list of the Plaid products supported by the institution. Note that only institutions that support Instant Auth will return `auth` in the product array; institutions that do not list `auth` may still support other Auth methods such as Instant Match or Automated Micro-deposit Verification. For more details, see [Full Auth coverage](https://plaid.com/docs/auth/coverage/).
          items:
            $ref: '#/components/schemas/Products'
        country_codes:
          type: array
          description: A list of the country codes supported by the institution.
          items:
            $ref: '#/components/schemas/CountryCode'
        url:
          type: string
          description: The URL for the institution's website
          nullable: true
        primary_color:
          type: string
          description: Hexadecimal representation of the primary color used by the institution
          nullable: true
        logo:
          type: string
          description: Base64 encoded representation of the institution's logo
          nullable: true
        routing_numbers:
          type: array
          description: A partial list of routing numbers associated with the institution. This list is provided for the purpose of looking up institutions by routing number. It is not comprehensive and should never be used as a complete list of routing numbers for an institution.
          nullable: true
          items:
            type: string
        oauth:
          type: boolean
          description: Indicates that the institution has an OAuth login flow. This is primarily relevant to institutions with European country codes.
        status:
          $ref: '#/components/schemas/InstitutionStatus'
        payment_initiation_metadata:
          $ref: '#/components/schemas/PaymentInitiationMetadata'
      required:
      - institution_id
      - name
      - products
      - country_codes
      - routing_numbers
      - oauth
    InstitutionStatus:
      title: InstitutionStatus
      type: object
      additionalProperties: true
      properties:
        item_logins:
          $ref: '#/components/schemas/ProductStatus'
        transactions_updates:
          $ref: '#/components/schemas/ProductStatus'
        auth:
          $ref: '#/components/schemas/ProductStatus'
        balance:
          $ref: '#/components/schemas/ProductStatus'
        identity:
          $ref: '#/components/schemas/ProductStatus'
        investments_updates:
          $ref: '#/components/schemas/ProductStatus'
        liabilities_updates:
          $ref: '#/components/schemas/ProductStatus'
        liabilities:
          $ref: '#/components/schemas/ProductStatus'
        investments:
          $ref: '#/components/schemas/ProductStatus'
        health_incidents:
          nullable: true
          type: array
          description: Details of recent health incidents associated with the institution.
          items:
            $ref: '#/components/schemas/HealthIncident'
      required:
      - item_logins
      - transactions_updates
      - auth
      - balance
      - identity
      - investments_updates
      description: |
        The status of an institution is determined by the health of its Item logins, Transactions updates, Investments updates, Liabilities updates, Auth requests, Balance requests, Identity requests, Investments requests, and Liabilities requests. A login attempt is conducted during the initial Item add in Link. If there is not enough traffic to accurately calculate an institution's status, Plaid will return null rather than potentially inaccurate data.

        Institution status is accessible in the Dashboard and via the API using the `/institutions/get_by_id` endpoint with the `include_status` option set to true. Note that institution status is not available in the Sandbox environment.
      x-examples:
        example-1:
          status:
            item_logins:
              status: HEALTHY
              last_status_change: "2019-02-15T15:53:00Z"
              breakdown:
                success: 0.9
                error_plaid: 0.01
                error_institution: 0.09
            transactions_updates:
              status: HEALTHY
              last_status_change: "2019-02-12T08:22:00Z"
              breakdown:
                success: 0.95
                error_plaid: 0.02
                error_institution: 0.03
                refresh_interval: NORMAL
            auth:
              status: HEALTHY
              last_status_change: "2019-02-15T15:53:00Z"
              breakdown:
                success: 0.91
                error_plaid: 0.01
                error_institution: 0.08
            balance:
              status: HEALTHY
              last_status_change: "2019-02-15T15:53:00Z"
              breakdown:
                success: 0.89
                error_plaid: 0.02
                error_institution: 0.09
            identity:
              status: DEGRADED
              last_status_change: "2019-02-15T15:50:00Z"
              breakdown:
                success: 0.42
                error_plaid: 0.08
                error_institution: 0.5
            investments:
              status: HEALTHY
              last_status_change: "2019-02-15T15:53:00Z"
              breakdown:
                success: 0.89
                error_plaid: 0.02
                error_institution: 0.09
            liabilities:
              status: HEALTHY
              last_status_change: "2019-02-15T15:53:00Z"
              breakdown:
                success: 0.89
                error_plaid: 0.02
                error_institution: 0.09
            investments_updates:
              status: HEALTHY
              last_status_change: "2019-02-12T08:22:00Z"
              breakdown:
                success: 0.95
                error_plaid: 0.02
                error_institution: 0.03
                refresh_interval: NORMAL
            liabilities_updates:
              status: HEALTHY
              last_status_change: "2019-02-12T08:22:00Z"
              breakdown:
                success: 0.95
                error_plaid: 0.02
                error_institution: 0.03
                refresh_interval: NORMAL
    CountryCode:
      type: string
      title: CountryCode
      enum:
      - US
      - GB
      - ES
      - NL
      - FR
      - IE
      - CA
      description: ISO-3166-1 alpha-2 country code standard.
    PaymentMeta:
      title: PaymentMeta
      type: object
      additionalProperties: true
      description: |-
        Transaction information specific to inter-bank transfers. If the transaction was not an inter-bank transfer, all fields will be `null`.

        If the `transactions` object was returned by a Transactions endpoint such as `/transactions/get`, the `payment_meta` key will always appear, but no data elements are guaranteed. If the `transactions` object was returned by an Assets endpoint such as `/asset_report/get/` or `/asset_report/pdf/get`, this field will only appear in an Asset Report with Insights.
      properties:
        reference_number:
          type: string
          description: The transaction reference number supplied by the financial institution.
          nullable: true
        ppd_id:
          type: string
          description: The ACH PPD ID for the payer.
          nullable: true
        payee:
          type: string
          description: For transfers, the party that is receiving the transaction.
          nullable: true
        by_order_of:
          type: string
          description: The party initiating a wire transfer. Will be `null` if the transaction is not a wire transfer.
          nullable: true
        payer:
          type: string
          description: For transfers, the party that is paying the transaction.
          nullable: true
        payment_method:
          type: string
          description: The type of transfer, e.g. 'ACH'
          nullable: true
        payment_processor:
          type: string
          description: The name of the payment processor
          nullable: true
        reason:
          type: string
          description: The payer-supplied description of the transfer.
          nullable: true
      required:
      - reference_number
      - ppd_id
      - payee
      - by_order_of
      - payer
      - payment_method
      - payment_processor
      - reason
    TransactionCode:
      type: string
      title: transaction_code
      description: |-
        An identifier classifying the transaction type.

        This field is only populated for European institutions. For institutions in the US and Canada, this field is set to `null`.

        `adjustment:` Bank adjustment

        `atm:` Cash deposit or withdrawal via an automated teller machine

        `bank charge:` Charge or fee levied by the institution

        `bill payment`: Payment of a bill

        `cash:` Cash deposit or withdrawal

        `cashback:` Cash withdrawal while making a debit card purchase

        `cheque:` Document ordering the payment of money to another person or organization

        `direct debit:` Automatic withdrawal of funds initiated by a third party at a regular interval

        `interest:` Interest earned or incurred

        `purchase:` Purchase made with a debit or credit card

        `standing order:` Payment instructed by the account holder to a third party at a regular interval

        `transfer:` Transfer of money between accounts
      enum:
      - adjustment
      - atm
      - bank charge
      - bill payment
      - cash
      - cashback
      - cheque
      - direct debit
      - interest
      - purchase
      - standing order
      - transfer
      - null
      nullable: true
    Category:
      title: Category
      type: object
      additionalProperties: true
      description: Information describing a transaction category
      properties:
        category_id:
          type: string
          description: An identifying number for the category. `category_id` is a Plaid-specific identifier and does not necessarily correspond to merchant category codes.
        group:
          type: string
          description: '`place` for physical transactions or `special` for other transactions such as bank charges.'
        hierarchy:
          type: array
          description: A hierarchical array of the categories to which this `category_id` belongs.
          items:
            type: string
      required:
      - category_id
      - group
      - hierarchy
    AccessToken:
      title: AccessToken
      type: string
      description: The access token associated with the Item data is being requested for.
    AccessTokenNullable:
      nullable: true
      type: string
      description: The access token associated with the Item data is being requested for.
    TransferAccessToken:
      description: The Plaid `access_token` for the account that will be debited or credited.
      type: string
    BankTransferAccessToken:
      description: The Plaid `access_token` for the account that will be debited or credited.
      type: string
    APISecret:
      title: APISecret
      type: string
      description: Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part of a request body.
    APIClientID:
      title: ClientID
      type: string
      description: Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header or as part of a request body.
    TransactionsRemovedWebhook:
      title: TransactionsRemovedWebhook
      description: Fired when transaction(s) for an Item are deleted. The deleted transaction IDs are included in the webhook payload. Plaid will typically check for deleted transaction data several times a day.
      type: object
      additionalProperties: true
      properties:
        webhook_type:
          type: string
          description: '`TRANSACTIONS`'
        webhook_code:
          type: string
          description: '`TRANSACTIONS_REMOVED`'
        error:
          $ref: '#/components/schemas/Error'
        removed_transactions:
          type: array
          description: An array of `transaction_ids` corresponding to the removed transactions
          items:
            type: string
        item_id:
          $ref: '#/components/schemas/ItemId'
      required:
      - webhook_type
      - webhook_code
      - removed_transactions
      - item_id
      x-examples:
        example-1:
          webhook_type: TRANSACTIONS
          webhook_code: TRANSACTIONS_REMOVED
          item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb
          removed_transactions:
          - yBVBEwrPyJs8GvR77N7QTxnGg6wG74H7dEDN6
          - kgygNvAVPzSX9KkddNdWHaVGRVex1MHm3k9no
          error: null
    DefaultUpdateWebhook:
      type: object
      additionalProperties: true
      description: |
        Fired when new transaction data is available for an Item. Plaid will typically check for new transaction data several times a day.
      x-examples:
        example-1:
          webhook_type: TRANSACTIONS
          webhook_code: DEFAULT_UPDATE
          item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb
          error: null
          new_transactions: 3
      properties:
        webhook_type:
          type: string
          description: '`TRANSACTIONS`'
        webhook_code:
          type: string
          description: '`DEFAULT_UPDATE`'
        error:
          $ref: '#/components/schemas/Error'
        new_transactions:
          type: number
          description: The number of new transactions detected since the last time this webhook was fired.
          title: DefaultUpdateWebhook
        item_id:
          type: string
          description: The `item_id` of the Item the webhook relates to.
      required:
      - webhook_type
      - webhook_code
      - new_transactions
      - item_id
    HistoricalUpdateWebhook:
      title: HistoricalUpdateWebhook
      description: Fired when an Item's historical transaction pull is completed and Plaid has prepared as much historical transaction data as possible for the Item. Once this webhook has been fired, transaction data beyond the most recent 30 days can be fetched for the Item.
      type: object
      additionalProperties: true
      properties:
        webhook_type:
          type: string
          description: '`TRANSACTIONS`'
        webhook_code:
          type: string
          description: '`HISTORICAL_UPDATE`'
        error:
          $ref: '#/components/schemas/Error'
        new_transactions:
          type: number
          description: The number of new, unfetched transactions available
        item_id:
          $ref: '#/components/schemas/ItemId'
      required:
      - webhook_type
      - webhook_code
      - new_transactions
      - item_id
      x-examples:
        example-1:
          webhook_type: TRANSACTIONS
          webhook_code: HISTORICAL_UPDATE
          item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb
          error: null
          new_transactions: 231
    InitialUpdateWebhook:
      title: InitialUpdateWebhook
      description: Fired when an Item's initial transaction pull is completed. Once this webhook has been fired, transaction data for the most recent 30 days can be fetched for the Item.
      type: object
      additionalProperties: true
      x-examples:
        example-1:
          webhook_type: TRANSACTIONS
          webhook_code: INITIAL_UPDATE
          item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb
          error: null
          new_transactions: 19
      properties:
        webhook_type:
          type: string
          description: '`TRANSACTIONS`'
        webhook_code:
          type: string
          description: '`INITIAL_UPDATE`'
        error:
          type: string
          nullable: true
          description: The error code associated with the webhook.
        new_transactions:
          type: number
          description: The number of new, unfetched transactions available.
        item_id:
          $ref: '#/components/schemas/ItemId'
      required:
      - webhook_type
      - webhook_code
      - new_transactions
      - item_id
    PhoneNumber:
      title: PhoneNumber
      type: object
      additionalProperties: true
      description: A phone number
      properties:
        data:
          type: string
          description: The phone number.
        primary:
          type: boolean
          description: When `true`, identifies the phone number as the primary number on an account.
        type:
          type: string
          enum:
          - home
          - work
          - office
          - mobile
          - mobile1
          - other
          description: The type of phone number.
      required:
      - data
      - primary
      - type
    Email:
      title: Email
      type: object
      additionalProperties: true
      properties:
        data:
          type: string
          description: The email address.
        primary:
          type: boolean
          description: When `true`, identifies the email address as the primary email on an account.
        type:
          type: string
          enum:
          - primary
          - secondary
          - other
          description: The type of email account as described by the financial institution.
      required:
      - data
      - primary
      - type
      description: An object representing an email address
    Address:
      title: Address
      type: object
      additionalProperties: true
      description: A physical mailing address.
      properties:
        data:
          $ref: '#/components/schemas/AddressData'
        primary:
          type: boolean
          description: When `true`, identifies the address as the primary address on an account.
      required:
      - data
    AddressNullable:
      nullable: true
      allOf:
      - $ref: '#/components/schemas/Address'
      - type: object
        additionalProperties: true
    AddressDataNullable:
      nullable: true
      description: Data about the components comprising an address.
      allOf:
      - $ref: '#/components/schemas/AddressData'
      - type: object
        additionalProperties: true
    AddressData:
      title: AddressData
      type: object
      additionalProperties: true
      description: Data about the components comprising an address.
      properties:
        city:
          type: string
          description: The full city name
        region:
          type: string
          description: |-
            The region or state
            Example: `"NC"`
          nullable: true
        street:
          type: string
          description: |-
            The full street address
            Example: `"564 Main Street, APT 15"`
        postal_code:
          type: string
          description: The postal code
          nullable: true
        country:
          type: string
          description: The ISO 3166-1 alpha-2 country code
          nullable: true
      required:
      - city
      - region
      - street
      - postal_code
      - country
    ProcessorToken:
      title: ProcessorToken
      type: string
      description: 'The processor token obtained from the Plaid integration partner. Processor tokens are in the format: `processor-<environment>-<identifier>`'
    HistoricalBalance:
      title: HistoricalBalance
      type: object
      additionalProperties: true
      description: An object representing a balance held by an account in the past
      properties:
        date:
          type: string
          format: date
          description: The date of the calculated historical balance, in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD)
        current:
          type: number
          description: |-
            The total amount of funds in the account, calculated from the `current` balance in the `balance` object by subtracting inflows and adding back outflows according to the posted date of each transaction.

            If the account has any pending transactions, historical balance amounts on or after the date of the earliest pending transaction may differ if retrieved in subsequent Asset Reports as a result of those pending transactions posting.
        iso_currency_code:
          type: string
          description: The ISO-4217 currency code of the balance. Always `null` if `unofficial_currency_code` is non-`null`.
          nullable: true
        unofficial_currency_code:
          type: string
          description: |-
            The unofficial currency code associated with the balance. Always `null` if `iso_currency_code` is non-`null`.

            See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s.
          nullable: true
      required:
      - date
      - current
      - iso_currency_code
      - unofficial_currency_code
    Owner:
      title: Owner
      type: object
      additionalProperties: true
      description: Data returned from the financial institution about the owner or owners of an account. Only the `names` array must be non-empty.
      properties:
        names:
          description: |-
            A list of names associated with the account by the financial institution. These should always be the names of individuals, even for business accounts. If the name of a business is reported, please contact Plaid Support. In the case of a joint account, Plaid will make a best effort to report the names of all account holders.

            If an Item contains multiple accounts with different owner names, some institutions will report all names associated with the Item in each account's `names` array.
          type: array
          items:
            type: string
        phone_numbers:
          type: array
          description: A list of phone numbers associated with the account by the financial institution. May be an empty array if no relevant information is returned from the financial institution.
          items:
            $ref: '#/components/schemas/PhoneNumber'
        emails:
          type: array
          description: A list of email addresses associated with the account by the financial institution. May be an empty array if no relevant information is returned from the financial institution.
          items:
            $ref: '#/components/schemas/Email'
        addresses:
          type: array
          description: Data about the various addresses associated with the account by the financial institution. May be an empty array if no relevant information is returned from the financial institution.
          items:
            $ref: '#/components/schemas/Address'
      required:
      - names
      - phone_numbers
      - emails
      - addresses
    OwnerOverride:
      title: OwnerOverride
      type: object
      additionalProperties: true
      description: Data about the owner or owners of an account. Any fields not specified will be filled in with default Sandbox information.
      properties:
        names:
          description: A list of names associated with the account by the financial institution. These should always be the names of individuals, even for business accounts. Note that the same name data will be used for all accounts associated with an Item.
          type: array
          items:
            type: string
        phone_numbers:
          type: array
          description: A list of phone numbers associated with the account.
          items:
            $ref: '#/components/schemas/PhoneNumber'
        emails:
          type: array
          description: A list of email addresses associated with the account.
          items:
            $ref: '#/components/schemas/Email'
        addresses:
          type: array
          description: Data about the various addresses associated with the account.
          items:
            $ref: '#/components/schemas/Address'
      required:
      - names
      - phone_numbers
      - emails
      - addresses
    LiabilitiesObject:
      title: LiabilitiesObject
      type: object
      additionalProperties: true
      description: An object containing liability accounts
      properties:
        credit:
          type: array
          description: The credit accounts returned.
          nullable: true
          items:
            $ref: '#/components/schemas/CreditCardLiability'
        mortgage:
          description: The mortgage accounts returned.
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/MortgageLiability'
        student:
          description: The student loan accounts returned.
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/StudentLoan'
      required:
      - credit
      - mortgage
      - student
    StudentLoan:
      title: StudentLoan
      type: object
      additionalProperties: true
      description: Contains details about a student loan account
      properties:
        account_id:
          type: string
          description: The ID of the account that this liability belongs to.
          nullable: true
        account_number:
          type: string
          description: The account number of the loan. For some institutions, this may be a masked version of the number (e.g., the last 4 digits instead of the entire number).
          nullable: true
        disbursement_dates:
          description: The dates on which loaned funds were disbursed or will be disbursed. These are often in the past. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).
          type: array
          nullable: true
          items:
            type: string
            format: date
        expected_payoff_date:
          type: string
          format: date
          description: The date when the student loan is expected to be paid off. Availability for this field is limited. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).
          nullable: true
        guarantor:
          type: string
          description: The guarantor of the student loan.
          nullable: true
        interest_rate_percentage:
          description: The interest rate on the loan as a percentage.
          type: number
        is_overdue:
          description: '`true` if a payment is currently overdue. Availability for this field is limited.'
          type: boolean
          nullable: true
        last_payment_amount:
          description: The amount of the last payment.
          type: number
          nullable: true
        last_payment_date:
          type: string
          format: date
          description: The date of the last payment. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).
          nullable: true
        last_statement_issue_date:
          type: string
          format: date
          description: The date of the last statement. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).
          nullable: true
        loan_name:
          type: string
          description: The type of loan, e.g., "Consolidation Loans".
          nullable: true
        loan_status:
          $ref: '#/components/schemas/StudentLoanStatus'
        minimum_payment_amount:
          description: |-
            The minimum payment due for the next billing cycle. There are some exceptions:
            Some institutions require a minimum payment across all loans associated with an account number. Our API presents that same minimum payment amount on each loan. The institutions that do this are: Great Lakes ( `ins_116861`), Firstmark (`ins_116295`), Commonbond Firstmark Services (`ins_116950`), Nelnet (`ins_116528`), EdFinancial Services (`ins_116304`), Granite State (`ins_116308`), and Oklahoma Student Loan Authority (`ins_116945`).
            Firstmark (`ins_116295` ) will display as $0 if there is an autopay program in effect.
          type: number
          nullable: true
        next_payment_due_date:
          type: string
          format: date
          description: The due date for the next payment. The due date is `null` if a payment is not expected. A payment is not expected if `loan_status.type` is `deferment`, `in_school`, `consolidated`, `paid in full`, or `transferred`. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).
          nullable: true
        origination_date:
          type: string
          format: date
          description: |
            The date on which the loan was initially lent. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).
          nullable: true
        origination_principal_amount:
          description: The original principal balance of the loan.
          type: number
          nullable: true
        outstanding_interest_amount:
          description: The total dollar amount of the accrued interest balance. For Sallie Mae ( `ins_116944`), this amount is included in the current balance of the loan, so this field will return as `null`.
          type: number
          nullable: true
        payment_reference_number:
          type: string
          description: The relevant account number that should be used to reference this loan for payments. In the majority of cases, `payment_reference_number` will match a`ccount_number,` but in some institutions, such as Great Lakes (`ins_116861`), it will be different.
          nullable: true
        pslf_status:
          $ref: '#/components/schemas/PSLFStatus'
        repayment_plan:
          $ref: '#/components/schemas/StudentRepaymentPlan'
        sequence_number:
          type: string
          description: The sequence number of the student loan. Heartland ECSI (`ins_116948`) does not make this field available.
          nullable: true
        servicer_address:
          $ref: '#/components/schemas/ServicerAddressData'
        ytd_interest_paid:
          description: The year to date (YTD) interest paid. Availability for this field is limited.
          type: number
          nullable: true
        ytd_principal_paid:
          description: The year to date (YTD) principal paid. Availability for this field is limited.
          type: number
          nullable: true
      required:
      - account_id
      - account_number
      - disbursement_dates
      - expected_payoff_date
      - guarantor
      - interest_rate_percentage
      - is_overdue
      - last_payment_amount
      - last_payment_date
      - last_statement_issue_date
      - loan_name
      - loan_status
      - minimum_payment_amount
      - next_payment_due_date
      - origination_date
      - origination_principal_amount
      - outstanding_interest_amount
      - payment_reference_number
      - pslf_status
      - repayment_plan
      - sequence_number
      - servicer_address
      - ytd_interest_paid
      - ytd_principal_paid
    CreditCardLiability:
      title: CreditCardLiability
      type: object
      additionalProperties: true
      description: An object representing a credit card account.
      properties:
        account_id:
          type: string
          description: The ID of the account that this liability belongs to.
          nullable: true
        aprs:
          type: array
          description: The various interest rates that apply to the account.
          items:
            $ref: '#/components/schemas/APR'
        is_overdue:
          description: true if a payment is currently overdue. Availability for this field is limited.
          type: boolean
          nullable: true
        last_payment_amount:
          description: The amount of the last payment.
          type: number
        last_payment_date:
          type: string
          format: date
          description: The date of the last payment. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). Availability for this field is limited.
        last_statement_issue_date:
          type: string
          format: date
          description: The date of the last statement. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).
        minimum_payment_amount:
          description: The minimum payment due for the next billing cycle.
          type: number
        next_payment_due_date:
          type: string
          format: date
          description: The due date for the next payment. The due date is `null` if a payment is not expected. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).
          nullable: true
      required:
      - account_id
      - aprs
      - is_overdue
      - last_payment_amount
      - last_payment_date
      - last_statement_issue_date
      - minimum_payment_amount
      - next_payment_due_date
    MortgageLiability:
      title: MortgageLiability
      type: object
      additionalProperties: true
      description: Contains details about a mortgage account.
      properties:
        account_id:
          type: string
          description: The ID of the account that this liability belongs to.
        account_number:
          type: string
          description: The account number of the loan.
        current_late_fee:
          description: The current outstanding amount charged for late payment.
          type: number
          nullable: true
        escrow_balance:
          type: number
          description: Total amount held in escrow to pay taxes and insurance on behalf of the borrower.
          nullable: true
        has_pmi:
          type: boolean
          description: Indicates whether the borrower has private mortgage insurance in effect.
          nullable: true
        has_prepayment_penalty:
          description: Indicates whether the borrower will pay a penalty for early payoff of mortgage.
          type: boolean
          nullable: true
        interest_rate:
          $ref: '#/components/schemas/MortgageInterestRate'
        last_payment_amount:
          description: The amount of the last payment.
          type: number
          nullable: true
        last_payment_date:
          type: string
          format: date
          description: The date of the last payment. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).
          nullable: true
        loan_type_description:
          description: Description of the type of loan, for example `conventional`, `fixed`, or `variable`. This field is provided directly from the loan servicer and does not have an enumerated set of possible values.
          type: string
          nullable: true
        loan_term:
          description: Full duration of mortgage as at origination (e.g. `10 year`).
          type: string
          nullable: true
        maturity_date:
          type: string
          format: date
          description: Original date on which mortgage is due in full. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).
          nullable: true
        next_monthly_payment:
          type: number
          description: The amount of the next payment.
          nullable: true
        next_payment_due_date:
          description: The due date for the next payment. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).
          type: string
          format: date
          nullable: true
        origination_date:
          description: The date on which the loan was initially lent. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).
          type: string
          format: date
          nullable: true
        origination_principal_amount:
          type: number
          description: The original principal balance of the mortgage.
          nullable: true
        past_due_amount:
          type: number
          description: Amount of loan (principal + interest) past due for payment.
          nullable: true
        property_address:
          $ref: '#/components/schemas/MortgagePropertyAddress'
        ytd_interest_paid:
          description: The year to date (YTD) interest paid.
          type: number
          nullable: true
        ytd_principal_paid:
          type: number
          description: The YTD principal paid.
          nullable: true
      required:
      - account_id
      - account_number
      - current_late_fee
      - escrow_balance
      - has_pmi
      - has_prepayment_penalty
      - interest_rate
      - last_payment_amount
      - last_payment_date
      - loan_type_description
      - loan_term
      - maturity_date
      - next_monthly_payment
      - next_payment_due_date
      - origination_date
      - origination_principal_amount
      - past_due_amount
      - property_address
      - ytd_interest_paid
      - ytd_principal_paid
    MortgageInterestRate:
      title: MortgageInterestRate
      type: object
      additionalProperties: true
      description: Object containing metadata about the interest rate for the mortgage.
      properties:
        percentage:
          type: number
          description: Percentage value (interest rate of current mortgage, not APR) of interest payable on a loan.
          nullable: true
        type:
          type: string
          description: The type of interest charged (fixed or variable).
          nullable: true
      required:
      - percentage
      - type
    MortgagePropertyAddress:
      title: MortgagePropertyAddress
      type: object
      additionalProperties: true
      description: Object containing fields describing property address.
      properties:
        city:
          type: string
          description: The city name.
          nullable: true
        country:
          type: string
          description: The ISO 3166-1 alpha-2 country code.
          nullable: true
        postal_code:
          type: string
          description: The five or nine digit postal code.
          nullable: true
        region:
          type: string
          description: The region or state (example "NC").
          nullable: true
        street:
          type: string
          description: The full street address (example "564 Main Street, Apt 15").
          nullable: true
      required:
      - city
      - country
      - postal_code
      - region
      - street
    StudentLoanStatus:
      title: StudentLoanStatus
      type: object
      additionalProperties: true
      description: An object representing the status of the student loan
      properties:
        end_date:
          type: string
          format: date
          description: |
            The date until which the loan will be in its current status. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).
          nullable: true
        type:
          type: string
          enum:
          - cancelled
          - charged off
          - claim
          - consolidated
          - deferment
          - delinquent
          - discharged
          - extension
          - forbearance
          - in grace
          - in military
          - in school
          - not fully disbursed
          - other
          - paid in full
          - refunded
          - repayment
          - transferred
          description: The status type of the student loan
          nullable: true
      required:
      - end_date
      - type
    StudentRepaymentPlan:
      title: StudentRepaymentPlan
      type: object
      additionalProperties: true
      description: An object representing the repayment plan for the student loan
      properties:
        description:
          type: string
          nullable: true
          description: The description of the repayment plan as provided by the servicer.
        type:
          type: string
          nullable: true
          enum:
          - extended graduated
          - extended standard
          - graduated
          - income-contingent repayment
          - income-based repayment
          - interest-only
          - other
          - pay as you earn
          - revised pay as you earn
          - standard
          - null
          description: The type of the repayment plan.
      required:
      - description
      - type
    PSLFStatus:
      title: PSLFStatus
      type: object
      additionalProperties: true
      description: 'Information about the student''s eligibility in the Public Service Loan Forgiveness program. This is only returned if the institution is Fedloan (`ins_116527`). '
      properties:
        estimated_eligibility_date:
          type: string
          format: date
          description: The estimated date borrower will have completed 120 qualifying monthly payments. Returned in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).
          nullable: true
        payments_made:
          type: number
          description: The number of qualifying payments that have been made.
          nullable: true
        payments_remaining:
          type: number
          description: The number of qualifying payments remaining.
          nullable: true
      required:
      - estimated_eligibility_date
      - payments_made
      - payments_remaining
    ServicerAddressData:
      title: ServicerAddressData
      type: object
      additionalProperties: true
      description: The address of the student loan servicer. This is generally the remittance address to which payments should be sent.
      properties:
        city:
          type: string
          description: The full city name
          nullable: true
        region:
          type: string
          description: |-
            The region or state
            Example: `"NC"`
          nullable: true
        street:
          type: string
          description: |-
            The full street address
            Example: `"564 Main Street, APT 15"`
          nullable: true
        postal_code:
          type: string
          description: The postal code
          nullable: true
        country:
          type: string
          description: The ISO 3166-1 alpha-2 country code
          nullable: true
      required:
      - city
      - region
      - street
      - postal_code
      - country
    APR:
      title: APR
      type: object
      additionalProperties: true
      description: Information about the APR on the account.
      properties:
        apr_percentage:
          type: number
          description: |
            Annual Percentage Rate applied.
        apr_type:
          type: string
          enum:
          - balance_transfer_apr
          - cash_apr
          - purchase_apr
          - special
          description: The type of balance to which the APR applies.
        balance_subject_to_apr:
          type: number
          description: Amount of money that is subjected to the APR if a balance was carried beyond payment due date. How it is calculated can vary by card issuer. It is often calculated as an average daily balance.
          nullable: true
        interest_charge_amount:
          type: number
          description: Amount of money charged due to interest from last statement.
          nullable: true
      required:
      - apr_percentage
      - apr_type
      - balance_subject_to_apr
      - interest_charge_amount
    PaymentInitiationMetadata:
      title: PaymentInitiationMetadata
      type: object
      additionalProperties: true
      description: Metadata that captures what specific payment configurations an institution supports when making Payment Initiation requests.
      nullable: true
      properties:
        supports_international_payments:
          type: boolean
          description: Indicates whether the institution supports payments from a different country.
        maximum_payment_amount:
          type: object
          description: |
            A mapping of currency to maximum payment amount (denominated in the smallest unit of currency) supported by the insitution.

            Example: `{"GBP": "10000"}`
          additionalProperties:
            type: string
        supports_refund_details:
          type: boolean
          description: Indicates whether the institution supports returning refund details when initiating a payment.
        standing_order_metadata:
          $ref: '#/components/schemas/PaymentInitiationStandingOrderMetadata'
      required:
      - supports_international_payments
      - maximum_payment_amount
      - supports_refund_details
      - standing_order_metadata
    PaymentInitiationStandingOrderMetadata:
      title: PaymentInitiationStandingOrderMetadata
      type: object
      additionalProperties: true
      description: Metadata specifically related to valid Payment Initiation standing order configurations for the institution.
      nullable: true
      properties:
        supports_standing_order_end_date:
          type: boolean
          description: Indicates whether the institution supports closed-ended standing orders by providing an end date.
        supports_standing_order_negative_execution_days:
          type: boolean
          description: This is only applicable to `MONTHLY` standing orders. Indicates whether the institution supports negative integers (-1 to -5) for setting up a `MONTHLY` standing order relative to the end of the month.
        valid_standing_order_intervals:
          type: array
          description: A list of the valid standing order intervals supported by the institution.
          items:
            $ref: '#/components/schemas/PaymentScheduleInterval'
      required:
      - supports_standing_order_end_date
      - supports_standing_order_negative_execution_days
      - valid_standing_order_intervals
    PaymentInitiationAddress:
      title: PaymentInitiationAddress
      type: object
      additionalProperties: true
      description: The optional address of the payment recipient. This object is not currently required to make payments from UK institutions and should not be populated, though may be necessary for future European expansion.
      nullable: true
      properties:
        street:
          description: An array of length 1-2 representing the street address where the recipient is located. Maximum of 70 characters.
          type: array
          minItems: 1
          items:
            type: string
            minLength: 1
        city:
          type: string
          description: The city where the recipient is located. Maximum of 35 characters.
          minLength: 1
          maxLength: 35
        postal_code:
          type: string
          description: The postal code where the recipient is located. Maximum of 16 characters.
          minLength: 1
          maxLength: 16
        country:
          type: string
          description: The ISO 3166-1 alpha-2 country code where the recipient is located.
          minLength: 2
          maxLength: 2
      required:
      - street
      - city
      - postal_code
      - country
    ExternalPaymentScheduleBase:
      title: ExternalPaymentScheduleBase
      type: object
      additionalProperties: true
      description: The schedule that the payment will be executed on. If a schedule is provided, the payment is automatically set up as a standing order. If no schedule is specified, the payment will be executed only once.
      nullable: true
      properties:
        interval:
          $ref: '#/components/schemas/PaymentScheduleInterval'
        interval_execution_day:
          description: |-
            The day of the interval on which to schedule the payment.

            If the payment interval is weekly, `interval_execution_day` should be an integer from 1 (Monday) to 7 (Sunday).

            If the payment interval is monthly, `interval_execution_day` should be an integer indicating which day of the month to make the payment on. Integers from 1 to 28 can be used to make a payment on that day of the month. Negative integers from -1 to -5 can be used to make a payment relative to the end of the month. To make a payment on the last day of the month, use -1; to make the payment on the second-to-last day, use -2, and so on.
          type: integer
        start_date:
          format: date
          type: string
          description: |-
            A date in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). Standing order payments will begin on the first `interval_execution_day` on or after the `start_date`.

            If the first `interval_execution_day` on or after the start date is also the same day that `/payment_initiation/payment/create` was called, the bank *may* make the first payment on that day, but it is not guaranteed to do so.
        end_date:
          format: date
          type: string
          description: |-
            A date in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). Standing order payments will end on the last `interval_execution_day` on or before the `end_date`.
            If the only `interval_execution_day` between the start date and the end date (inclusive) is also the same day that `/payment_initiation/payment/create` was called, the bank *may* make a payment on that day, but it is not guaranteed to do so.
          nullable: true
        adjusted_start_date:
          format: date
          type: string
          description: The start date sent to the bank after adjusting for holidays or weekends.  Will be provided in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). If the start date did not require adjustment, this field will be `null`.
          nullable: true
    ExternalPaymentScheduleRequest:
      title: ExternalPaymentScheduleRequest
      additionalProperties: true
      description: The schedule that the payment will be executed on. If a schedule is provided, the payment is automatically set up as a standing order. If no schedule is specified, the payment will be executed only once.
      allOf:
      - $ref: '#/components/schemas/ExternalPaymentScheduleBase'
      - type: object
      required:
      - start_date
      - interval
      - interval_execution_day
    PaymentScheduleInterval:
      type: string
      title: PaymentScheduleInterval
      enum:
      - WEEKLY
      - MONTHLY
      description: The frequency interval of the payment.
      minLength: 1
    ExternalPaymentOptions:
      title: PaymentOptions
      description: Additional payment options
      type: object
      additionalProperties: true
      nullable: true
      properties:
        request_refund_details:
          type: boolean
          nullable: true
          description: When `true`, Plaid will attempt to request refund details from the payee's financial institution.  Support varies between financial institutions and will not always be available.  If refund details could be retrieved, they will be available in the `/payment_initiation/payment/get` response.
        iban:
          type: string
          nullable: true
          minLength: 15
          maxLength: 34
          description: The International Bank Account Number (IBAN) for the payer's account. If provided, the end user will be able to send payments only from the specified bank account.
        bacs:
          $ref: '#/components/schemas/PaymentInitiationOptionalRestrictionBacs'
        emi_account_id:
          type: string
          nullable: true
          description: The EMI (E-Money Institution) account that this payment is associated with, if any. This EMI account is used as an intermediary account to enable Plaid to reconcile the settlement of funds for Payment Initiation requests.
          minLength: 1
    ExternalPaymentRefundDetails:
      title: ExternalPaymentRefundDetails
      type: object
      description: External payment refund details.
      nullable: true
      properties:
        name:
          type: string
          description: The name of the account holder.
        iban:
          type: string
          description: The International Bank Account Number (IBAN) for the account.
          nullable: true
        bacs:
          $ref: '#/components/schemas/RecipientBACSNullable'
      required:
      - name
      - iban
      - bacs
    ExternalPaymentScheduleGet:
      title: ExternalPaymentScheduleGet
      nullable: true
      description: The schedule that the payment will be executed on. If a schedule is provided, the payment is automatically set up as a standing order. If no schedule is specified, the payment will be executed only once.
      allOf:
      - $ref: '#/components/schemas/ExternalPaymentScheduleBase'
      - type: object
      required:
      - adjusted_start_date
      - end_date
      - interval
      - interval_execution_day
      - start_date
    Products:
      title: Products
      enum:
      - assets
      - auth
      - balance
      - identity
      - investments
      - liabilities
      - payment_initiation
      - transactions
      - credit_details
      - income
      - income_verification
      - deposit_switch
      - standing_orders
      description: A list of products that an institution can support. All Items must be initialized with at least one product. The Balance product is always available and does not need to be specified during initialization.
      type: string
    ProductStatus:
      title: ProductStatus
      type: object
      additionalProperties: true
      description: A representation of the status health of a request type. Auth requests, Balance requests, Identity requests, Investments requests, Liabilities requests, Transactions updates, Investments updates, Liabilities updates, and Item logins each have their own status object.
      properties:
        status:
          type: string
          enum:
          - HEALTHY
          - DEGRADED
          - DOWN
          description: |-
            `HEALTHY`: the majority of requests are successful
            `DEGRADED`: only some requests are successful
            `DOWN`: all requests are failing
        last_status_change:
          type: string
          format: date-time
          description: |
            [ISO 8601](https://wikipedia.org/wiki/ISO_8601) formatted timestamp of the last status change for the institution.
        breakdown:
          $ref: '#/components/schemas/ProductStatusBreakdown'
      required:
      - status
      - last_status_change
      - breakdown
    ProductStatusBreakdown:
      title: StatusBreakdown
      type: object
      additionalProperties: true
      description: A detailed breakdown of the institution's performance for a request type. The values for `success`, `error_plaid`, and `error_institution` sum to 1.
      properties:
        success:
          description: The percentage of login attempts that are successful, expressed as a decimal.
          type: number
        error_plaid:
          description: |
            The percentage of logins that are failing due to an internal Plaid issue, expressed as a decimal.
          type: number
        error_institution:
          description: The percentage of logins that are failing due to an issue in the institution's system, expressed as a decimal.
          type: number
        refresh_interval:
          type: string
          enum:
          - NORMAL
          - DELAYED
          - STOPPED
          description: The `refresh_interval` may be `DELAYED` or `STOPPED` even when the success rate is high. This value is only returned for Transactions status breakdowns.
      required:
      - success
      - error_plaid
      - error_institution
    UserCustomPassword:
      title: UserCustomPassword
      type: object
      additionalProperties: true
      description: Custom test accounts are configured with a JSON configuration object formulated according to the schema below. All fields are optional. Sending an empty object as a configuration will result in an account configured with random balances and transaction history.
      x-examples: {}
      properties:
        version:
          type: string
          description: The version of the password schema to use, possible values are 1 or 2. The default value is 2. You should only specify 1 if you know it is necessary for your test suite.
          nullable: true
        seed:
          type: string
          description: |-
            A seed, in the form of a string, that will be used to randomly generate account and transaction data, if this data is not specified using the `override_accounts` argument. If no seed is specified, the randomly generated data will be different each time.

            Note that transactions data is generated relative to the Item's creation date. Different Items created on different dates with the same seed for transactions data will have different dates for the transactions. The number of days between each transaction and the Item creation will remain constant. For example, an Item created on December 15 might show a transaction on December 14. An Item created on December 20, using the same seed, would show that same transaction occurring on December 19.
        override_accounts:
          type: array
          description: An array of account overrides to configure the accounts for the Item. By default, if no override is specified, transactions and account data will be randomly generated based on the account type and subtype, and other products will have fixed or empty data.
          items:
            $ref: '#/components/schemas/OverrideAccounts'
        mfa:
          $ref: '#/components/schemas/MFA'
        recaptcha:
          type: string
          description: You may trigger a reCAPTCHA in Plaid Link in the Sandbox environment by using the recaptcha field. Possible values are `good` or `bad`. A value of `good` will result in successful Item creation and `bad` will result in a `RECAPTCHA_BAD` error to simulate a failed reCAPTCHA. Both values require the reCAPTCHA to be manually solved within Plaid Link.
        force_error:
          type: string
          description: |-
            An error code to force on Item creation. Possible values are:

            `"INSTITUTION_NOT_RESPONDING"`
            `"INSTITUTION_NO_LONGER_SUPPORTED"`
            `"INVALID_CREDENTIALS"`
            `"INVALID_MFA"`
            `"ITEM_LOCKED"`
            `"ITEM_LOGIN_REQUIRED"`
            `"ITEM_NOT_SUPPORTED"`
            `"INVALID_LINK_TOKEN"`
            `"MFA_NOT_SUPPORTED"`
            `"NO_ACCOUNTS"`
            `"PLAID_ERROR"`
            `"PRODUCTS_NOT_SUPPORTED"`
            `"USER_SETUP_REQUIRED"`
      required:
      - seed
      - override_accounts
      - mfa
      - recaptcha
      - force_error
    MFA:
      title: MFA
      type: object
      additionalProperties: true
      properties:
        type:
          type: string
          description: |-
            Possible values are `device`, `selections`, or `questions`.

            If value is `device`, the MFA answer is `1234`.

            If value is `selections`, the MFA answer is always the first option.

            If value is `questions`, the MFA answer is  `answer_<i>_<j>` for the j-th question in the i-th round, starting from 0. For example, the answer to the first question in the second round is `answer_1_0`.
        question_rounds:
          type: number
          description: 'Number of rounds of questions. Required if value of `type` is `questions`. '
        questions_per_round:
          type: number
          description: Number of questions per round. Required if value of `type` is `questions`. If value of type is `selections`, default value is 2.
        selection_rounds:
          description: Number of rounds of selections, used if `type` is `selections`. Defaults to 1.
          type: number
        selections_per_question:
          type: number
          description: |
            Number of available answers per question, used if `type` is `selection`. Defaults to 2.
      required:
      - type
      - question_rounds
      - questions_per_round
      - selection_rounds
      - selections_per_question
      description: Specifies the multi-factor authentication settings to use with this test account
    OverrideAccounts:
      title: OverrideAccounts
      type: object
      additionalProperties: true
      description: Data to use to set values of test accounts. Some values cannot be specified in the schema and will instead will be calculated from other test data in order to achieve more consistent, realistic test data.
      properties:
        type:
          $ref: '#/components/schemas/OverrideAccountType'
        subtype:
          $ref: '#/components/schemas/AccountSubtype'
        starting_balance:
          type: number
          description: |
            If provided, the account will start with this amount as the current balance.
        force_available_balance:
          type: number
          description: If provided, the account will always have this amount as its  available balance, regardless of current balance or changes in transactions over time.
        currency:
          type: string
          description: ISO-4217 currency code. If provided, the account will be denominated in the given currency. Transactions will also be in this currency by default.
        meta:
          $ref: '#/components/schemas/Meta'
        numbers:
          $ref: '#/components/schemas/Numbers'
        transactions:
          description: Specify the list of transactions on the account.
          type: array
          items:
            $ref: '#/components/schemas/TransactionOverride'
        holdings:
          $ref: '#/components/schemas/HoldingsOverride'
        investment_transactions:
          $ref: '#/components/schemas/Investments_TransactionsOverride'
        identity:
          $ref: '#/components/schemas/OwnerOverride'
        liability:
          $ref: '#/components/schemas/LiabilityOverride'
        inflow_model:
          $ref: '#/components/schemas/InflowModel'
      required:
      - type
      - subtype
      - starting_balance
      - force_available_balance
      - currency
      - meta
      - numbers
      - transactions
      - identity
      - liability
      - inflow_model
    Meta:
      title: Meta
      type: object
      additionalProperties: true
      description: Allows specifying the metadata of the test account
      properties:
        name:
          type: string
          description: The account's name
        official_name:
          type: string
          description: The account's official name
        limit:
          type: number
          description: The account's limit
      required:
      - name
      - official_name
      - limit
    Numbers:
      title: Numbers
      type: object
      additionalProperties: true
      description: Account and bank identifier number data used to configure the test account. All values are optional.
      properties:
        account:
          type: string
          description: Will be used for the account number.
        ach_routing:
          type: string
          description: Must be a valid ACH routing number.
        ach_wire_routing:
          type: string
          description: Must be a valid wire transfer routing number.
        eft_institution:
          type: string
          description: EFT institution number. Must be specified alongside `eft_branch`.
        eft_branch:
          type: string
          description: EFT branch number. Must be specified alongside `eft_institution`.
        international_bic:
          type: string
          description: Bank identifier code (BIC). Must be specified alongside `international_iban`.
        international_iban:
          type: string
          description: International bank account number (IBAN). If no account number is specified via `account`, will also be used as the account number by default. Must be specified alongside `international_bic`.
        bacs_sort_code:
          type: string
          description: BACS sort code
    TransactionOverride:
      title: TransactionOverride
      type: object
      additionalProperties: true
      description: Data to populate as test transaction data. If not specified, random transactions will be generated instead.
      properties:
        date_transacted:
          type: string
          format: date
          description: The date of the transaction, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format. Transaction dates in the past or present will result in posted transactions; transaction dates in the future will result in pending transactions. Transactions in Sandbox will move from pending to posted once their transaction date has been reached.
        date_posted:
          type: string
          format: date
          description: The date the transaction posted, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format
        amount:
          type: number
          description: The transaction amount. Can be negative.
        description:
          type: string
          description: The transaction description.
        currency:
          type: string
          description: The ISO-4217 format currency code for the transaction.
      required:
      - date_transacted
      - date_posted
      - amount
      - description
    SecurityOverride:
      type: object
      title: SecurityOverride
      description: Specify the security associated with the holding or investment transaction. When inputting custom security data to the Sandbox, Plaid will perform post-data-retrieval normalization and enrichment. These processes may cause the data returned by the Sandbox to be slightly different from the data you input. An ISO-4217 currency code and a security identifier (`ticker_symbol`, `cusip`, `isin`, or `sedol`) are required.
      properties:
        isin:
          description: 12-character ISIN, a globally unique securities identifier.
          type: string
        cusip:
          description: 9-character CUSIP, an identifier assigned to North American securities.
          type: string
        sedol:
          description: 7-character SEDOL, an identifier assigned to securities in the UK.
          type: string
        name:
          description: A descriptive name for the security, suitable for display.
          type: string
        ticker_symbol:
          description: The security’s trading symbol for publicly traded securities, and otherwise a short identifier if available.
          type: string
        currency:
          description: Either a valid `iso_currency_code` or `unofficial_currency_code`
          type: string
    HoldingsOverride:
      type: object
      title: HoldingsOverride
      description: Specify the holdings on the account.
      properties:
        institution_price:
          description: The last price given by the institution for this security
          type: number
        institution_price_as_of:
          description: The date at which `institution_price` was current. Must be formatted as an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) date.
          type: string
          format: date
        cost_basis:
          description: The average original value of the holding. Multiple cost basis values for the same security purchased at different prices are not supported.
          type: number
        quantity:
          description: The total quantity of the asset held, as reported by the financial institution.
          type: number
        currency:
          description: Either a valid `iso_currency_code` or `unofficial_currency_code`
          type: string
        security:
          $ref: '#/components/schemas/SecurityOverride'
      required:
      - institution_price
      - quantity
      - currency
      - security
    Investments_TransactionsOverride:
      type: object
      description: Specify the list of investments transactions on the account.
      title: Investments_TransactionsOverride
      properties:
        date:
          description: Posting date for the transaction. Must be formatted as an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) date.
          type: string
          format: date
        name:
          description: The institution's description of the transaction.
          type: string
        quantity:
          description: The number of units of the security involved in this transaction. Must be positive if the type is a buy and negative if the type is a sell.
          type: number
        price:
          description: The price of the security at which this transaction occurred.
          type: number
        fees:
          description: The combined value of all fees applied to this transaction.
          type: number
        type:
          description: |-
            The type of the investment transaction. Possible values are:
            `buy`: Buying an investment
            `sell`: Selling an investment
            `cash`: Activity that modifies a cash position
            `fee`: A fee on the account
            `transfer`: Activity that modifies a position, but not through buy/sell activity e.g. options exercise, portfolio transfer
          type: string
        currency:
          description: Either a valid `iso_currency_code` or `unofficial_currency_code`
          type: string
        security:
          $ref: '#/components/schemas/SecurityOverride'
      required:
      - date
      - name
      - quantity
      - price
      - type
      - currency
    LiabilityOverride:
      type: object
      additionalProperties: true
      title: LiabilityOverride
      properties:
        type:
          description: The type of the liability object, either `credit` or `student`. Mortgages are not currently supported in the custom Sandbox.
          type: string
        purchase_apr:
          description: The purchase APR percentage value. For simplicity, this is the only interest rate used to calculate interest charges. Can only be set if `type` is `credit`.
          type: number
        cash_apr:
          type: number
          description: The cash APR percentage value. Can only be set if `type` is `credit`.
        balance_transfer_apr:
          type: number
          description: The balance transfer APR percentage value. Can only be set if `type` is `credit`. Can only be set if `type` is `credit`.
        special_apr:
          type: number
          description: The special APR percentage value. Can only be set if `type` is `credit`.
        last_payment_amount:
          type: number
          description: Override the `last_payment_amount` field. Can only be set if `type` is `credit`.
        minimum_payment_amount:
          type: number
          description: Override the `minimum_payment_amount` field. Can only be set if `type` is `credit` or `student`.
        is_overdue:
          type: boolean
          description: Override the `is_overdue` field
        origination_date:
          type: string
          format: date
          description: The date on which the loan was initially lent, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format. Can only be set if `type` is `student`.
        principal:
          description: The original loan principal. Can only be set if `type` is `student`.
          type: number
        nominal_apr:
          description: The interest rate on the loan as a percentage. Can only be set if `type` is `student`.
          type: number
        interest_capitalization_grace_period_months:
          type: number
          description: If set, interest capitalization begins at the given number of months after loan origination. By default interest is never capitalized. Can only be set if `type` is `student`.
        repayment_model:
          $ref: '#/components/schemas/StudentLoanRepaymentModel'
        expected_payoff_date:
          type: string
          format: date
          description: Override the `expected_payoff_date` field. Can only be set if `type` is `student`.
        guarantor:
          type: string
          description: Override the `guarantor` field. Can only be set if `type` is `student`.
        is_federal:
          description: Override the `is_federal` field. Can only be set if `type` is `student`.
          type: boolean
        loan_name:
          type: string
          description: Override the `loan_name` field. Can only be set if `type` is `student`.
        loan_status:
          $ref: '#/components/schemas/StudentLoanStatus'
        payment_reference_number:
          type: string
          description: Override the `payment_reference_number` field. Can only be set if `type` is `student`.
        pslf_status:
          $ref: '#/components/schemas/PSLFStatus'
        repayment_plan_description:
          type: string
          description: Override the `repayment_plan.description` field. Can only be set if `type` is `student`.
        repayment_plan_type:
          description: 'Override the `repayment_plan.type` field. Can only be set if `type` is `student`. Possible values are: `"extended graduated"`, `"extended standard"`, `"graduated"`, `"income-contingent repayment"`, `"income-based repayment"`, `"interest only"`, `"other"`, `"pay as you earn"`, `"revised pay as you earn"`, or `"standard"`.'
          type: string
        sequence_number:
          type: string
          description: Override the `sequence_number` field. Can only be set if `type` is `student`.
        servicer_address:
          $ref: '#/components/schemas/Address'
      required:
      - type
      - purchase_apr
      - cash_apr
      - balance_transfer_apr
      - special_apr
      - last_payment_amount
      - minimum_payment_amount
      - is_overdue
      - origination_date
      - principal
      - nominal_apr
      - interest_capitalization_grace_period_months
      - repayment_model
      - expected_payoff_date
      - guarantor
      - is_federal
      - loan_name
      - loan_status
      - payment_reference_number
      - pslf_status
      - repayment_plan_description
      - repayment_plan_type
      - sequence_number
      - servicer_address
      description: Used to configure Sandbox test data for the Liabilities product
    StudentLoanRepaymentModel:
      title: StudentLoanRepaymentModel
      type: object
      additionalProperties: true
      properties:
        type:
          type: string
          description: The only currently supported value for this field is `standard`.
        non_repayment_months:
          description: Configures the number of months before repayment starts.
          type: number
        repayment_months:
          description: Configures the number of months of repayments before the loan is paid off.
          type: number
      required:
      - type
      - non_repayment_months
      - repayment_months
      description: Student loan repayment information used to configure Sandbox test data for the Liabilities product
    InflowModel:
      title: InflowModel
      type: object
      additionalProperties: true
      description: The `inflow_model` allows you to model a test account that receives regular income or make regular payments on a loan. Any transactions generated by the `inflow_model` will appear in addition to randomly generated test data or transactions specified by `override_accounts`.
      properties:
        type:
          type: string
          description: |-
            Inflow model. One of the following:

            `none`: No income
            `monthly-income`: Income occurs once per month `monthly-balance-payment`: Pays off the balance on a liability account at the given statement day of month
            `monthly-interest-only-payment`: Makes an interest-only payment on a liability account at the given statement day of month. Note that account types supported by Liabilities will accrue interest in the Sandbox. The types are account_type `credit` with subtype `credit` or `paypal`, and account_type `loan` with subtype `student` or `mortgage`.
        income_amount:
          type: number
          description: Amount of income per month. This value is required if `type` is `monthly-income`.
        payment_day_of_month:
          description: Number between 1 and 28, or `last` meaning the last day of the month. The day of the month on which the income transaction will appear. The name of the income transaction. This field is required if `type` is `monthly-income`, `monthly-balance-payment` or `monthly-interest-only-payment`.
          type: number
        transaction_name:
          type: string
          description: The name of the income transaction. This field is required if `type` is `monthly-income`, `monthly-balance-payment` or `monthly-interest-only-payment`.
        statement_day_of_month:
          description: Number between 1 and 28, or `last` meaning the last day of the month. The day of the month on which the balance is calculated for the next payment. The name of the income transaction. This field is required if `type` is `monthly-balance-payment` or `monthly-interest-only-payment`.
          type: string
      required:
      - type
      - income_amount
      - payment_day_of_month
      - transaction_name
      - statement_day_of_month
    ItemId:
      title: ItemId
      type: string
      description: The `item_id` of the Item associated with this webhook, warning, or error
    AutomaticallyVerifiedWebhook:
      title: AutomaticallyVerifiedWebhook
      type: object
      additionalProperties: true
      description: Fired when an Item is verified via automated micro-deposits. We recommend communicating to your users when this event is received to notify them that their account is verified and ready for use.
      properties:
        webhook_type:
          type: string
          description: '`AUTH`'
        webhook_code:
          type: string
          description: '`AUTOMATICALLY_VERIFIED`'
        account_id:
          type: string
          description: The `account_id` of the account associated with the webhook
        item_id:
          $ref: '#/components/schemas/ItemId'
      required:
      - webhook_type
      - webhook_code
      - account_id
      - item_id
      x-examples:
        example-1:
          webhook_type: AUTH
          webhook_code: AUTOMATICALLY_VERIFIED
          item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6
          account_id: dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK
    JWTHeader:
      title: JWTHeader
      type: object
      additionalProperties: true
      properties:
        id:
          description: Id of the JWT header
          type: string
      required:
      - id
      description: A JWT Header, used for webhook validation
    VerificationExpiredWebhook:
      title: VerificationExpiredWebhook
      type: object
      additionalProperties: true
      description: Fired when an Item was not verified via automated micro-deposits after ten days since the automated micro-deposit was made.
      x-examples:
        example-1:
          webhook_type: AUTH
          webhook_code: VERIFICATION_EXPIRED
          item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6
          account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp
      properties:
        webhook_type:
          type: string
          description: '`AUTH`'
        webhook_code:
          type: string
          description: '`VERIFICATION_EXPIRED`'
        item_id:
          $ref: '#/components/schemas/ItemId'
        account_id:
          type: string
          description: The `account_id` of the account associated with the webhook
      required:
      - webhook_type
      - webhook_code
      - item_id
      - account_id
    WebhookUpdateAcknowledgedWebhook:
      title: WebhookUpdateAcknowledgedWebhook
      type: object
      additionalProperties: true
      description: Fired when an Item's webhook is updated. This will be sent to the newly specified webhook.
      x-examples:
        example-1:
          webhook_type: ITEM
          webhook_code: WEBHOOK_UPDATE_ACKNOWLEDGED
          item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb
          error: null
          new_webhook_url: https://plaid.com/example/webhook
      properties:
        webhook_type:
          type: string
          description: '`ITEM`'
        webhook_code:
          type: string
          description: '`WEBHOOK_UPDATE_ACKNOWLEDGED`'
        item_id:
          $ref: '#/components/schemas/ItemId'
        new_webhook_url:
          type: string
          description: The new webhook URL
        error:
          $ref: '#/components/schemas/Error'
      required:
      - webhook_type
      - webhook_code
      - item_id
      - new_webhook_url
    PendingExpirationWebhook:
      title: PendingExpirationWebhook
      type: object
      additionalProperties: true
      description: Fired when an Item’s access consent is expiring in 7 days. Some Items have explicit expiration times and we try to relay this when possible to reduce service disruption. This can be resolved by having the user go through Link’s update mode.
      properties:
        webhook_type:
          type: string
          description: '`ITEM`'
        webhook_code:
          type: string
          description: '`PENDING_EXPIRATION`'
        item_id:
          $ref: '#/components/schemas/ItemId'
        consent_expiration_time:
          type: string
          format: date-time
          description: The date and time at which the Item's access consent will expire, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format
      required:
      - webhook_type
      - webhook_code
      - item_id
      - consent_expiration_time
      x-examples:
        example-1:
          webhook_type: ITEM
          webhook_code: PENDING_EXPIRATION
          item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb
          consent_expiration_time: "2020-01-15T13:25:17.766Z"
    ItemErrorWebhook:
      title: ItemErrorWebhook
      type: object
      additionalProperties: true
      description: Fired when an error is encountered with an Item. The error can be resolved by having the user go through Link’s update mode.
      properties:
        webhook_type:
          type: string
          description: '`ITEM`'
        webhook_code:
          type: string
          description: '`ERROR`'
        item_id:
          $ref: '#/components/schemas/ItemId'
        error:
          $ref: '#/components/schemas/Error'
      required:
      - webhook_type
      - webhook_code
      - item_id
      - error
      x-examples:
        example-1:
          webhook_type: ITEM
          webhook_code: ERROR
          item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb
          error:
            display_message: null
            error_code: ITEM_LOGIN_REQUIRED
            error_message: the login details of this item have changed (credentials, MFA, or required user action) and a user login is required to update this information. use Link's update mode to restore the item to a good state
            error_type: ITEM_ERROR
            status: 400
    ItemProductReadyWebhook:
      title: ItemProductReadyWebhook
      type: object
      additionalProperties: true
      description: Fired once Plaid calculates income from an Item.
      properties:
        webhook_type:
          type: string
          description: '`INCOME`'
        webhook_code:
          type: string
          description: '`PRODUCT_READY`'
        item_id:
          $ref: '#/components/schemas/ItemId'
        error:
          $ref: '#/components/schemas/Error'
      required:
      - webhook_type
      - webhook_code
      - item_id
      x-examples:
        example-1:
          webhook_type: INCOME
          webhook_code: PRODUCT_READY
          item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb
          error: null
    Recaptcha_Required_Error:
      title: Recaptcha_RequiredError
      type: object
      additionalProperties: true
      description: The request was flagged by Plaid's fraud system, and requires additional verification to ensure they are not a bot.
      x-examples:
        example-1:
          error_type: RECAPTCHA_ERROR
          error_code: RECAPTCHA_REQUIRED
          error_message: This request requires additional verification. Please resubmit the request after completing the challenge
          display_message: null
          http_code: 400
          request_id: HNTDNrA8F1shFEW
      properties:
        error_type:
          type: string
          description: RECAPTCHA_ERROR
        error_code:
          type: string
          description: RECAPTCHA_REQUIRED
        display_message:
          type: string
          description: A user-friendly representation of the error code. null if the error is not related to user action.
        http_code:
          type: string
          description: "400"
        link_user_experience:
          type: string
          description: Your user will be prompted to solve a Google reCAPTCHA challenge in the Link Recaptcha pane. If they solve the challenge successfully, the user's request is resubmitted and they are directed to the next Item creation step.
        common_causes:
          type: string
          description: Plaid's fraud system detects abusive traffic and considers a variety of parameters throughout Item creation requests. When a request is considered risky or possibly fraudulent, Link presents a reCAPTCHA for the user to solve.
        troubleshooting_steps:
          type: string
          description: |-
            Link will automatically guide your user through reCAPTCHA verification. As a general rule, we recommend instrumenting basic fraud monitoring to detect and protect your website from spam and abuse.

            If your user cannot verify their session, please submit a Support ticket with the following identifiers: `link_session_id` or `request_id`
      required:
      - error_type
      - error_code
      - display_message
      - http_code
      - link_user_experience
      - common_causes
      - troubleshooting_steps
    BankTransfersEventsUpdateWebhook:
      title: BankTransfersEventsUpdateWebhook
      type: object
      additionalProperties: true
      description: Fired when new bank transfer events are available. Receiving this webhook indicates you should fetch the new events from `/bank_transfer/event/sync`.
      x-examples:
        example-1:
          webhook_type: BANK_TRANSFERS
          webhook_code: BANK_TRANSFERS_EVENTS_UPDATE
      properties:
        webhook_type:
          type: string
          description: '`BANK_TRANSFERS`'
        webhook_code:
          type: string
          description: '`BANK_TRANSFERS_EVENTS_UPDATE`'
      required:
      - webhook_type
      - webhook_code
    InvestmentsDefaultUpdateWebhook:
      title: TransactionsUpdateInvestmentsWebhook
      type: object
      additionalProperties: true
      description: Fired when new or canceled transactions have been detected on an investment account.
      x-examples:
        example-1:
          webhook_type: INVESTMENTS_TRANSACTIONS
          webhook_code: DEFAULT_UPDATE
          item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb
          error: null
          new_investments_transactions: 16
          canceled_investments_transactions: 0
      properties:
        webhook_type:
          type: string
          description: '`INVESTMENTS_TRANSACTIONS`'
        webhook_code:
          type: string
          description: '`DEFAULT_UPDATE`'
        item_id:
          $ref: '#/components/schemas/ItemId'
        error:
          $ref: '#/components/schemas/Error'
        new_investments_transactions:
          type: number
          description: The number of new transactions reported since the last time this webhook was fired.
        canceled_investments_transactions:
          type: number
          description: The number of canceled transactions reported since the last time this webhook was fired.
      required:
      - webhook_type
      - webhook_code
      - item_id
      - new_investments_transactions
      - canceled_investments_transactions
    HoldingsDefaultUpdateWebhook:
      title: HoldingsDefaultUpdateWebhook
      type: object
      additionalProperties: true
      description: Fired when new or updated holdings have been detected on an investment account. The webhook typically fires once per day, after market close, in response to any newly added holdings or price changes to existing holdings.
      x-examples:
        example-1:
          webhook_type: HOLDINGS
          webhook_code: DEFAULT_UPDATE
          item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb
          error: null
          new_holdings: 19
          updated_holdings: 0
      properties:
        webhook_type:
          type: string
          description: '`HOLDINGS`'
        webhook_code:
          type: string
          description: '`DEFAULT_UPDATE`'
        item_id:
          $ref: '#/components/schemas/ItemId'
        error:
          $ref: '#/components/schemas/Error'
        new_holdings:
          type: number
          description: The number of new holdings reported since the last time this webhook was fired.
        updated_holdings:
          type: number
          description: The number of updated holdings reported since the last time this webhook was fired.
      required:
      - webhook_type
      - webhook_code
      - item_id
      - new_holdings
      - updated_holdings
    LiabilitiesDefaultUpdateWebhook:
      title: LiabilitiesDefaultUpdateWebhook
      type: object
      description: The webhook_type `LIABILITIES` and code `DEFAULT_UPDATE` will be fired when new or updated liabilities have been detected on a liabilities item.
      x-examples:
        example-1:
          webhook_type: LIABILITIES
          webhook_code: DEFAULT_UPDATE
          item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb
          error: null
          account_ids_with_new_liabilities:
          - XMBvvyMGQ1UoLbKByoMqH3nXMj84ALSdE5B58
          - BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp
          account_ids_with_updated_liabilities:
            XMBvvyMGQ1UoLbKByoMqH3nXMj84ALSdE5B58:
            - past_amount_due
      properties:
        webhook_type:
          type: string
          description: '`LIABILITIES`'
        webhook_code:
          type: string
          description: '`DEFAULT_UPDATE`'
        item_id:
          $ref: '#/components/schemas/ItemId'
        error:
          $ref: '#/components/schemas/Error'
        account_ids_with_new_liabilities:
          type: array
          description: An array of `account_id`'s for accounts that contain new liabilities.
          items:
            type: string
        account_ids_with_updated_liabilities:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: |
            An object with keys of `account_id`'s that are mapped to their respective liabilities fields that changed.

            Example: `{ "XMBvvyMGQ1UoLbKByoMqH3nXMj84ALSdE5B58": ["past_amount_due"] }`
      required:
      - webhook_type
      - webhook_code
      - item_id
      - error
      - account_ids_with_new_liabilities
      - account_ids_with_updated_liabilities
    AssetsProductReadyWebhook:
      title: AssetsProductReadyWebhook
      type: object
      additionalProperties: true
      description: Fired when the Asset Report has been generated and `/asset_report/get` is ready to be called.  If you attempt to retrieve an Asset Report before this webhook has fired, you’ll receive a response with the HTTP status code 400 and a Plaid error code of `PRODUCT_NOT_READY`.
      properties:
        webhook_type:
          type: string
          description: '`ASSETS`'
        webhook_code:
          type: string
          description: '`PRODUCT_READY`'
        asset_report_id:
          type: string
          description: The `asset_report_id` that can be provided to `/asset_report/get` to retrieve the Asset Report.
      required:
      - webhook_type
      - webhook_code
      - asset_report_id
      x-examples:
        example-1:
          webhook_type: ASSETS
          webhook_code: PRODUCT_READY
          asset_report_id: 47dfc92b-bba3-4583-809e-ce871b321f05
    AssetsErrorWebhook:
      title: AssetsErrorWebhook
      type: object
      additionalProperties: true
      description: Fired when Asset Report generation has failed. The resulting `error` will have an `error_type` of `ASSET_REPORT_ERROR`.
      x-examples:
        example-1:
          webhook_type: ASSETS
          webhook_code: ERROR
          asset_report_id: 47dfc92b-bba3-4583-809e-ce871b321f05
          error:
            display_message: null
            error_code: PRODUCT_NOT_ENABLED
            error_message: 'the ''assets'' product is not enabled for the following access tokens: access-sandbox-fb88b20c-7b74-4197-8d01-0ab122dad0bc. please ensure that ''assets'' is included in the ''product'' array when initializing Link and create the Item(s) again.'
            error_type: ASSET_REPORT_ERROR
            request_id: m8MDnv9okwxFNBV
      properties:
        webhook_type:
          type: string
          description: '`ASSETS`'
        webhook_code:
          type: string
          description: '`ERROR`'
        error:
          $ref: '#/components/schemas/Error'
        asset_report_id:
          type: string
          description: The ID associated with the Asset Report.
      required:
      - webhook_type
      - webhook_code
      - error
      - asset_report_id
    Cause:
      title: Cause
      type: object
      additionalProperties: true
      properties:
        item_id:
          $ref: '#/components/schemas/ItemId'
        error:
          $ref: '#/components/schemas/Error'
      required:
      - item_id
      - error
      description: An error object and associated `item_id` used to identify a specific Item and error when a batch operation operating on multiple Items has encountered an error in one of the Items.
    Warning:
      title: Warning
      type: object
      additionalProperties: true
      description: It is possible for an Asset Report to be returned with missing account owner information. In such cases, the Asset Report will contain warning data in the response, indicating why obtaining the owner information failed.
      properties:
        warning_type:
          type: string
          description: The warning type, which will always be `ASSET_REPORT_WARNING`
        warning_code:
          type: string
          enum:
          - OWNERS_UNAVAILABLE
          description: The warning code identifies a specific kind of warning. Currently, the only possible warning code is `OWNERS_UNAVAILABLE`, which indicates that account-owner information is not available.
        cause:
          $ref: '#/components/schemas/Cause'
      required:
      - warning_type
      - warning_code
      - cause
      x-examples:
        example-1:
          warning_type: ASSET_REPORT_WARNING
          warning_code: OWNERS_UNAVAILABLE
          cause:
            error_type: ITEM_ERROR
            http_code: 400
            error_code: PRODUCTS_NOT_SUPPORTED
            error_message: 'The following products are not supported by this institution: Identity'
            display_message: null
            request_id: s32PXYOyplhGTHd
    PaymentAmount:
      title: PaymentAmount
      type: object
      additionalProperties: true
      properties:
        currency:
          type: string
          enum:
          - GBP
          - EUR
          description: The ISO-4217 currency code of the payment. For standing orders, `"GBP"` must be used.
          minLength: 3
          maxLength: 3
        value:
          type: number
          description: The amount of the payment. Must contain at most two digits of precision e.g. `1.23`. Minimum accepted value is `1`.
      required:
      - currency
      - value
      description: The amount and currency of a payment
    AssetReportUser:
      title: AssetReportUser
      type: object
      additionalProperties: true
      description: The user object allows you to provide additional information about the user to be appended to the Asset Report. All fields are optional. The `first_name`, `last_name`, and `ssn` fields are required if you would like the Report to be eligible for Fannie Mae’s Day 1 Certainty™ program.
      properties:
        client_user_id:
          type: string
          nullable: true
          description: An identifier you determine and submit for the user.
        first_name:
          type: string
          nullable: true
          description: The user's first name. Required for the Fannie Mae Day 1 Certainty™ program.
        middle_name:
          type: string
          nullable: true
          description: The user's middle name
        last_name:
          type: string
          nullable: true
          description: The user's last name.  Required for the Fannie Mae Day 1 Certainty™ program.
        ssn:
          type: string
          nullable: true
          description: |-
            The user's Social Security Number. Required for the Fannie Mae Day 1 Certainty™ program.

            Format: "ddd-dd-dddd"
        phone_number:
          type: string
          nullable: true
          description: 'The user''s phone number, in E.164 format: +{countrycode}{number}. For example: "+14151234567". Phone numbers provided in other formats will be parsed on a best-effort basis.'
        email:
          type: string
          nullable: true
          description: The user's email address.
    AssetReportId:
      title: AssetReportId
      description: A unique ID identifying an Asset Report. Like all Plaid identifiers, this ID is case sensitive.
      type: string
    AssetReportToken:
      title: AssetReportToken
      type: string
      description: A token that can be provided to endpoints such as `/asset_report/get` or `/asset_report/pdf/get` to fetch or update an Asset Report.
    AssetReportRefreshAssetReportToken:
      title: AssetReportRefreshAssetReportToken
      type: string
      description: The `asset_report_token` returned by the original call to `/asset_report/create`
    StandaloneCurrencyCodeList:
      title: StandaloneCurrencyCodeList
      type: object
      additionalProperties: true
      description: The following currency codes are supported by Plaid.
      properties:
        iso_currency_code:
          description: Plaid supports all ISO 4217 currency codes.
          type: string
        unofficial_currency_code:
          $ref: '#/components/schemas/UnofficialCurrencyCodeList'
      required:
      - iso_currency_code
      - unofficial_currency_code
    UnofficialCurrencyCodeList:
      title: UnofficialCurrencyCodeList
      type: string
      description: List of unofficial currency codes
      properties:
        ADA:
          type: string
          description: Cardano
        BAT:
          type: string
          description: Basic Attention Token
        BCH:
          type: string
          description: Bitcoin Cash
        BNB:
          type: string
          description: Binance Coin
        BTC:
          type: string
          description: Bitcoin
        BTG:
          type: string
          description: Bitcoin Gold
        CNH:
          type: string
          description: Chinese Yuan (offshore)
        DASH:
          type: string
          description: Dash
        DOGE:
          type: string
          description: Dogecoin
        ETC:
          type: string
          description: Ethereum Classic
        ETH:
          type: string
          description: Ethereum
        GBX:
          type: string
          description: Pence sterling, i.e. British penny
        LSK:
          type: string
          description: Lisk
        NEO:
          type: string
          description: Neo
        OMG:
          type: string
          description: OmiseGO
        QTUM:
          type: string
          description: Qtum
        USDT:
          type: string
          description: TehterUS
        XLM:
          type: string
          description: Stellar Lumen
        XMR:
          type: string
          description: Monero
        XRP:
          type: string
          description: Ripple
        ZEC:
          type: string
          description: Zcash
        ZRX:
          type: string
          description: 0x
      required:
      - ADA
      - BAT
      - BCH
      - BNB
      - BTC
      - BTG
      - CNH
      - DASH
      - DOGE
      - ETC
      - ETH
      - GBX
      - LSK
      - NEO
      - OMG
      - QTUM
      - USDT
      - XLM
      - XMR
      - XRP
      - ZEC
      - ZRX
    StandaloneAccountType:
      title: StandaloneAccountType
      description: The schema below describes the various `types` and corresponding `subtypes` that Plaid recognizes and reports for financial institution accounts.
      type: object
      additionalProperties: true
      properties:
        depository:
          $ref: '#/components/schemas/DepositoryAccount'
        credit:
          $ref: '#/components/schemas/CreditAccount'
        loan:
          $ref: '#/components/schemas/LoanAccount'
        investment:
          $ref: '#/components/schemas/InvestmentAccountSubtype'
        other:
          type: string
          description: 'Other or unknown account type. Supported products for `other` accounts are: Balance, Transactions, Identity, and Assets.'
      required:
      - depository
      - credit
      - loan
      - investment
      - other
    DepositoryAccount:
      title: DepositoryAccount
      description: 'An account type holding cash, in which funds are deposited. Supported products for `depository` accounts are: Auth, Balance, Transactions, Identity, Payment Initiation, and Assets.'
      type: string
      properties:
        checking:
          type: string
          description: Checking account
        savings:
          type: string
          description: Savings account
        hsa:
          type: string
          description: Health Savings Account (US only) that can only hold cash
        cd:
          type: string
          description: Certificate of deposit account
        money market:
          type: string
          description: Money market account
        paypal:
          type: string
          description: PayPal depository account
        prepaid:
          type: string
          description: Prepaid debit card
        cash management:
          type: string
          description: A cash management account, typically a cash account at a brokerage
        ebt:
          type: string
          description: An Electronic Benefit Transfer (EBT) account, used by certain public assistance programs to distribute funds (US only)
      required:
      - checking
      - savings
      - hsa
      - cd
      - money market
      - paypal
      - prepaid
      - cash management
      - ebt
    CreditAccount:
      title: CreditAccount
      type: string
      description: 'A credit card type account. Supported products for `credit` accounts are: Balance, Transactions, Identity, and Liabilities.'
      properties:
        credit card:
          type: string
          description: Bank-issued credit card
        paypal:
          type: string
          description: PayPal-issued credit card
      required:
      - credit card
      - paypal
    LoanAccount:
      title: LoanAccount
      type: string
      description: 'A loan type account. Supported products for `loan` accounts are: Balance, Liabilities, and Transactions.'
      properties:
        auto:
          type: string
          description: Auto loan
        business:
          type: string
          description: Business loan
        commercial:
          type: string
          description: Commercial loan
        construction:
          type: string
          description: Construction loan
        consumer:
          type: string
          description: Consumer loan
        home equity:
          type: string
          description: Home Equity Line of Credit (HELOC)
        loan:
          type: string
          description: General loan
        mortgage:
          type: string
          description: Mortgage loan
        overdraft:
          type: string
          description: Pre-approved overdraft account, usually tied to a checking account
        line of credit:
          type: string
          description: Pre-approved line of credit
        student:
          type: string
          description: Student loan
        other:
          type: string
          description: Other loan type or unknown loan type
      required:
      - auto
      - business
      - commercial
      - construction
      - consumer
      - home equity
      - loan
      - mortgage
      - overdraft
      - line of credit
      - student
      - other
    InvestmentAccountSubtype:
      title: InvestmentAccountSubtype
      type: string
      description: 'An investment account. Supported products for `investment` accounts are: Balance and Investments.'
      properties:
        "529":
          type: string
          description: |
            Tax-advantaged college savings and prepaid tuition 529 plans (US)
        401a:
          type: string
          description: Employer-sponsored money-purchase 401(a) retirement plan (US)
        401k:
          type: string
          description: Standard 401(k) retirement account (US)
        403b:
          type: string
          description: 403(b) retirement savings account for non-profits and schools (US)
        457b:
          type: string
          description: Tax-advantaged deferred-compensation 457(b) retirement plan for governments and non-profits (US)
        brokerage:
          type: string
          description: Standard brokerage account
        cash isa:
          type: string
          description: Individual Savings Account (ISA) that pays interest tax-free (UK)
        education savings account:
          type: string
          description: Tax-advantaged Coverdell Education Savings Account (ESA) (US)
        fixed annuity:
          type: string
          description: Fixed annuity
        gic:
          type: string
          description: Guaranteed Investment Certificate (Canada)
        health reimbursement arrangement:
          type: string
          description: Tax-advantaged Health Reimbursement Arrangement (HRA) benefit plan (US)
        hsa:
          type: string
          description: |
            Non-cash tax-advantaged medical Health Savings Account (HSA) (US)
        ira:
          type: string
          description: Traditional Invididual Retirement Account (IRA) (US)
        isa:
          type: string
          description: Non-cash Individual Savings Account (ISA) (UK)
        keogh:
          type: string
          description: Keogh self-employed retirement plan (US)
        lif:
          type: string
          description: |
            Life Income Fund (LIF) retirement account (Canada)
        life insurance:
          type: string
          description: Life insurance account
        lira:
          type: string
          description: Locked-in Retirement Account (LIRA) (Canada)
        lrif:
          type: string
          description: Locked-in Retirement Income Fund (LRIF) (Canada)
        lrsp:
          type: string
          description: Locked-in Retirement Savings Plan (Canada)
        mutual fund:
          type: string
          description: Mutual fund account
        non-taxable brokerage account:
          type: string
          description: A non-taxable brokerage account that is not covered by a more specific subtype
        other:
          type: string
          description: An account whose type could not be determined
        other annuity:
          type: string
          description: An annuity account not covered by other subtypes
        other insurance:
          type: string
          description: An insurance account not covered by other subtypes
        pension:
          type: string
          description: Standard pension account
        prif:
          type: string
          description: Prescribed Registered Retirement Income Fund (Canada)
        profit sharing plan:
          type: string
          description: Plan that gives employees share of company profits
        qshr:
          type: string
          description: Qualifying share account
        rdsp:
          type: string
          description: Registered Disability Savings Plan (RSDP) (Canada)
        resp:
          type: string
          description: Registered Education Savings Plan (Canada)
        retirement:
          type: string
          description: Retirement account not covered by other subtypes
        rlif:
          type: string
          description: Restricted Life Income Fund (RLIF) (Canada)
        roth:
          type: string
          description: Roth IRA (US)
        roth 401k:
          type: string
          description: Employer-sponsored Roth 401(k) plan (US)
        rrif:
          type: string
          description: Registered Retirement Income Fund (RRIF) (Canada)
        rrsp:
          type: string
          description: Registered Retirement Savings Plan (Canadian, similar to US 401(k))
        sarsep:
          type: string
          description: Salary Reduction Simplified Employee Pension Plan (SARSEP), discontinued retirement plan (US)
        sep ira:
          type: string
          description: Simplified Employee Pension IRA (SEP IRA), retirement plan for small businesses and self-employed (US)
        simple ira:
          type: string
          description: Savings Incentive Match Plan for Employees IRA, retirement plan for small businesses (US)
        sipp:
          type: string
          description: Self-Invested Personal Pension (SIPP) (UK)
        stock plan:
          type: string
          description: Standard stock plan account
        tfsa:
          type: string
          description: Tax-Free Savings Account (TFSA), a retirement plan similar to a Roth IRA (Canada)
        trust:
          type: string
          description: Account representing funds or assets held by a trustee for the benefit of a beneficiary. Includes both revocable and irrevocable trusts.
        ugma:
          type: string
          description: '''Uniform Gift to Minors Act'' (brokerage account for minors, US)'
        utma:
          type: string
          description: |
            'Uniform Transfers to Minors Act' (brokerage account for minors, US)
        variable annuity:
          type: string
          description: Tax-deferred capital accumulation annuity contract
      required:
      - "529"
      - 401a
      - 401k
      - 403b
      - 457b
      - brokerage
      - cash isa
      - education savings account
      - fixed annuity
      - gic
      - health reimbursement arrangement
      - hsa
      - ira
      - isa
      - keogh
      - lif
      - life insurance
      - lira
      - lrif
      - lrsp
      - mutual fund
      - non-taxable brokerage account
      - other
      - other annuity
      - other insurance
      - pension
      - prif
      - profit sharing plan
      - qshr
      - rdsp
      - resp
      - retirement
      - rlif
      - roth
      - roth 401k
      - rrif
      - rrsp
      - sarsep
      - sep ira
      - simple ira
      - sipp
      - stock plan
      - tfsa
      - trust
      - ugma
      - utma
    AssetReport:
      title: AssetReport
      type: object
      additionalProperties: true
      description: An object representing an Asset Report
      properties:
        asset_report_id:
          $ref: '#/components/schemas/AssetReportId'
        client_report_id:
          type: string
          description: An identifier you determine and submit for the Asset Report.
        date_generated:
          type: string
          format: date-time
          description: The date and time when the Asset Report was created, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (e.g. "2018-04-12T03:32:11Z").
        days_requested:
          type: number
          description: The duration of transaction history you requested
        user:
          $ref: '#/components/schemas/AssetReportUser'
        items:
          type: array
          description: Data returned by Plaid about each of the Items included in the Asset Report.
          items:
            $ref: '#/components/schemas/AssetReportItem'
      required:
      - asset_report_id
      - client_report_id
      - date_generated
      - days_requested
      - user
      - items
    AssetReportItem:
      title: AssetReportItem
      type: object
      additionalProperties: true
      description: A representation of an Item within an Asset Report.
      properties:
        item_id:
          $ref: '#/components/schemas/ItemId'
        institution_name:
          type: string
          description: The full financial institution name associated with the Item.
        institution_id:
          description: The id of the financial institution associated with the Item.
          type: string
        date_last_updated:
          type: string
          format: date-time
          description: The date and time when this Item’s data was last retrieved from the financial institution, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format.
        accounts:
          type: array
          description: Data about each of the accounts open on the Item.
          items:
            $ref: '#/components/schemas/AccountAssets'
      required:
      - item_id
      - institution_name
      - institution_id
      - date_last_updated
      - accounts
    PaymentStatusUpdateWebhook:
      title: PaymentStatusUpdateWebhook
      type: object
      additionalProperties: true
      description: Fired when the status of a payment has changed.
      x-examples:
        example-1:
          webhook_type: PAYMENT_INITIATION
          webhook_code: PAYMENT_STATUS_UPDATE
          payment_id: payment-id-production-2ba30780-d549-4335-b1fe-c2a938aa39d2
          new_payment_status: PAYMENT_STATUS_INITIATED
          old_payment_status: PAYMENT_STATUS_PROCESSING
          original_reference: Account Funding 99744
          adjusted_reference: Account Funding 99
          original_start_date: "2017-09-14"
          adjusted_start_date: "2017-09-15"
          timestamp: "2017-09-14T14:42:19.350Z"
          error: null
      properties:
        webhook_type:
          type: string
          description: '`PAYMENT_INITIATION`'
        webhook_code:
          type: string
          description: '`PAYMENT_STATUS_UPDATE`'
        payment_id:
          type: string
          description: The `payment_id` for the payment being updated
        new_payment_status:
          enum:
          - PAYMENT_STATUS_INPUT_NEEDED
          - PAYMENT_STATUS_PROCESSING
          - PAYMENT_STATUS_INITIATED
          - PAYMENT_STATUS_COMPLETED
          - PAYMENT_STATUS_INSUFFICIENT_FUNDS
          - PAYMENT_STATUS_FAILED
          - PAYMENT_STATUS_BLOCKED
          - PAYMENT_STATUS_UNKNOWN
          type: string
          description: |-
            The new status of the payment.

            `PAYMENT_STATUS_INPUT_NEEDED`: This is the initial state of all payments. It indicates that the payment is waiting on user input to continue processing. A payment may re-enter this state later on if further input is needed.

            `PAYMENT_STATUS_PROCESSING`: The payment is currently being processed. The payment will automatically exit this state when processing is complete.

            `PAYMENT_STATUS_INITIATED`: The payment has been successfully initiated and is considered complete.

            `PAYMENT_STATUS_COMPLETED`: Indicates that the standing order has been successfully established. This state is only used for standing orders.

            `PAYMENT_STATUS_INSUFFICIENT_FUNDS`: The payment has failed due to insufficient funds.

            `PAYMENT_STATUS_FAILED`: The payment has failed to be initiated. This error is retryable once the root cause is resolved.

            `PAYMENT_STATUS_BLOCKED`: The payment has been blocked. This is a retryable error.

            `PAYMENT_STATUS_UNKNOWN`: The payment status is unknown.
        old_payment_status:
          type: string
          enum:
          - PAYMENT_STATUS_INPUT_NEEDED
          - PAYMENT_STATUS_PROCESSING
          - PAYMENT_STATUS_INITIATED
          - PAYMENT_STATUS_COMPLETED
          - PAYMENT_STATUS_INSUFFICIENT_FUNDS
          - PAYMENT_STATUS_FAILED
          - PAYMENT_STATUS_BLOCKED
          - PAYMENT_STATUS_UNKNOWN
          description: |-
            The previous status of the payment.

            `PAYMENT_STATUS_INPUT_NEEDED`: This is the initial state of all payments. It indicates that the payment is waiting on user input to continue processing. A payment may re-enter this state later on if further input is needed.

            `PAYMENT_STATUS_PROCESSING`: The payment is currently being processed. The payment will automatically exit this state when processing is complete.

            `PAYMENT_STATUS_INITIATED`: The payment has been successfully initiated and is considered complete.

            `PAYMENT_STATUS_COMPLETED`: Indicates that the standing order has been successfully established. This state is only used for standing orders.

            `PAYMENT_STATUS_INSUFFICIENT_FUNDS`: The payment has failed due to insufficient funds.

            `PAYMENT_STATUS_FAILED`: The payment has failed to be initiated. This error is retryable once the root cause is resolved.

            `PAYMENT_STATUS_BLOCKED`: The payment has been blocked. This is a retryable error.

            `PAYMENT_STATUS_UNKNOWN`: The payment status is unknown.
        original_reference:
          type: string
          description: The original value of the reference when creating the payment.
          nullable: true
        adjusted_reference:
          type: string
          description: The value of the reference sent to the bank after adjustment to pass bank validation rules.
          nullable: true
        original_start_date:
          format: date
          type: string
          description: The original value of the `start_date` provided during the creation of a standing order. If the payment is not a standing order, this field will be `null`.
          nullable: true
        adjusted_start_date:
          format: date
          type: string
          description: The start date sent to the bank after adjusting for holidays or weekends.  Will be provided in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). If the start date did not require adjustment, or if the payment is not a standing order, this field will be `null`.
          nullable: true
        timestamp:
          type: string
          format: date-time
          description: The timestamp of the update, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `"2017-09-14T14:42:19.350Z"`
        error:
          $ref: '#/components/schemas/Error'
      required:
      - webhook_type
      - webhook_code
      - payment_id
      - new_payment_status
      - old_payment_status
      - original_reference
      - original_start_date
      - adjusted_start_date
      - timestamp
    Holding:
      title: Holding
      type: object
      additionalProperties: true
      description: A securities holding at an institution.
      properties:
        account_id:
          type: string
          description: The Plaid `account_id` associated with the holding.
        security_id:
          type: string
          description: The Plaid `security_id` associated with the holding.
        institution_price:
          type: number
          description: The last price given by the institution for this security.
        institution_price_as_of:
          type: string
          format: date
          description: The date at which `institution_price` was current.
          nullable: true
        institution_value:
          type: number
          description: The value of the holding, as reported by the institution.
        cost_basis:
          type: number
          description: The cost basis of the holding.
          nullable: true
        quantity:
          description: The total quantity of the asset held, as reported by the financial institution. If the security is an option, `quantity` will reflect the total number of options (typically the number of contracts multiplied by 100), not the number of contracts.
          type: number
        iso_currency_code:
          type: string
          description: The ISO-4217 currency code of the holding. Always `null` if `unofficial_currency_code` is non-`null`.
          nullable: true
        unofficial_currency_code:
          type: string
          description: |
            The unofficial currency code associated with the holding. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.

            See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s.
          nullable: true
      required:
      - account_id
      - security_id
      - institution_price
      - institution_price_as_of
      - institution_value
      - cost_basis
      - quantity
      - iso_currency_code
      - unofficial_currency_code
    Security:
      title: Security
      type: object
      additionalProperties: true
      description: Contains details about a security
      properties:
        security_id:
          type: string
          description: A unique, Plaid-specific identifier for the security, used to associate securities with holdings. Like all Plaid identifiers, the `security_id` is case sensitive.
        isin:
          type: string
          nullable: true
          description: 12-character ISIN, a globally unique securities identifier.
        cusip:
          nullable: true
          type: string
          description: 9-character CUSIP, an identifier assigned to North American securities.
        sedol:
          nullable: true
          type: string
          description: 7-character SEDOL, an identifier assigned to securities in the UK.
        institution_security_id:
          nullable: true
          type: string
          description: An identifier given to the security by the institution
        institution_id:
          nullable: true
          type: string
          description: If `institution_security_id` is present, this field indicates the Plaid `institution_id` of the institution to whom the identifier belongs.
        proxy_security_id:
          nullable: true
          type: string
          description: In certain cases, Plaid will provide the ID of another security whose performance resembles this security, typically when the original security has low volume, or when a private security can be modeled with a publicly traded security.
        name:
          nullable: true
          type: string
          description: A descriptive name for the security, suitable for display.
        ticker_symbol:
          type: string
          nullable: true
          description: The security’s trading symbol for publicly traded securities, and otherwise a short identifier if available.
        is_cash_equivalent:
          nullable: true
          type: boolean
          description: Indicates that a security is a highly liquid asset and can be treated like cash.
        type:
          nullable: true
          type: string
          description: |-
            The security type of the holding. Valid security types are:

            `cash`: Cash, currency, and money market funds

            `derivative`: Options, warrants, and other derivative instruments

            `equity`: Domestic and foreign equities

            `etf`: Multi-asset exchange-traded investment funds

            `fixed income`: Bonds and certificates of deposit (CDs)

            `loan`: Loans and loan receivables.

            `mutual fund`: Open- and closed-end vehicles pooling funds of multiple investors.

            `other`: Unknown or other investment types
        close_price:
          type: number
          nullable: true
          description: Price of the security at the close of the previous trading session. `null` for non-public securities. If the security is a foreign currency or a cryptocurrency this field will be updated daily and will be priced in USD.
        close_price_as_of:
          type: string
          nullable: true
          format: date
          description: Date for which `close_price` is accurate. Always `null` if `close_price` is `null`.
        iso_currency_code:
          type: string
          nullable: true
          description: The ISO-4217 currency code of the price given. Always `null` if `unofficial_currency_code` is non-`null`.
        unofficial_currency_code:
          nullable: true
          type: string
          description: |-
            The unofficial currency code associated with the security. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.

            See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s.
      required:
      - cusip
      - sedol
      - isin
      - institution_security_id
      - institution_id
      - proxy_security_id
      - name
      - ticker_symbol
      - is_cash_equivalent
      - close_price
      - close_price_as_of
      - iso_currency_code
      - unofficial_currency_code
      - security_id
      - type
    InvestmentTransaction:
      title: InvestmentTransaction
      type: object
      additionalProperties: true
      description: A transaction within an investment account.
      properties:
        investment_transaction_id:
          type: string
          description: The ID of the Investment transaction, unique across all Plaid transactions. Like all Plaid identifiers, the `investment_transaction_id` is case sensitive.
        cancel_transaction_id:
          type: string
          deprecated: true
          description: A legacy field formerly used internally by Plaid to identify certain canceled transactions.
          nullable: true
        account_id:
          type: string
          description: The `account_id` of the account against which this transaction posted.
        security_id:
          type: string
          description: The `security_id` to which this transaction is related.
          nullable: true
        date:
          type: string
          format: date
          description: The [ISO 8601](https://wikipedia.org/wiki/ISO_8601) posting date for the transaction, or transacted date for pending transactions.
        name:
          type: string
          description: The institution’s description of the transaction.
        quantity:
          type: number
          description: The number of units of the security involved in this transaction.
        amount:
          description: The complete value of the transaction. Positive values when cash is debited, e.g. purchases of stock; negative values when cash is credited, e.g. sales of stock. Treatment remains the same for cash-only movements unassociated with securities.
          type: number
        price:
          description: The price of the security at which this transaction occurred.
          type: number
        fees:
          type: number
          description: The combined value of all fees applied to this transaction
          nullable: true
        type:
          type: string
          enum:
          - buy
          - sell
          - cancel
          - cash
          - fee
          - transfer
          description: |-
            Value is one of the following:
            `buy`: Buying an investment
            `sell`: Selling an investment
            `cancel`: A cancellation of a pending transaction
            `cash`: Activity that modifies a cash position
            `fee`: A fee on the account
            `transfer`: Activity which modifies a position, but not through buy/sell activity e.g. options exercise, portfolio transfer

            For descriptions of possible transaction types and subtypes, see the [Investment transaction types schema](https://plaid.com/docs/api/accounts/#investment-transaction-types-schema).
        subtype:
          type: string
          description: For descriptions of possible transaction types and subtypes, see the [Investment transaction types schema](https://plaid.com/docs/api/accounts/#investment-transaction-types-schema).
          enum:
          - account fee
          - assignment
          - buy
          - buy to cover
          - contribution
          - deposit
          - distribution
          - dividend
          - dividend reinvestment
          - exercise
          - expire
          - fund fee
          - interest
          - interest receivable
          - interest reinvestment
          - legal fee
          - loan payment
          - long-term capital gain
          - long-term capital gain reinvestment
          - management fee
          - margin expense
          - merger
          - miscellaneous fee
          - non-qualified dividend
          - non-resident tax
          - pending credit
          - pending debit
          - qualified dividend
          - rebalance
          - return of principal
          - sell
          - sell short
          - short-term capital gain
          - short-term capital gain reinvestment
          - spin off
          - split
          - stock distribution
          - tax
          - tax withheld
          - transfer
          - transfer fee
          - trust fee
          - unqualified gain
          - withdrawal
        iso_currency_code:
          type: string
          description: The ISO-4217 currency code of the transaction. Always `null` if `unofficial_currency_code` is non-`null`.
          nullable: true
        unofficial_currency_code:
          type: string
          description: |-
            The unofficial currency code associated with the holding. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.

            See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s.
          nullable: true
      required:
      - investment_transaction_id
      - account_id
      - security_id
      - date
      - name
      - quantity
      - amount
      - price
      - fees
      - type
      - subtype
      - iso_currency_code
      - unofficial_currency_code
    StandaloneInvestmentTransactionType:
      title: StandaloneInvestmentTransactionType
      type: object
      additionalProperties: true
      description: Valid values for investment transaction types and subtypes. Note that transactions representing inflow of cash will appear as negative amounts, outflow of cash will appear as positive amounts.
      properties:
        buy:
          $ref: '#/components/schemas/StandaloneInvestmentTransactionBuyType'
        sell:
          $ref: '#/components/schemas/StandaloneInvestmentTransactionSellType'
        cancel:
          type: string
          description: A cancellation of a pending transaction
        cash:
          $ref: '#/components/schemas/StandaloneInvestmentTransactionCashType'
        fee:
          $ref: '#/components/schemas/StandaloneInvestmentTransactionFeeType'
        transfer:
          $ref: '#/components/schemas/StandaloneInvestmentTransactionTransferType'
      required:
      - buy
      - sell
      - cancel
      - cash
      - fee
      - transfer
    StandaloneInvestmentTransactionBuyType:
      title: BuyType
      description: Buying an investment
      type: string
      properties:
        assignment:
          type: string
          description: Assignment of short option holding
        contribution:
          type: string
          description: Inflow of assets into a tax-advantaged account
        buy:
          type: string
          description: Purchase to open or increase a position
        buy to cover:
          type: string
          description: Purchase to close a short position
        dividend reinvestment:
          type: string
          description: Purchase using proceeds from a cash dividend
        interest reinvestment:
          type: string
          description: Purchase using proceeds from a cash interest payment
        long-term capital gain reinvestment:
          type: string
          description: Purchase using long-term capital gain cash proceeds
        short-term capital gain reinvestment:
          type: string
          description: Purchase using short-term capital gain cash proceeds
    StandaloneInvestmentTransactionCashType:
      title: CashType
      description: Activity that modifies a cash position
      type: string
      properties:
        account fee:
          type: string
          description: Fees paid for account maintenance
        contribution:
          type: string
          description: Inflow of assets into a tax-advantaged account
        deposit:
          type: string
          description: Inflow of cash into an account
        dividend:
          type: string
          description: Inflow of cash from a dividend
        stock distribution:
          type: string
          description: Inflow of stock from a distribution
        interest:
          type: string
          description: Inflow of cash from interest
        legal fee:
          type: string
          description: Fees paid for legal charges or services
        long-term capital gain:
          type: string
          description: Long-term capital gain received as cash
        management fee:
          type: string
          description: Fees paid for investment management of a mutual fund or other pooled investment vehicle
        margin expense:
          type: string
          description: Fees paid for maintaining margin debt
        non-qualified dividend:
          type: string
          description: Inflow of cash from a non-qualified dividend
        non-resident tax:
          type: string
          description: Taxes paid on behalf of the investor for non-residency in investment jurisdiction
        pending credit:
          type: string
          description: Pending inflow of cash
        pending debit:
          type: string
          description: Pending outflow of cash
        qualified dividend:
          type: string
          description: Inflow of cash from a qualified dividend
        short-term capital gain:
          type: string
          description: Short-term capital gain received as cash
        tax:
          type: string
          description: Taxes paid on behalf of the investor
        tax withheld:
          type: string
          description: Taxes withheld on behalf of the customer
        transfer fee:
          type: string
          description: Fees incurred for transfer of a holding or account
        trust fee:
          type: string
          description: Fees related to adminstration of a trust account
        unqualified gain:
          type: string
          description: Unqualified capital gain received as cash
        withdrawal:
          type: string
          description: Outflow of cash from an account
    StandaloneInvestmentTransactionFeeType:
      title: FeeType
      description: Fees on the account, e.g. commission, bookkeeping, options-related.
      type: string
      properties:
        account fee:
          type: string
          description: Fees paid for account maintenance
        adjustment:
          type: string
          description: Increase or decrease in quantity of item
        dividend:
          type: string
          description: Inflow of cash from a dividend
        interest:
          type: string
          description: Inflow of cash from interest
        interest receivable:
          type: string
          description: Inflow of cash from interest receivable
        long-term capital gain:
          type: string
          description: Long-term capital gain received as cash
        legal fee:
          type: string
          description: Fees paid for legal charges or services
        management fee:
          type: string
          description: Fees paid for investment management of a mutual fund or other pooled investment vehicle
        margin expense:
          type: string
          description: Fees paid for maintaining margin debt
        non-qualified dividend:
          type: string
          description: Inflow of cash from a non-qualified dividend
        non-resident tax:
          type: string
          description: Taxes paid on behalf of the investor for non-residency in investment jurisdiction
        qualified dividend:
          type: string
          description: Inflow of cash from a qualified dividend
        return of principal:
          type: string
          description: Repayment of loan principal
        short-term capital gain:
          type: string
          description: Short-term capital gain received as cash
        stock distribution:
          type: string
          description: Inflow of stock from a distribution
        tax:
          type: string
          description: Taxes paid on behalf of the investor
        tax withheld:
          type: string
          description: Taxes withheld on behalf of the customer
        transfer fee:
          type: string
          description: Fees incurred for transfer of a holding or account
        trust fee:
          type: string
          description: Fees related to adminstration of a trust account
        unqualified gain:
          type: string
          description: Unqualified capital gain received as cash
    StandaloneInvestmentTransactionSellType:
      title: SellType
      description: Selling an investment
      type: string
      properties:
        distribution:
          type: string
          description: Outflow of assets from a tax-advantaged account
        exercise:
          type: string
          description: Exercise of an option or warrant contract
        sell:
          type: string
          description: Sell to close or decrease an existing holding
        sell short:
          type: string
          description: Sell to open a short position
    StandaloneInvestmentTransactionTransferType:
      title: TransferType
      description: Activity that modifies a position, but not through buy/sell activity e.g. options exercise, portfolio transfer
      type: string
      properties:
        assignment:
          type: string
          description: Assignment of short option holding
        adjustment:
          type: string
          description: Increase or decrease in quantity of item
        exercise:
          type: string
          description: Exercise of an option or warrant contract
        expire:
          type: string
          description: Expiration of an option or warrant contract
        merger:
          type: string
          description: Stock exchanged at a pre-defined ratio as part of a merger between companies
        spin off:
          type: string
          description: Inflow of stock from spin-off transaction of an existing holding
        split:
          type: string
          description: Inflow of stock from a forward split of an existing holding
        transfer:
          type: string
          description: Movement of assets into or out of an account
    AccountSubtypes:
      title: AccountSubtypes
      type: array
      description: 'An array of account subtypes to display in Link. If not specified, all account subtypes will be shown. For a full list of valid types and subtypes, see the [Account schema](https://plaid.com/docs/api/accounts#accounts-schema). '
      items:
        $ref: '#/components/schemas/AccountSubtype'
    UserPermissionRevokedWebhook:
      title: UserPermissionRevokedWebhook
      type: object
      additionalProperties: true
      description: The `USER_PERMISSION_REVOKED` webhook is fired to when an end user has used the [my.plaid.com portal](https://my.plaid.com) to revoke the permission that they previously granted to access an Item. Once access to an Item has been revoked, it cannot be restored. If the user subsequently returns to your application, a new Item must be created for the user.
      x-examples:
        example-1:
          webhook_type: ITEM
          webhook_code: USER_PERMISSION_REVOKED
          error:
            error_code: USER_PERMISSION_REVOKED
            error_message: the holder of this account has revoked their permission for your application to access it
            error_type: ITEM_ERROR
            status: 400
          item_id: gAXlMgVEw5uEGoQnnXZ6tn9E7Mn3LBc4PJVKZ
      properties:
        webhook_type:
          type: string
          description: '`ITEM`'
        webhook_code:
          type: string
          description: '`USER_PERMISSION_REVOKED`'
        item_id:
          $ref: '#/components/schemas/ItemId'
        error:
          $ref: '#/components/schemas/Error'
      required:
      - webhook_type
      - webhook_code
      - item_id
    DepositSwitchGetRequest:
      title: DepositSwitchGetRequest
      description: DepositSwitchGetRequest defines the request schema for `/deposit_switch/get`
      type: object
      x-examples: {}
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        deposit_switch_id:
          type: string
          description: The ID of the deposit switch
      required:
      - deposit_switch_id
    DepositSwitchGetResponse:
      title: DepositSwitchGetResponse
      type: object
      additionalProperties: true
      description: DepositSwitchGetResponse defines the response schema for `/deposit_switch/get`
      properties:
        deposit_switch_id:
          type: string
          description: The ID of the deposit switch.
        target_account_id:
          type: string
          nullable: true
          description: The ID of the bank account the direct deposit was switched to.
        target_item_id:
          type: string
          nullable: true
          description: The ID of the Item the direct deposit was switched to.
        state:
          type: string
          enum:
          - initialized
          - processing
          - completed
          - error
          description: |2-

            The state, or status, of the deposit switch.

            - `initialized` – The deposit switch has been initialized with the user entering the information required to submit the deposit switch request.

            - `processing` – The deposit switch request has been submitted and is being processed.

            - `completed` – The user's employer has fulfilled the deposit switch request.

            - `error` – There was an error processing the deposit switch request.
        switch_method:
          nullable: true
          type: string
          enum:
          - instant
          - mail
          - pdf
          - null
          description: |-
            The method used to make the deposit switch.

            - `instant` – User instantly switched their direct deposit to a new or existing bank account by connecting their payroll or employer account.

            - `mail` – User requested that Plaid contact their employer by mail to make the direct deposit switch.

            - `pdf` – User generated a PDF or email to be sent to their employer with the information necessary to make the deposit switch.'
        account_has_multiple_allocations:
          nullable: true
          type: boolean
          description: When `true`, user’s direct deposit goes to multiple banks. When false, user’s direct deposit only goes to the target account. Always `null` if the deposit switch has not been completed.
        is_allocated_remainder:
          nullable: true
          type: boolean
          description: When `true`, the target account is allocated the remainder of direct deposit after all other allocations have been deducted. When `false`, user’s direct deposit is allocated as a percent or amount. Always `null` if the deposit switch has not been completed.
        percent_allocated:
          type: number
          nullable: true
          description: The percentage of direct deposit allocated to the target account. Always `null` if the target account is not allocated a percentage or if the deposit switch has not been completed or if `is_allocated_remainder` is true.
        amount_allocated:
          type: number
          nullable: true
          description: The dollar amount of direct deposit allocated to the target account. Always `null` if the target account is not allocated an amount or if the deposit switch has not been completed.
        employer_name:
          type: string
          nullable: true
          description: The name of the employer selected by the user. If the user did not select an employer, the value returned is `null`.
        employer_id:
          type: string
          nullable: true
          description: The ID of the employer selected by the user. If the user did not select an employer, the value returned is `null`.
        institution_name:
          type: string
          nullable: true
          description: The name of the institution selected by the user. If the user did not select an institution, the value returned is `null`.
        institution_id:
          type: string
          nullable: true
          description: The ID of the institution selected by the user. If the user did not select an institution, the value returned is `null`.
        date_created:
          description: |
            [ISO 8601](https://wikipedia.org/wiki/ISO_8601) date the deposit switch was created.
          type: string
          format: date
        date_completed:
          type: string
          format: date
          nullable: true
          description: |
            [ISO 8601](https://wikipedia.org/wiki/ISO_8601) date the deposit switch was completed. Always `null` if the deposit switch has not been completed.
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - deposit_switch_id
      - target_account_id
      - target_item_id
      - state
      - account_has_multiple_allocations
      - is_allocated_remainder
      - percent_allocated
      - amount_allocated
      - date_created
      - date_completed
      - request_id
    DepositSwitchStateUpdateWebhook:
      title: DepositSwitchStateUpdateWebhook
      type: object
      description: Fired when the status of a deposit switch request has changed.
      x-examples:
        example-1:
          webhook_type: DEPOSIT_SWITCH
          webhook_code: SWITCH_STATE_UPDATE
          state: completed
          deposit_switch_id: f6f5132f-853b-421c-8c41-d24f93ebc39f
      properties:
        webhook_type:
          type: string
          description: '`"DEPOSIT_SWITCH"`'
        webhook_code:
          type: string
          description: '`"SWITCH_STATE_UPDATE"`'
        state:
          type: string
          description: |2-

            The state, or status, of the deposit switch.

            `initialized`: The deposit switch has been initialized with the user entering the information required to submit the deposit switch request.

            `processing`: The deposit switch request has been submitted and is being processed.

            `completed`: The user's employer has fulfilled and completed the deposit switch request.

            `error`: There was an error processing the deposit switch request.

            For more information, see the [Deposit Switch API reference](/docs/api/products#deposit_switchget).
        deposit_switch_id:
          type: string
          description: The ID of the deposit switch.
    AssetReportAuditCopyGetRequest:
      title: AssetReportAuditCopyGetRequest
      type: object
      description: AssetReportAuditCopyGetRequest defines the request schema for `/asset_report/audit_copy/get`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        audit_copy_token:
          type: string
          description: The `audit_copy_token` granting access to the Audit Copy you would like to get.
      required:
      - audit_copy_token
    TransferGetRequest:
      title: TransferGetRequest
      type: object
      description: Defines the request schema for `/transfer/get`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        transfer_id:
          $ref: '#/components/schemas/TransferID'
      required:
      - transfer_id
    BankTransferGetRequest:
      title: BankTransferGetRequest
      type: object
      description: Defines the request schema for `/bank_transfer/get`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        bank_transfer_id:
          $ref: '#/components/schemas/BankTransferID'
      required:
      - bank_transfer_id
    TransferGetResponse:
      title: TransferGetResponse
      type: object
      additionalProperties: true
      description: Defines the response schema for `/transfer/get`
      properties:
        transfer:
          $ref: '#/components/schemas/Transfer'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - transfer
      - request_id
    BankTransferGetResponse:
      title: BankTransferGetResponse
      type: object
      additionalProperties: true
      description: Defines the response schema for `/bank_transfer/get`
      properties:
        bank_transfer:
          $ref: '#/components/schemas/BankTransfer'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - bank_transfer
      - request_id
    TransferID:
      type: string
      title: TransferID
      description: Plaid’s unique identifier for a transfer.
    TransferAuthorizationID:
      type: string
      title: TransferAuthorizationID
      description: Plaid’s unique identifier for a transfer authorization.
    BankTransferID:
      type: string
      title: BankTransferID
      description: Plaid’s unique identifier for a bank transfer.
    Transfer:
      title: Transfer
      type: object
      additionalProperties: true
      description: Represents a transfer within the Transfers API.
      properties:
        id:
          $ref: '#/components/schemas/TransferID'
        ach_class:
          $ref: '#/components/schemas/ACHClass'
        account_id:
          type: string
          description: The account ID that should be credited/debited for this transfer.
        type:
          $ref: '#/components/schemas/TransferType'
        user:
          $ref: '#/components/schemas/TransferUserInResponse'
        amount:
          $ref: '#/components/schemas/TransferAmount'
        iso_currency_code:
          type: string
          description: The currency of the transfer amount, e.g. "USD"
        description:
          type: string
          description: The description of the transfer.
        created:
          type: string
          format: date-time
          description: The datetime when this transfer was created. This will be of the form `2006-01-02T15:04:05Z`
        status:
          $ref: '#/components/schemas/TransferStatus'
        network:
          $ref: '#/components/schemas/TransferNetwork'
        cancellable:
          type: boolean
          description: When `true`, you can still cancel this transfer.
        failure_reason:
          $ref: '#/components/schemas/TransferFailure'
        custom_tag:
          type: string
          description: A string containing the custom tag provided by the client in the create request. Will be null if not provided.
          nullable: true
        metadata:
          $ref: '#/components/schemas/TransferMetadata'
        origination_account_id:
          type: string
          description: Plaid’s unique identifier for the origination account that was used for this transfer.
        direction:
          $ref: '#/components/schemas/TransferDirection'
      required:
      - id
      - ach_class
      - account_id
      - type
      - user
      - amount
      - iso_currency_code
      - description
      - created
      - status
      - network
      - cancellable
      - failure_reason
      - custom_tag
      - metadata
      - origination_account_id
      - direction
    BankTransfer:
      title: BankTransfer
      type: object
      additionalProperties: true
      description: Represents a bank transfer within the Bank Transfers API.
      properties:
        id:
          $ref: '#/components/schemas/BankTransferID'
        ach_class:
          $ref: '#/components/schemas/ACHClass'
        account_id:
          type: string
          description: The account ID that should be credited/debited for this bank transfer.
        type:
          $ref: '#/components/schemas/BankTransferType'
        user:
          $ref: '#/components/schemas/BankTransferUser'
        amount:
          $ref: '#/components/schemas/BankTransferAmount'
        iso_currency_code:
          type: string
          description: The currency of the transfer amount, e.g. "USD"
        description:
          type: string
          description: The description of the transfer.
        created:
          type: string
          format: date-time
          description: The datetime when this bank transfer was created. This will be of the form `2006-01-02T15:04:05Z`
        status:
          $ref: '#/components/schemas/BankTransferStatus'
        network:
          $ref: '#/components/schemas/BankTransferNetwork'
        cancellable:
          type: boolean
          description: When `true`, you can still cancel this bank transfer.
        failure_reason:
          $ref: '#/components/schemas/BankTransferFailure'
        custom_tag:
          type: string
          description: A string containing the custom tag provided by the client in the create request. Will be null if not provided.
          nullable: true
        metadata:
          $ref: '#/components/schemas/BankTransferMetadata'
        origination_account_id:
          type: string
          description: Plaid’s unique identifier for the origination account that was used for this transfer.
        direction:
          $ref: '#/components/schemas/BankTransferDirection'
      required:
      - id
      - ach_class
      - account_id
      - type
      - user
      - amount
      - iso_currency_code
      - description
      - created
      - status
      - network
      - cancellable
      - failure_reason
      - custom_tag
      - metadata
      - origination_account_id
      - direction
    ACHClass:
      type: string
      title: ACHClass
      enum:
      - arc
      - cbr
      - ccd
      - cie
      - cor
      - ctx
      - iat
      - mte
      - pbr
      - pop
      - pos
      - ppd
      - rck
      - tel
      - web
      description: |-
        Specifies the use case of the transfer.  Required for transfers on an ACH network.

        `"arc"` - Accounts Receivable Entry

        `"cbr`" - Cross Border Entry

        `"ccd"` - Corporate Credit or Debit - fund transfer between two corporate bank accounts

        `"cie"` - Customer Initiated Entry

        `"cor"` - Automated Notification of Change

        `"ctx"` - Corporate Trade Exchange

        `"iat"` - International

        `"mte"` - Machine Transfer Entry

        `"pbr"` - Cross Border Entry

        `"pop"` - Point-of-Purchase Entry

        `"pos"` - Point-of-Sale Entry

        `"ppd"` - Prearranged Payment or Deposit - the transfer is part of a pre-existing relationship with a consumer, eg. bill payment

        `"rck"` - Re-presented Check Entry

        `"tel"` - Telephone-Initiated Entry

        `"web"` - Internet-Initiated Entry - debits from a consumer’s account where their authorization is obtained over the Internet
    TransferAmount:
      title: TransferAmount
      type: string
      description: The amount of the transfer (decimal string with two digits of precision e.g. “10.00”).
    BankTransferAmount:
      title: BankTransferAmount
      type: string
      description: The amount of the bank transfer (decimal string with two digits of precision e.g. “10.00”).
    TransferCreateIdempotencyKey:
      title: TransferCreateIdempotencyKey
      type: string
      maxLength: 50
      description: |-
        A random key provided by the client, per unique transfer. Maximum of 50 characters.

        The API supports idempotency for safely retrying requests without accidentally performing the same operation twice. For example, if a request to create a transfer fails due to a network connection error, you can retry the request with the same idempotency key to guarantee that only a single transfer is created.
    BankTransferIdempotencyKey:
      title: BankTransferIdempotencyKey
      type: string
      maxLength: 50
      description: |-
        A random key provided by the client, per unique bank transfer. Maximum of 50 characters.

        The API supports idempotency for safely retrying requests without accidentally performing the same operation twice. For example, if a request to create a bank transfer fails due to a network connection error, you can retry the request with the same idempotency key to guarantee that only a single bank transfer is created.
    TransferUserInRequest:
      title: TransferUserInRequest
      type: object
      additionalProperties: true
      description: The legal name and other information for the account holder.
      properties:
        legal_name:
          type: string
          description: The user's legal name.
        phone_number:
          type: string
          description: The user's phone number.
        email_address:
          type: string
          description: The user's email address.
        address:
          $ref: '#/components/schemas/TransferUserAddressInRequest'
      required:
      - legal_name
    TransferUserInResponse:
      title: TransferUserInResponse
      type: object
      additionalProperties: true
      description: The legal name and other information for the account holder.
      properties:
        legal_name:
          type: string
          description: The user's legal name.
        phone_number:
          type: string
          description: The user's phone number.
          nullable: true
        email_address:
          type: string
          description: The user's email address.
          nullable: true
        address:
          $ref: '#/components/schemas/TransferUserAddressInResponse'
      required:
      - legal_name
      - phone_number
      - email_address
      - address
    TransferUserAddressInRequest:
      title: TransferUserAddressInRequest
      type: object
      additionalProperties: true
      description: The address associated with the account holder.
      properties:
        street:
          type: string
          description: The street number and name (i.e., "100 Market St.").
        city:
          type: string
          description: Ex. "San Francisco"
        region:
          type: string
          description: The state or province (e.g., "California").
        postal_code:
          type: string
          description: The postal code (e.g., "94103").
        country:
          type: string
          description: A two-letter country code (e.g., "US").
    TransferUserAddressInResponse:
      title: TransferUserAddressInResponse
      type: object
      nullable: true
      additionalProperties: true
      description: The address associated with the account holder.
      properties:
        street:
          type: string
          description: The street number and name (i.e., "100 Market St.").
          nullable: true
        city:
          type: string
          description: Ex. "San Francisco"
          nullable: true
        region:
          type: string
          description: The state or province (e.g., "California").
          nullable: true
        postal_code:
          type: string
          description: The postal code (e.g., "94103").
          nullable: true
        country:
          type: string
          description: A two-letter country code (e.g., "US").
          nullable: true
      required:
      - street
      - city
      - region
      - postal_code
      - country
    BankTransferUser:
      title: BankTransferUser
      type: object
      additionalProperties: true
      description: The legal name and other information for the account holder.
      properties:
        legal_name:
          type: string
          description: The account holder’s full legal name. If the transfer description is `ccd`, this should be the business name of the account holder.
        email_address:
          type: string
          description: The account holder’s email.
          nullable: true
        routing_number:
          type: string
          description: The account holder's routing number. This field is only used in response data. Do not provide this field when making requests.
          readOnly: true
      required:
      - legal_name
    TransferAuthorizationDecisionRationale:
      title: TransferAuthorizationDecisionRationale
      type: object
      nullable: true
      additionalProperties: true
      description: The rationale for Plaid's decision regarding a proposed transfer. Will be null for `approved` decisions.
      properties:
        code:
          type: string
          description: |-
            A code representing the rationale for permitting or declining the proposed transfer. Possible values are:

            `NSF` – Transaction likely to result in a return due to insufficient funds.

            `RISK` - Transaction is high-risk.

            `MANUALLY_VERIFIED_ITEM` – Item created via same-day micro deposits, limited information available. Plaid can only offer `permitted` as a transaction decision.

            `LOGIN_REQUIRED` – Unable to collect the account information required for an authorization decision due to Item staleness. Can be rectified using Link update mode.

            `ERROR` – Unable to collect the account information required for an authorization decision due to an error.
          enum:
          - NSF
          - RISK
          - MANUALLY_VERIFIED_ITEM
          - LOGIN_REQUIRED
          - ERROR
        description:
          type: string
          description: A human-readable description of the code associated with a permitted transfer or transfer decline.
      required:
      - code
      - description
    TransferAuthorizationProposedTransfer:
      title: TransferAuthorizationProposedTransfer
      type: object
      additionalProperties: true
      description: Details regarding the proposed transfer.
      properties:
        ach_class:
          $ref: '#/components/schemas/ACHClass'
        account_id:
          type: string
          description: The Plaid `account_id` for the account that will be debited or credited.
        type:
          $ref: '#/components/schemas/TransferType'
        user:
          $ref: '#/components/schemas/TransferUserInResponse'
        amount:
          $ref: '#/components/schemas/TransferAmount'
        iso_currency_code:
          type: string
          description: The currency of the transfer amount.
        description:
          type: string
          description: A description of the proposed transfer.
        network:
          type: string
          description: The network or rails used for the transfer.
        origination_account_id:
          type: string
          description: Plaid's unique identifier for the origination account that was used for this transfer.
      required:
      - ach_class
      - account_id
      - type
      - user
      - amount
      - iso_currency_code
      - description
      - network
      - origination_account_id
    TransferAuthorizationDevice:
      title: TransferAuthorizationDevice
      type: object
      additionalProperties: true
      description: Information about the device being used to initiate the authorization.
      properties:
        ip_address:
          type: string
          description: The IP address of the device being used to initiate the authorization.
        user_agent:
          type: string
          description: The user agent of the device being used to initiate the authorization.
    TransferMetadata:
      type: object
      additionalProperties:
        type: string
      title: TransferMetadata
      nullable: true
      maxProperties: 50
      description: |
        The Metadata object is a mapping of client-provided string fields to any string value. The following limitations apply:
        - The JSON values must be Strings (no nested JSON objects allowed)
        - Only ASCII characters may be used
        - Maximum of 50 key/value pairs
        - Maximum key length of 40 characters
        - Maximum value length of 500 characters
    BankTransferMetadata:
      type: object
      additionalProperties:
        type: string
      title: BankTransferMetadata
      nullable: true
      maxProperties: 50
      description: |
        The Metadata object is a mapping of client-provided string fields to any string value. The following limitations apply:
        - The JSON values must be Strings (no nested JSON objects allowed)
        - Only ASCII characters may be used
        - Maximum of 50 key/value pairs
        - Maximum key length of 40 characters
        - Maximum value length of 500 characters
    TransferType:
      type: string
      title: TransferType
      description: The type of transfer. This will be either `debit` or `credit`.  A `debit` indicates a transfer of money into the origination account; a `credit` indicates a transfer of money out of the origination account.
      enum:
      - debit
      - credit
    BankTransferType:
      type: string
      title: BankTransferType
      description: The type of bank transfer. This will be either `debit` or `credit`.  A `debit` indicates a transfer of money into the origination account; a `credit` indicates a transfer of money out of the origination account.
      enum:
      - debit
      - credit
    TransferStatus:
      type: string
      title: TransferStatus
      description: The status of the transfer.
      enum:
      - pending
      - posted
      - cancelled
      - failed
      - reversed
    BankTransferStatus:
      type: string
      title: BankTransferStatus
      description: The status of the transfer.
      enum:
      - pending
      - posted
      - cancelled
      - failed
      - reversed
    TransferNetwork:
      type: string
      title: TransferNetwork
      description: The network or rails used for the transfer. Valid options are `ach` or `same-day-ach`.
      enum:
      - ach
      - same-day-ach
    BankTransferNetwork:
      type: string
      title: BankTransferNetwork
      description: The network or rails used for the transfer. Valid options are `ach`, `same-day-ach`, or `wire`.
      enum:
      - ach
      - same-day-ach
      - wire
    TransferFailure:
      title: TransferFailure
      type: object
      additionalProperties: true
      nullable: true
      description: The failure reason if the type of this transfer is `"failed"` or `"reversed"`. Null value otherwise.
      properties:
        ach_return_code:
          type: string
          nullable: true
          description: The ACH return code, e.g. `R01`.  A return code will be provided if and only if the transfer status is `reversed`. For a full listing of ACH return codes, see [Bank Transfers errors](https://plaid.com/docs/errors/bank-transfers/#ach-return-codes).
        description:
          type: string
          description: A human-readable description of the reason for the failure or reversal.
    BankTransferFailure:
      title: BankTransferFailure
      type: object
      additionalProperties: true
      nullable: true
      description: The failure reason if the type of this transfer is `"failed"` or `"reversed"`. Null value otherwise.
      properties:
        ach_return_code:
          type: string
          nullable: true
          description: The ACH return code, e.g. `R01`.  A return code will be provided if and only if the transfer status is `reversed`. For a full listing of ACH return codes, see [Bank Transfers errors](https://plaid.com/docs/errors/bank-transfers/#ach-return-codes).
        description:
          type: string
          description: A human-readable description of the reason for the failure or reversal.
    TransferAuthorizationCreateRequest:
      title: TransferAuthorizationCreateRequest
      type: object
      description: Defines the request schema for `/transfer/authorization/create`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        access_token:
          $ref: '#/components/schemas/TransferAccessToken'
        account_id:
          type: string
          description: The Plaid `account_id` for the account that will be debited or credited.
        type:
          $ref: '#/components/schemas/TransferType'
        network:
          $ref: '#/components/schemas/TransferNetwork'
        amount:
          $ref: '#/components/schemas/TransferAmount'
        iso_currency_code:
          type: string
          description: The currency of the transfer amount – should be set to "USD".
        description:
          type: string
          description: The authorization description. Maximum of 10 characters.
          maxLength: 10
        ach_class:
          $ref: '#/components/schemas/ACHClass'
        user:
          $ref: '#/components/schemas/TransferUserInRequest'
        device:
          $ref: '#/components/schemas/TransferAuthorizationDevice'
        origination_account_id:
          type: string
          description: Plaid's unique identifier for the origination account for this authorization. If not specified, the default account will be used.
      required:
      - access_token
      - account_id
      - type
      - network
      - amount
      - iso_currency_code
      - description
      - ach_class
      - user
    TransferCreateRequest:
      title: TransferCreateRequest
      type: object
      description: Defines the request schema for `/transfer/create`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        idempotency_key:
          $ref: '#/components/schemas/TransferCreateIdempotencyKey'
        access_token:
          $ref: '#/components/schemas/TransferAccessToken'
        account_id:
          type: string
          description: The Plaid `account_id` for the account that will be debited or credited.
        authorization_id:
          $ref: '#/components/schemas/TransferAuthorizationID'
        type:
          $ref: '#/components/schemas/TransferType'
        network:
          $ref: '#/components/schemas/TransferNetwork'
        amount:
          $ref: '#/components/schemas/TransferAmount'
        iso_currency_code:
          type: string
          description: The currency of the transfer amount – should be set to "USD".
        description:
          type: string
          description: The transfer description. Maximum of 10 characters.
          maxLength: 10
        ach_class:
          $ref: '#/components/schemas/ACHClass'
        user:
          $ref: '#/components/schemas/TransferUserInRequest'
        custom_tag:
          type: string
          maxLength: 100
          nullable: true
          description: An arbitrary string provided by the client for storage with the transfer. May be up to 100 characters.
        metadata:
          $ref: '#/components/schemas/TransferMetadata'
        origination_account_id:
          type: string
          nullable: true
          description: Plaid’s unique identifier for the origination account for this transfer. If you have more than one origination account, this value must be specified.
      required:
      - idempotency_key
      - access_token
      - account_id
      - authorization_id
      - type
      - network
      - amount
      - iso_currency_code
      - description
      - user
    BankTransferCreateRequest:
      title: BankTransferCreateRequest
      type: object
      description: Defines the request schema for `/bank_transfer/create`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        idempotency_key:
          $ref: '#/components/schemas/BankTransferIdempotencyKey'
        access_token:
          $ref: '#/components/schemas/BankTransferAccessToken'
        account_id:
          type: string
          description: The Plaid `account_id` for the account that will be debited or credited.
        type:
          $ref: '#/components/schemas/BankTransferType'
        network:
          $ref: '#/components/schemas/BankTransferNetwork'
        amount:
          $ref: '#/components/schemas/BankTransferAmount'
        iso_currency_code:
          type: string
          description: The currency of the transfer amount – should be set to "USD".
        description:
          type: string
          description: The transfer description. Maximum of 10 characters.
          maxLength: 10
        ach_class:
          $ref: '#/components/schemas/ACHClass'
        user:
          $ref: '#/components/schemas/BankTransferUser'
        custom_tag:
          type: string
          maxLength: 100
          nullable: true
          description: An arbitrary string provided by the client for storage with the bank transfer. May be up to 100 characters.
        metadata:
          $ref: '#/components/schemas/BankTransferMetadata'
        origination_account_id:
          type: string
          nullable: true
          description: Plaid’s unique identifier for the origination account for this transfer. If you have more than one origination account, this value must be specified.
      required:
      - idempotency_key
      - access_token
      - account_id
      - type
      - network
      - amount
      - iso_currency_code
      - description
      - user
    TransferAuthorizationCreateResponse:
      title: TransferAuthorizationCreateResponse
      type: object
      additionalProperties: true
      description: Defines the response schema for `/transfer/authorization/create`
      properties:
        authorization:
          $ref: '#/components/schemas/TransferAuthorization'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - authorization
      - request_id
    TransferAuthorization:
      title: TransferAuthorization
      type: object
      additionalProperties: true
      description: TransferAuthorization contains the authorization decision for a proposed transfer
      properties:
        id:
          $ref: '#/components/schemas/TransferAuthorizationID'
        created:
          type: string
          description: The datetime representing when the authorization was created, in the format "2006-01-02T15:04:05Z".
        decision:
          type: string
          description: "\nA decision regarding the proposed transfer.\n\n`approved` – The proposed transfer has received the end user's consent and has been approved for processing. Plaid has also reviewed the proposed transfer and has approved it for processing. \n\n`permitted` – Plaid was unable to fetch the information required to approve or decline the proposed transfer. You may proceed with the transfer, but further review is recommended. Plaid is awaiting further instructions from the client.\n\n`declined` – Plaid reviewed the proposed transfer and declined processing. Refer to the `code` field in the `decision_rationale` object for details."
          enum:
          - approved
          - permitted
          - declined
        decision_rationale:
          $ref: '#/components/schemas/TransferAuthorizationDecisionRationale'
        proposed_transfer:
          $ref: '#/components/schemas/TransferAuthorizationProposedTransfer'
      required:
      - id
      - created
      - decision
      - decision_rationale
      - proposed_transfer
    TransferCreateResponse:
      title: TransferCreateResponse
      type: object
      additionalProperties: true
      description: Defines the response schema for `/transfer/create`
      properties:
        transfer:
          $ref: '#/components/schemas/Transfer'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - transfer
      - request_id
    BankTransferCreateResponse:
      title: BankTransferCreateResponse
      type: object
      additionalProperties: true
      description: Defines the response schema for `/bank_transfer/create`
      properties:
        bank_transfer:
          $ref: '#/components/schemas/BankTransfer'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - bank_transfer
      - request_id
    TransferListRequest:
      title: TransferListRequest
      type: object
      description: Defines the request schema for `/transfer/list`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        start_date:
          type: string
          format: date-time
          nullable: true
          description: The start datetime of transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)
        end_date:
          type: string
          format: date-time
          nullable: true
          description: The end datetime of transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)
        count:
          type: integer
          minimum: 1
          maximum: 25
          default: 25
          description: The maximum number of transfers to return.
        offset:
          type: integer
          default: 0
          minimum: 0
          description: The number of transfers to skip before returning results.
        origination_account_id:
          type: string
          nullable: true
          description: Filter transfers to only those originated through the specified origination account.
        direction:
          $ref: '#/components/schemas/TransferDirection'
    BankTransferListRequest:
      title: BankTransferListRequest
      type: object
      description: Defines the request schema for `/bank_transfer/list`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        start_date:
          type: string
          format: date-time
          nullable: true
          description: The start datetime of bank transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)
        end_date:
          type: string
          format: date-time
          nullable: true
          description: The end datetime of bank transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)
        count:
          type: integer
          minimum: 1
          maximum: 25
          default: 25
          description: The maximum number of bank transfers to return.
        offset:
          type: integer
          default: 0
          minimum: 0
          description: The number of bank transfers to skip before returning results.
        origination_account_id:
          type: string
          nullable: true
          description: Filter bank transfers to only those originated through the specified origination account.
        direction:
          $ref: '#/components/schemas/BankTransferDirection'
    TransferListResponse:
      title: TransferListResponse
      type: object
      additionalProperties: true
      description: Defines the response schema for `/transfer/list`
      properties:
        transfers:
          type: array
          description: An array of objects which represent transfer information
          items:
            $ref: '#/components/schemas/Transfer'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - transfers
      - request_id
    BankTransferListResponse:
      title: BankTransferListResponse
      type: object
      additionalProperties: true
      description: Defines the response schema for `/bank_transfer/list`
      properties:
        bank_transfers:
          type: array
          description: An array of objects which represent a bank transfer within the Bank Transfers API.
          items:
            $ref: '#/components/schemas/BankTransfer'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - bank_transfers
      - request_id
    TransferDirection:
      type: string
      nullable: true
      title: TransferDirection
      description: 'Indicates the direction of the transfer: `outbound` for API-initiated transfers, or `inbound` for payments received by the FBO account.'
      enum:
      - outbound
      - inbound
      - null
    BankTransferDirection:
      type: string
      nullable: true
      title: BankTransferDirection
      description: 'Indicates the direction of the transfer: `outbound` for API-initiated transfers, or `inbound` for payments received by the FBO account.'
      enum:
      - outbound
      - inbound
      - null
    TransferCancelRequest:
      title: TransferCancelRequest
      type: object
      description: Defines the request schema for `/transfer/cancel`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        transfer_id:
          $ref: '#/components/schemas/TransferID'
      required:
      - transfer_id
    BankTransferCancelRequest:
      title: BankTransferCancelRequest
      type: object
      description: Defines the request schema for `/bank_transfer/cancel`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        bank_transfer_id:
          $ref: '#/components/schemas/BankTransferID'
      required:
      - bank_transfer_id
    TransferCancelResponse:
      title: TransferCancelResponse
      type: object
      additionalProperties: true
      description: Defines the response schema for `/transfer/cancel`
      properties:
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - request_id
    BankTransferCancelResponse:
      title: BankTransferCancelResponse
      type: object
      additionalProperties: true
      description: Defines the response schema for `/bank_transfer/cancel`
      properties:
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - request_id
    TransferEventListRequest:
      title: TransferEventListRequest
      type: object
      description: Defines the request schema for `/transfer/event/list`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        start_date:
          type: string
          format: date-time
          description: The start datetime of transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)
          nullable: true
        end_date:
          type: string
          format: date-time
          description: The end datetime of transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)
          nullable: true
        transfer_id:
          type: string
          title: TransferID
          description: Plaid’s unique identifier for a transfer.
          nullable: true
        account_id:
          type: string
          description: The account ID to get events for all transactions to/from an account.
          nullable: true
        transfer_type:
          type: string
          nullable: true
          title: TransferType
          description: The type of transfer. This will be either `debit` or `credit`.  A `debit` indicates a transfer of money into your origination account; a `credit` indicates a transfer of money out of your origination account.
          enum:
          - debit
          - credit
          - null
        event_types:
          type: array
          description: Filter events by event type.
          items:
            $ref: '#/components/schemas/TransferEventType'
        count:
          type: integer
          description: The maximum number of transfer events to return. If the number of events matching the above parameters is greater than `count`, the most recent events will be returned.
          default: 25
          maximum: 25
          minimum: 1
          nullable: true
        offset:
          type: integer
          default: 0
          minimum: 0
          description: The offset into the list of transfer events. When `count`=25 and `offset`=0, the first 25 events will be returned. When `count`=25 and `offset`=25, the next 25 bank transfer events will be returned.
          nullable: true
        origination_account_id:
          type: string
          description: The origination account ID to get events for transfers from a specific origination account.
          nullable: true
        direction:
          type: string
          title: TransferDirection
          description: |-
            Indicates the direction of the transfer: `outbound`: for API-initiated transfers
            `inbound`: for payments received by the FBO account.
          enum:
          - inbound
          - outbound
          - null
          nullable: true
    BankTransferEventListRequest:
      title: BankTransferEventListRequest
      type: object
      description: Defines the request schema for `/bank_transfer/event/list`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        start_date:
          type: string
          format: date-time
          description: The start datetime of bank transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)
          nullable: true
        end_date:
          type: string
          format: date-time
          description: The end datetime of bank transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)
          nullable: true
        bank_transfer_id:
          type: string
          title: BankTransferID
          description: Plaid’s unique identifier for a bank transfer.
          nullable: true
        account_id:
          type: string
          description: The account ID to get events for all transactions to/from an account.
          nullable: true
        bank_transfer_type:
          type: string
          nullable: true
          title: BankTransferType
          description: The type of bank transfer. This will be either `debit` or `credit`.  A `debit` indicates a transfer of money into your origination account; a `credit` indicates a transfer of money out of your origination account.
          enum:
          - debit
          - credit
          - null
        event_types:
          type: array
          description: Filter events by event type.
          items:
            $ref: '#/components/schemas/BankTransferEventType'
        count:
          type: integer
          description: The maximum number of bank transfer events to return. If the number of events matching the above parameters is greater than `count`, the most recent events will be returned.
          default: 25
          maximum: 25
          minimum: 1
          nullable: true
        offset:
          type: integer
          default: 0
          minimum: 0
          description: The offset into the list of bank transfer events. When `count`=25 and `offset`=0, the first 25 events will be returned. When `count`=25 and `offset`=25, the next 25 bank transfer events will be returned.
          nullable: true
        origination_account_id:
          type: string
          description: The origination account ID to get events for transfers from a specific origination account.
          nullable: true
        direction:
          type: string
          title: BankTransferDirection
          description: |-
            Indicates the direction of the transfer: `outbound`: for API-initiated transfers
            `inbound`: for payments received by the FBO account.
          enum:
          - inbound
          - outbound
          - null
          nullable: true
    TransferEventType:
      type: string
      title: TransferEventType
      description: |-
        The type of event that this transfer represents.

        `pending`: A new transfer was created; it is in the pending state.

        `cancelled`: The transfer was cancelled by the client.

        `failed`: The transfer failed, no funds were moved.

        `posted`: The transfer has been successfully submitted to the payment network.

        `reversed`: A posted transfer was reversed.

        `receiver_pending`: The matching transfer was found as a pending transaction in the receiver's account

        `receiver_posted`: The matching transfer was found as a posted transaction in the receiver's account
      enum:
      - pending
      - cancelled
      - failed
      - posted
      - reversed
      - receiver_pending
      - receiver_posted
    BankTransferEventType:
      type: string
      title: BankTransferEventType
      description: |-
        The type of event that this bank transfer represents.

        `pending`: A new transfer was created; it is in the pending state.

        `cancelled`: The transfer was cancelled by the client.

        `failed`: The transfer failed, no funds were moved.

        `posted`: The transfer has been successfully submitted to the payment network.

        `reversed`: A posted transfer was reversed.

        `receiver_pending`: The matching transfer was found as a pending transaction in the receiver's account

        `receiver_posted`: The matching transfer was found as a posted transaction in the receiver's account
      enum:
      - pending
      - cancelled
      - failed
      - posted
      - reversed
      - receiver_pending
      - receiver_posted
    TransferEvent:
      title: TransferEvent
      type: object
      additionalProperties: true
      description: Represents an event in the Transfers API.
      properties:
        event_id:
          type: integer
          description: Plaid’s unique identifier for this event. IDs are sequential unsigned 64-bit integers.
          minimum: 0
        timestamp:
          type: string
          format: date-time
          description: The datetime when this event occurred. This will be of the form `2006-01-02T15:04:05Z`.
        event_type:
          $ref: '#/components/schemas/TransferEventType'
        account_id:
          type: string
          description: The account ID associated with the transfer.
        transfer_id:
          $ref: '#/components/schemas/TransferID'
        origination_account_id:
          type: string
          description: The ID of the origination account that this balance belongs to.
          nullable: true
        transfer_type:
          $ref: '#/components/schemas/TransferType'
        transfer_amount:
          $ref: '#/components/schemas/TransferAmount'
        transfer_iso_currency_code:
          type: string
          description: The currency of the transfer amount.
        failure_reason:
          $ref: '#/components/schemas/TransferFailure'
        direction:
          $ref: '#/components/schemas/TransferDirection'
        receiver_details:
          $ref: '#/components/schemas/TransferReceiverDetails'
      required:
      - event_id
      - timestamp
      - event_type
      - account_id
      - transfer_id
      - origination_account_id
      - transfer_type
      - transfer_amount
      - transfer_iso_currency_code
      - failure_reason
      - direction
      - receiver_details
    BankTransferEvent:
      title: BankTransferEvent
      type: object
      additionalProperties: true
      description: Represents an event in the Bank Transfers API.
      properties:
        event_id:
          type: integer
          description: Plaid’s unique identifier for this event. IDs are sequential unsigned 64-bit integers.
          minimum: 0
        timestamp:
          type: string
          format: date-time
          description: The datetime when this event occurred. This will be of the form `2006-01-02T15:04:05Z`.
        event_type:
          $ref: '#/components/schemas/BankTransferEventType'
        account_id:
          type: string
          description: The account ID associated with the bank transfer.
        bank_transfer_id:
          $ref: '#/components/schemas/BankTransferID'
        origination_account_id:
          type: string
          description: The ID of the origination account that this balance belongs to.
          nullable: true
        bank_transfer_type:
          $ref: '#/components/schemas/BankTransferType'
        bank_transfer_amount:
          type: string
          description: The bank transfer amount.
        bank_transfer_iso_currency_code:
          type: string
          description: The currency of the bank transfer amount.
        failure_reason:
          $ref: '#/components/schemas/BankTransferFailure'
        direction:
          $ref: '#/components/schemas/BankTransferDirection'
        receiver_details:
          $ref: '#/components/schemas/BankTransferReceiverDetails'
      required:
      - event_id
      - timestamp
      - event_type
      - account_id
      - bank_transfer_id
      - origination_account_id
      - bank_transfer_type
      - bank_transfer_amount
      - bank_transfer_iso_currency_code
      - failure_reason
      - direction
      - receiver_details
    TransferEventListResponse:
      title: TransferEventListResponse
      type: object
      additionalProperties: true
      description: Defines the response schema for `/transfer/event/list`
      properties:
        transfer_events:
          type: array
          description: An array of transfer events in the Transfers API
          items:
            $ref: '#/components/schemas/TransferEvent'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - transfer_events
      - request_id
    BankTransferEventListResponse:
      title: BankTransferEventListResponse
      type: object
      additionalProperties: true
      description: Defines the response schema for `/bank_transfer/event/list`
      properties:
        bank_transfer_events:
          type: array
          description: An array of objects representing events in the Bank Transfers API.
          items:
            $ref: '#/components/schemas/BankTransferEvent'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - bank_transfer_events
      - request_id
    BankTransferEventSyncRequest:
      title: BankTransferEventSyncRequest
      type: object
      description: Defines the request schema for `/bank_transfer/event/sync`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        after_id:
          type: integer
          description: The latest (largest) `event_id` fetched via the sync endpoint, or 0 initially.
          minimum: 0
        count:
          type: integer
          default: 25
          minimum: 1
          maximum: 25
          description: The maximum number of bank transfer events to return.
          nullable: true
      required:
      - after_id
    TransferEventSyncRequest:
      title: TransferEventSyncRequest
      type: object
      description: Defines the request schema for `/transfer/event/sync`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        after_id:
          type: integer
          description: The latest (largest) `event_id` fetched via the sync endpoint, or 0 initially.
          minimum: 0
        count:
          type: integer
          default: 25
          minimum: 1
          maximum: 25
          description: The maximum number of transfer events to return.
          nullable: true
      required:
      - after_id
    BankTransferEventSyncResponse:
      title: BankTransferEventSyncResponse
      type: object
      additionalProperties: true
      description: Defines the response schema for `/bank_transfer/event/sync`
      properties:
        bank_transfer_events:
          type: array
          description: An array of objects representing events in the Bank Transfers API.
          items:
            $ref: '#/components/schemas/BankTransferEvent'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - bank_transfer_events
      - request_id
    TransferEventSyncResponse:
      title: TransferEventSyncResponse
      type: object
      additionalProperties: true
      description: Defines the response schema for `/transfer/event/sync`
      properties:
        transfer_events:
          type: array
          description: An array of transfer events in the Transfers API
          items:
            $ref: '#/components/schemas/TransferEvent'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - transfer_events
      - request_id
    BankTransferSweepGetRequest:
      title: BankTransferSweepGetRequest
      type: object
      description: BankTransferSweepGetRequest defines the request schema for `/bank_transfer/sweep/get`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        sweep_id:
          type: integer
          format: int64
          minimum: 0
          description: Identifier of the sweep.
        origination_account_id:
          type: string
          description: If multiple origination accounts are available, `origination_account_id` must be used to specify the account for which balance will be returned.
          nullable: true
      required:
      - sweep_id
    BankTransferSweepGetResponse:
      title: BankTransferSweepGetResponse
      type: object
      additionalProperties: true
      description: BankTransferSweepGetResponse defines the response schema for `/bank_transfer/sweep/get`
      properties:
        sweep:
          $ref: '#/components/schemas/BankTransferSweep'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - sweep
      - request_id
    BankTransferSweep:
      title: BankTransferSweep
      type: object
      additionalProperties: true
      description: BankTransferSweep describes a sweep transfer.
      properties:
        id:
          type: integer
          format: int64
          minimum: 0
          description: Identifier of the sweep.
        transfer_id:
          type: string
          description: Identifier of the sweep transfer.
          nullable: true
        created_at:
          type: string
          description: The datetime when the sweep occurred, in RFC 3339 format.
          format: date-time
        amount:
          type: string
          description: The amount of the sweep.
        iso_currency_code:
          type: string
          description: The currency of the sweep, e.g. "USD".
        sweep_account:
          $ref: '#/components/schemas/BankTransferSweepAccount'
      required:
      - id
      - transfer_id
      - created_at
      - amount
      - iso_currency_code
      - sweep_account
    BankTransferSweepAccount:
      title: BankTransferSweepAccount
      type: object
      additionalProperties: true
      description: The account where the funds are swept to.
      properties:
        account_number:
          type: string
          description: Account number
        routing_number:
          type: string
          description: Routing number
      required:
      - account_number
      - routing_number
    BankTransferBalanceGetRequest:
      title: BankTransferBalanceGetRequest
      type: object
      description: Defines the request schema for `/bank_transfer/balance/get`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        origination_account_id:
          type: string
          description: If multiple origination accounts are available, `origination_account_id` must be used to specify the account for which balance will be returned.
          nullable: true
    BankTransferBalanceGetResponse:
      title: BankTransferBalanceGetResponse
      type: object
      additionalProperties: true
      description: Defines the response schema for `/bank_transfer/balance/get`
      properties:
        balance:
          $ref: '#/components/schemas/BankTransferBalance'
        origination_account_id:
          type: string
          description: The ID of the origination account that this balance belongs to.
          nullable: true
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - balance
      - origination_account_id
      - request_id
    BankTransferBalance:
      title: BankTransferBalance
      type: object
      additionalProperties: true
      description: The information about the available balance in your bank transfer account.
      properties:
        available:
          type: string
          description: The total available balance - the sum of all successful debit transfer amounts minus all credit transfer amounts.
        transactable:
          type: string
          description: The transactable balance shows the amount in your account that you are able to use for transfers, and is essentially your available balance minus your minimum balance.
      required:
      - available
      - transactable
    BankTransferMigrateAccountRequest:
      title: BankTransferMigrateAccountRequest
      type: object
      description: Defines the request schema for `/bank_transfer/migrate_account`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        account_number:
          type: string
          description: The user's account number.
        routing_number:
          type: string
          description: The user's routing number.
        account_type:
          type: string
          description: The type of the bank account (`checking` or `savings`).
      required:
      - account_number
      - routing_number
      - account_type
    BankTransferMigrateAccountResponse:
      title: BankTransferMigrateAccountResponse
      type: object
      additionalProperties: true
      description: Defines the response schema for `/bank_transfer/migrate_account`
      properties:
        access_token:
          type: string
          description: The Plaid `access_token` for the newly created Item.
        account_id:
          type: string
          description: The Plaid `account_id` for the newly created Item.
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - access_token
      - account_id
      - request_id
    SandboxBankTransferSimulateRequest:
      title: SandboxBankTransferSimulateRequest
      type: object
      description: Defines the request schema for `/sandbox/bank_transfer/simulate`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        bank_transfer_id:
          $ref: '#/components/schemas/BankTransferID'
        event_type:
          type: string
          description: |
            The asynchronous event to be simulated. May be: `posted`, `failed`, or `reversed`.

            An error will be returned if the event type is incompatible with the current transfer status. Compatible status --> event type transitions include:

            `pending` --> `failed`

            `pending` --> `posted`

            `posted` --> `reversed`
        failure_reason:
          $ref: '#/components/schemas/BankTransferFailure'
      required:
      - bank_transfer_id
      - event_type
    SandboxTransferSimulateRequest:
      title: SandboxTransferSimulateRequest
      type: object
      description: Defines the request schema for `/sandbox/transfer/simulate`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        transfer_id:
          $ref: '#/components/schemas/TransferID'
        event_type:
          type: string
          description: |
            The asynchronous event to be simulated. May be: `posted`, `failed`, or `reversed`.

            An error will be returned if the event type is incompatible with the current transfer status. Compatible status --> event type transitions include:

            `pending` --> `failed`

            `pending` --> `posted`

            `posted` --> `reversed`
        failure_reason:
          $ref: '#/components/schemas/TransferFailure'
      required:
      - transfer_id
      - event_type
    SandboxBankTransferSimulateResponse:
      title: SandboxBankTransferSimulateResponse
      type: object
      additionalProperties: true
      description: Defines the response schema for `/sandbox/bank_transfer/simulate`
      properties:
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - request_id
    SandboxTransferSimulateResponse:
      title: SandboxTransferSimulateResponse
      type: object
      additionalProperties: true
      description: Defines the response schema for `/sandbox/transfer/simulate`
      properties:
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - request_id
    TransferReceiverDetails:
      title: TransferReceiverDetails
      type: object
      additionalProperties: true
      description: The receiver details if the type of this event is `reciever_pending` or `reciever_posted`. Null value otherwise.
      nullable: true
      properties:
        available_balance:
          type: string
          description: The sign of the available balance for the receiver bank account associated with the receiver event at the time the matching transaction was found. Can be `positive`, `negative`, or null if the balance was not available at the time.
          enum:
          - positive
          - negative
          - null
          nullable: true
      required:
      - available_balance
    BankTransferReceiverDetails:
      title: BankTransferReceiverDetails
      type: object
      additionalProperties: true
      description: The receiver details if the type of this event is `reciever_pending` or `reciever_posted`. Null value otherwise.
      nullable: true
      properties:
        available_balance:
          type: string
          description: The sign of the available balance for the receiver bank account associated with the receiver event at the time the matching transaction was found. Can be `positive`, `negative`, or null if the balance was not available at the time.
          enum:
          - positive
          - negative
          - null
          nullable: true
      required:
      - available_balance
    AccountFiltersResponse:
      title: AccountFiltersResponse
      description: |
        The `account_filters` specified in the original call to `/link/token/create`.
      type: object
      additionalProperties: true
      properties:
        depository:
          $ref: '#/components/schemas/DepositoryFilter'
        credit:
          $ref: '#/components/schemas/CreditFilter'
        loan:
          $ref: '#/components/schemas/LoanFilter'
        investment:
          $ref: '#/components/schemas/InvestmentFilter'
    InstitutionsSearchAccountFilter:
      title: InstitutionsSearchAccountFilter
      type: object
      additionalProperties: true
      properties:
        loan:
          type: array
          items:
            $ref: '#/components/schemas/AccountSubtype'
        depository:
          type: array
          items:
            $ref: '#/components/schemas/AccountSubtype'
        credit:
          type: array
          items:
            $ref: '#/components/schemas/AccountSubtype'
        investment:
          type: array
          items:
            $ref: '#/components/schemas/AccountSubtype'
    AccountIdentity:
      title: AccountIdentity
      description: Account identity information
      allOf:
      - $ref: '#/components/schemas/AccountBase'
      - type: object
        additionalProperties: true
        properties:
          owners:
            type: array
            description: Data returned by the financial institution about the account owner or owners. Only returned by Identity or Assets endpoints. Multiple owners on a single account will be represented in the same `owner` object, not in multiple owner objects within the array.
            items:
              $ref: '#/components/schemas/Owner'
        required:
        - owners
    AccountAssets:
      title: AccountAssets
      allOf:
      - $ref: '#/components/schemas/AccountBase'
      - type: object
        additionalProperties: true
        properties:
          days_available:
            type: number
            description: The duration of transaction history available for this Item, typically defined as the time since the date of the earliest transaction in that account. Only returned by Assets endpoints.
          transactions:
            type: array
            description: Transaction history associated with the account. Only returned by Assets endpoints. Transaction history returned by endpoints such as `/transactions/get` or `/investments/transactions/get` will be returned in the top-level `transactions` field instead.
            items:
              $ref: '#/components/schemas/AssetReportTransaction'
          owners:
            type: array
            description: Data returned by the financial institution about the account owner or owners. Only returned by Identity or Assets endpoints. Multiple owners on a single account will be represented in the same `owner` object, not in multiple owner objects within the array.
            items:
              $ref: '#/components/schemas/Owner'
          historical_balances:
            type: array
            description: Calculated data about the historical balances on the account. Only returned by Assets endpoints.
            items:
              $ref: '#/components/schemas/HistoricalBalance'
        required:
        - days_available
        - transactions
        - owners
        - historical_balances
    DepositoryFilter:
      title: DepositoryFilter
      description: A filter to apply to `depository`-type accounts
      type: object
      additionalProperties: true
      properties:
        account_subtypes:
          $ref: '#/components/schemas/AccountSubtypes'
      required:
      - account_subtypes
    CreditFilter:
      title: CreditFilter
      description: A filter to apply to `credit`-type accounts
      type: object
      additionalProperties: true
      properties:
        account_subtypes:
          $ref: '#/components/schemas/AccountSubtypes'
      required:
      - account_subtypes
    LoanFilter:
      title: LoanFilter
      description: A filter to apply to `loan`-type accounts
      type: object
      additionalProperties: true
      properties:
        account_subtypes:
          $ref: '#/components/schemas/AccountSubtypes'
      required:
      - account_subtypes
    InvestmentFilter:
      title: InvestmentFilter
      description: A filter to apply to `investment`-type accounts
      type: object
      additionalProperties: true
      properties:
        account_subtypes:
          $ref: '#/components/schemas/AccountSubtypes'
      required:
      - account_subtypes
    EmployersSearchRequest:
      title: EmployersSearchRequest
      type: object
      description: EmployersSearchRequest defines the request schema for `/employers/search`.
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        query:
          type: string
          description: The employer name to be searched for.
        products:
          type: array
          description: The Plaid products the returned employers should support. Currently, this field must be set to `"deposit_switch"`.
          items:
            type: string
      required:
      - query
      - products
    EmployersSearchResponse:
      title: EmployersSearchResponse
      type: object
      additionalProperties: true
      description: EmployersSearchResponse defines the response schema for `/employers/search`.
      properties:
        employers:
          type: array
          description: A list of employers matching the search criteria.
          items:
            $ref: '#/components/schemas/Employer'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - employers
      - request_id
    Employer:
      title: Employer
      type: object
      additionalProperties: true
      description: Data about the employer.
      properties:
        employer_id:
          type: string
          description: Plaid's unique identifier for the employer.
        name:
          type: string
          description: The name of the employer
        address:
          $ref: '#/components/schemas/AddressDataNullable'
        confidence_score:
          type: number
          description: A number from 0 to 1 indicating Plaid's level of confidence in the pairing between the employer and the institution (not yet implemented).
      required:
      - employer_id
      - name
      - address
      - confidence_score
    IncomeVerificationCreateRequest:
      title: IncomeVerificationCreateRequest
      type: object
      description: IncomeVerificationCreateRequest defines the request schema for `/income/verification/create`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        webhook:
          type: string
          description: The URL endpoint to which Plaid should send webhooks related to the progress of the income verification process.
      required:
      - webhook
    IncomeVerificationCreateResponse:
      title: IncomeVerificationCreateResponse
      type: object
      additionalProperties: true
      description: IncomeVerificationCreateResponse defines the response schema for `/income/verification/create`.
      properties:
        income_verification_id:
          type: string
          description: ID of the verification. This ID is persisted throughout the lifetime of the verification.
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - income_verification_id
      - request_id
    LinkTokenCreateRequestIncomeVerification:
      title: LinkTokenCreateRequestIncomeVerification
      type: object
      description: Specifies options for initializing Link for use with the Income (beta) product. This field is required if `income_verification` is included in the `products` array.
      properties:
        income_verification_id:
          type: string
          description: The `income_verification_id` of the verification instance, as provided by `/income/verification/create`.
        asset_report_id:
          type: string
          description: The `asset_report_id` of an asset report associated with the user, as provided by `/asset_report/create`. Providing an `asset_report_id` is optional and can be used to verify the user through a streamlined flow. If provided, the bank linking flow will be skipped.
      required:
      - income_verification_id
    IncomeVerificationStatusWebhook:
      title: IncomeVerificationStatusWebhook
      type: object
      additionalProperties: true
      description: Fired when the status of an income verification instance has changed. It will typically take several minutes for this webhook to fire after the end user has uploaded their documents in the Document Income flow.
      x-examples:
        example-1:
          webhook_type: INCOME
          webhook_code: income_verification
          income_verification_id: f6f5132f-853b-421c-8c41-d24f93ebc39f
          verification_status: VERIFICATION_STATUS_PROCESSING_COMPLETE
      properties:
        webhook_type:
          type: string
          description: '`"INCOME"`'
        webhook_code:
          type: string
          description: '`income_verification`'
        income_verification_id:
          type: string
          description: The `income_verification_id` of the verification instance whose status is being reported.
        verification_status:
          type: string
          description: |-
            `VERIFICATION_STATUS_PROCESSING_COMPLETE`: The income verification status processing has completed.

            `VERIFICATION_STATUS_UPLOAD_ERROR`: An upload error occurred when the end user attempted to upload their verification documentation.

            `VERIFICATION_STATUS_INVALID_TYPE`: The end user attempted to upload verification documentation in an unsupported file format.

            `VERIFICATION_STATUS_DOCUMENT_REJECTED`: The documentation uploaded by the end user was recognized as a supported file format, but not recognized as a valid paystub.

            `VERIFICATION_STATUS_PROCESSING_FAILED`: A failure occurred when attempting to process the verification documentation.
      required:
      - webhook_type
      - webhook_code
      - income_verification_id
      - verification_status
    IncomeVerificationSummaryGetRequest:
      title: IncomeVerificationSummaryGetRequest
      type: object
      description: IncomeVerificationSummaryGetRequest defines the request schema for `/income/verification/summary/get`.
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        income_verification_id:
          type: string
          nullable: true
          deprecated: true
          description: The ID of the verification.
        access_token:
          $ref: '#/components/schemas/AccessTokenNullable'
    IncomeVerificationSummaryGetResponse:
      title: IncomeVerificationSummaryGetResponse
      type: object
      additionalProperties: true
      description: IncomeVerificationSummaryGetResponse defines the response schema for `/income/verification/summary/get`.
      properties:
        income_summaries:
          type: array
          description: A list of income summaries.
          items:
            $ref: '#/components/schemas/IncomeSummary'
        error:
          $ref: '#/components/schemas/Error'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - income_summaries
      - request_id
    IncomeVerificationRefreshRequest:
      type: object
      description: IncomeVerificationRefreshRequest defines the request schema for `/income/verification/refresh`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        income_verification_id:
          type: string
          nullable: true
          deprecated: true
          description: The ID of the verification.
        access_token:
          $ref: '#/components/schemas/AccessTokenNullable'
    IncomeVerificationRefreshResponse:
      type: object
      description: IncomeVerificationRequestResponse defines the response schema for `/income/verification/refresh`
      properties:
        request_id:
          $ref: '#/components/schemas/RequestID'
        verification_refresh_status:
          $ref: '#/components/schemas/VerificationRefreshStatus'
      required:
      - request_id
      - verification_refresh_status
    IncomeSummary:
      title: IncomeSummary
      type: object
      additionalProperties: true
      description: The verified fields from a paystub verification. All fields are provided as reported on the paystub.
      properties:
        employer_name:
          $ref: '#/components/schemas/EmployerIncomeSummaryFieldString'
        employee_name:
          $ref: '#/components/schemas/EmployeeIncomeSummaryFieldString'
        ytd_gross_income:
          $ref: '#/components/schemas/YTDGrossIncomeSummaryFieldNumber'
        ytd_net_income:
          $ref: '#/components/schemas/YTDNetIncomeSummaryFieldNumber'
        pay_frequency:
          $ref: '#/components/schemas/PayFrequency'
        projected_wage:
          $ref: '#/components/schemas/ProjectedIncomeSummaryFieldNumber'
        verified_transaction:
          $ref: '#/components/schemas/TransactionData'
      required:
      - employer_name
      - employee_name
      - ytd_gross_income
      - ytd_net_income
      - pay_frequency
      - projected_wage
      - verified_transaction
    TransactionData:
      title: TransactionData
      type: object
      additionalProperties: true
      nullable: true
      description: Information about the matched direct deposit transaction used to verify a user's payroll information.
      properties:
        description:
          type: string
          description: The description of the transaction.
        amount:
          type: number
          description: The amount of the transaction.
        date:
          type: string
          format: date
          description: The date of the transaction, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ("yyyy-mm-dd").
        account_id:
          type: string
          description: A unique identifier for the end user's account.
        transaction_id:
          type: string
          description: A unique identifier for the transaction.
      required:
      - description
      - amount
      - date
      - account_id
      - transaction_id
    IncomeSummaryFieldString:
      title: IncomeSummaryFieldString
      type: object
      additionalProperties: true
      nullable: true
      properties:
        value:
          type: string
          description: The value of the field.
        verification_status:
          $ref: '#/components/schemas/VerificationStatus'
      required:
      - value
      - verification_status
    EmployerIncomeSummaryFieldString:
      allOf:
      - $ref: '#/components/schemas/IncomeSummaryFieldString'
      - type: object
        additionalProperties: true
      description: The name of the employer, as reported on the paystub.
    EmployeeIncomeSummaryFieldString:
      allOf:
      - $ref: '#/components/schemas/IncomeSummaryFieldString'
      - type: object
        additionalProperties: true
      description: The name of the employee, as reported on the paystub.
    IncomeSummaryFieldNumber:
      title: IncomeSummaryFieldNumber
      type: object
      additionalProperties: true
      nullable: true
      properties:
        value:
          type: number
          description: The value of the field.
        verification_status:
          $ref: '#/components/schemas/VerificationStatus'
      required:
      - value
      - verification_status
    YTDGrossIncomeSummaryFieldNumber:
      allOf:
      - $ref: '#/components/schemas/IncomeSummaryFieldNumber'
      - type: object
        additionalProperties: true
      description: Year-to-date pre-tax earnings, as reported on the paystub.
    YTDNetIncomeSummaryFieldNumber:
      allOf:
      - $ref: '#/components/schemas/IncomeSummaryFieldNumber'
      - type: object
        additionalProperties: true
      description: Year-to-date earnings after any tax withholdings, benefit payments or deductions, as reported on the paystub.
    ProjectedIncomeSummaryFieldNumber:
      allOf:
      - $ref: '#/components/schemas/IncomeSummaryFieldNumber'
      - type: object
        additionalProperties: true
      description: The employee's estimated annual salary, as derived from information reported on the paystub.
    PayFrequency:
      title: PayFrequency
      type: object
      description: 'The frequency at which the employee is paid. Possible values: `MONTHLY`, `BI-WEEKLY`, `WEEKLY`, `SEMI-MONTHLY`.'
      additionalProperties: true
      nullable: true
      properties:
        value:
          type: string
          enum:
          - monthly
          - semimonthly
          - weekly
          - biweekly
          - unknown
          - "null"
          description: The frequency of the pay period.
        verification_status:
          $ref: '#/components/schemas/VerificationStatus'
      required:
      - value
      - verification_status
    VerificationStatus:
      type: string
      title: VerificationStatus
      description: |-
        The verification status. One of the following:

        `"VERIFIED"`: The information was successfully verified.

        `"UNVERIFIED"`: The verification has not yet been performed.

        `"NEEDS_INFO"`: The verification was attempted but could not be completed due to missing information.

        "`UNABLE_TO_VERIFY`": The verification was performed and the information could not be verified.

        `"UNKNOWN"`: The verification status is unknown.
      enum:
      - VERIFIED
      - UNVERIFIED
      - NEEDS_INFO
      - UNABLE_TO_VERIFY
      - UNKNOWN
    VerificationRefreshStatus:
      type: string
      title: VerificationRefreshStatus
      description: |-
        The verification refresh status. One of the following:

        `"VERIFICATION_REFRESH_STATUS_USER_PRESENCE_REQUIRED"` User presence is required to refresh an income verification.
      enum:
      - VERIFICATION_REFRESH_STATUS_USER_PRESENCE_REQUIRED
    IncomeVerificationPaystubGetRequest:
      title: IncomeVerificationPaystubGetRequest
      type: object
      description: IncomeVerificationPaystubGetRequest defines the request schema for `/income/verification/paystub/get`.
      deprecated: true
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        income_verification_id:
          type: string
          nullable: true
          deprecated: true
          description: The ID of the verification for which to get paystub information.
        access_token:
          $ref: '#/components/schemas/AccessTokenNullable'
    IncomeVerificationPaystubsGetRequest:
      title: IncomeVerificationPaystubsGetRequest
      type: object
      description: IncomeVerificationPaystubsGetRequest defines the request schema for `/income/verification/paystubs/get`.
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        income_verification_id:
          type: string
          nullable: true
          deprecated: true
          description: The ID of the verification for which to get paystub information.
        access_token:
          $ref: '#/components/schemas/AccessTokenNullable'
    IncomeVerificationPaystubsGetResponse:
      title: IncomeVerificationPaystubsGetResponse
      type: object
      additionalProperties: true
      description: IncomeVerificationPaystubsGetResponse defines the response schema for `/income/verification/paystubs/get`.
      properties:
        paystubs:
          type: array
          description: An array of objects with information found on a paystubs.
          items:
            $ref: '#/components/schemas/Paystub'
        error:
          $ref: '#/components/schemas/Error'
        document_metadata:
          type: array
          description: An array of objects representing metadata from the end user's uploaded document.
          items:
            $ref: '#/components/schemas/DocumentMetadata'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - paystubs
      - request_id
    DocumentMetadata:
      title: DocumentMetadata
      type: object
      additionalProperties: true
      description: An object representing metadata from the end user's uploaded document.
      properties:
        name:
          type: string
          description: The name of the document.
        status:
          type: string
          description: The processing status of the document.
        doc_id:
          type: string
          description: An identifier of the document that is also present in the paystub response.
    Paystub:
      title: Paystub
      type: object
      additionalProperties: true
      description: An object representing data extracted from the end user's paystub.
      properties:
        deductions:
          $ref: '#/components/schemas/Deductions'
        doc_id:
          type: string
          description: An identifier of the document referenced by the document metadata.
        earnings:
          $ref: '#/components/schemas/Earnings'
        employer:
          $ref: '#/components/schemas/PaystubEmployer'
        employee:
          $ref: '#/components/schemas/Employee'
        employment_details:
          $ref: '#/components/schemas/EmploymentDetails'
        net_pay:
          $ref: '#/components/schemas/NetPay'
        pay_period_details:
          $ref: '#/components/schemas/PayPeriodDetails'
        paystub_details:
          $ref: '#/components/schemas/PaystubDetails'
        income_breakdown:
          type: array
          description: Income information
          items:
            $ref: '#/components/schemas/IncomeBreakdown'
        ytd_earnings:
          $ref: '#/components/schemas/PaystubYTDDetails'
      required:
      - employer
      - employee
      - pay_period_details
      - income_breakdown
      - ytd_earnings
    Deductions:
      title: Deductions
      type: object
      description: An object with the deduction information found on a paystub.
      additionalProperties: true
      properties:
        subtotals:
          type: array
          description: An array of objects representing both the current pay period and year to date amount for a category.
          items:
            $ref: '#/components/schemas/Total'
        totals:
          type: array
          description: An array of objects representing both the current pay period and year to date amount for a category.
          items:
            $ref: '#/components/schemas/Total'
    Total:
      title: Total
      type: object
      description: An object representing both the current pay period and year to date amount for a category.
      additionalProperties: true
      properties:
        canonical_description:
          type: string
          nullable: true
          description: Commonly used term to describe the line item.
          enum:
          - Bonus
          - Commission
          - Overtime
          - Paid Time Off
          - Regular Pay
          - Vacation
          - Employee Medicare
          - FICA
          - Social Security Employee Tax
          - Medical
          - Vision
          - Dental
        description:
          type: string
          description: Text of the line item as printed on the paystub.
          nullable: true
        current_pay:
          $ref: '#/components/schemas/Pay'
        ytd_pay:
          $ref: '#/components/schemas/Pay'
    Pay:
      title: Pay
      type: object
      description: An object representing a monetary amount.
      additionalProperties: true
      properties:
        amount:
          type: number
          description: A numerical amount of a specific currency.
          nullable: true
        currency:
          type: string
          description: Currency code, e.g. USD
          nullable: true
          minLength: 3
          maxLength: 3
    Earnings:
      title: Earnings
      type: object
      description: An object representing both a breakdown of earnings on a paystub and the total earnings.
      additionalProperties: true
      properties:
        subtotals:
          type: array
          description: An array of objects representing both the current pay period and year to date amount for an earning category.
          items:
            $ref: '#/components/schemas/EarningsTotal'
        totals:
          type: array
          description: An array of objects representing both the current pay period and year to date amount for an earning category.
          items:
            $ref: '#/components/schemas/EarningsTotal'
    EarningsTotal:
      title: EarningsTotal
      type: object
      description: An object representing both the current pay period and year to date amount for an earning category.
      additionalProperties: true
      properties:
        canonical_description:
          type: string
          description: Commonly used term to describe the line item.
          enum:
          - Bonus
          - Commission
          - Overtime
          - Paid Time Off
          - Regular Pay
          - Vacation
          - Employee Medicare
          - FICA
          - Social Security Employee Tax
          - Medical
          - Vision
          - Dental
          nullable: true
        description:
          type: string
          description: Text of the line item as printed on the paystub.
          nullable: true
        current_pay:
          $ref: '#/components/schemas/Pay'
        ytd_pay:
          $ref: '#/components/schemas/Pay'
        current_hours:
          description: The hours of work
          type: string
          nullable: true
        current_rate:
          description: Current rate of work
          type: string
          nullable: true
    EmploymentDetails:
      title: EmploymentDetails
      type: object
      description: An object representing employment details found on a paystub.
      additionalProperties: true
      properties:
        annual_salary:
          $ref: '#/components/schemas/Pay'
        hire_date:
          type: string
          format: date
          description: Date on which the employee was hired, in the YYYY-MM-DD format.
          nullable: true
    NetPay:
      title: NetPay
      type: object
      description: An object representing information about the net pay amount on the paystub.
      additionalProperties: true
      properties:
        distribution_details:
          type: array
          description: An array of objects representing information about a distribution from the paycheck (for example, the amount distributed to a specific checking account, or to a retirement plan).
          items:
            $ref: '#/components/schemas/DistributionDetails'
        total:
          $ref: '#/components/schemas/Total'
    DistributionDetails:
      title: DistributionDetails
      type: object
      description: An object representing information about a distribution from the paycheck (for example, the amount distributed to a specific checking account, or to a retirement plan).
      additionalProperties: true
      properties:
        account_number:
          type: string
          description: The account number of the account being deposited to.
          nullable: true
        bank_account_type:
          type: string
          description: The type of bank account (e.g. Checking or Savings)
          nullable: true
        bank_name:
          type: string
          description: The name of the bank that the payment is being deposited to.
          nullable: true
        current_pay:
          $ref: '#/components/schemas/Pay'
        description:
          type: string
          description: A description of the distribution type.
          nullable: true
    PaystubDetails:
      title: PaystubDetails
      type: object
      description: An object representing details that can be found on the paystub.
      additionalProperties: true
      properties:
        pay_period_start_date:
          type: string
          format: date
          description: Beginning date of the pay period on the paystub in the 'YYYY-MM-DD' format.
          nullable: true
        pay_period_end_date:
          type: string
          format: date
          description: Ending date of the pay period on the paystub in the 'YYYY-MM-DD' format.
          nullable: true
        pay_date:
          type: string
          format: date
          description: Pay date on the paystub in the 'YYYY-MM-DD' format.
          nullable: true
        paystub_provider:
          type: string
          description: The name of the payroll provider that generated the paystub, e.g. ADP
          nullable: true
        pay_frequency:
          type: string
          description: 'The frequency at which the employee is paid. Possible values: `MONTHLY`, `BI-WEEKLY`, `WEEKLY`, `SEMI-MONTHLY`.'
          enum:
          - MONTHLY
          - BI-WEEKLY
          - WEEKLY
          - SEMI-MONTHLY
          nullable: true
    IncomeBreakdown:
      title: IncomeBreakdown
      type: object
      description: An object representing a breakdown of the different income types on the paystub.
      additionalProperties: true
      properties:
        type:
          type: string
          description: |-
            The type of income. Possible values include:
              `"regular"`: regular income
              `"overtime"`: overtime income
               `"bonus"`: bonus income
          enum:
          - bonus
          - overtime
          - regular
          - null
          nullable: true
        rate:
          type: number
          description: The hourly rate at which the income is paid.
          nullable: true
        hours:
          type: number
          description: The number of hours logged for this income for this pay period.
          nullable: true
        total:
          type: number
          description: The total pay for this pay period.
          nullable: true
      required:
      - type
      - rate
      - hours
      - total
    Employee:
      title: Employee
      type: object
      additionalProperties: true
      description: Data about the employee.
      properties:
        name:
          type: string
          description: The name of the employee.
          nullable: true
        address:
          $ref: '#/components/schemas/PaystubAddress'
        marital_status:
          type: string
          description: Marital status of the employee.
          nullable: true
        taxpayer_id:
          $ref: '#/components/schemas/TaxpayerID'
      required:
      - name
      - address
    TaxpayerID:
      title: TaxpayerID
      type: object
      description: The taxpayer ID
      additionalProperties: true
      properties:
        id_type:
          type: string
          description: Type of ID, e.g. 'SSN'
          nullable: true
        last_4_digits:
          type: string
          description: Last 4 digits of unique number of ID.
          minLength: 4
          maxLength: 4
          nullable: true
    PaystubEmployer:
      title: Employer
      type: object
      description: The information about the employer on the paystub.
      additionalProperties: true
      properties:
        name:
          type: string
          description: The name of the employer on the paystub.
          nullable: true
        address:
          $ref: '#/components/schemas/PaystubAddress'
      required:
      - name
    PaystubAddress:
      title: Address
      type: object
      description: Add adress of the employer on the paystub.
      additionalProperties: true
      properties:
        city:
          type: string
          description: The full city name.
          nullable: true
        street:
          type: string
          description: The listed street address.
          nullable: true
        line1:
          type: string
          description: Street address line 1.
          nullable: true
        line2:
          type: string
          description: Street address line 2.
          nullable: true
        postal_code:
          type: string
          description: 5 digit postal code.
          nullable: true
        region:
          type: string
          description: |-
            The region or state
            Example: `"NC"`
          nullable: true
        state_code:
          type: string
          description: |-
            The region or state
            Example: `"NC"`
          nullable: true
        country:
          type: string
          description: The country of the address.
          nullable: true
    PayPeriodDetails:
      title: PayPeriodDetails
      type: object
      additionalProperties: true
      description: Details about the pay period.
      properties:
        start_date:
          type: string
          format: date
          description: 'The pay period start date, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format: "yyyy-mm-dd".'
          nullable: true
        end_date:
          type: string
          format: date
          description: 'The pay period end date, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format: "yyyy-mm-dd".'
          nullable: true
        pay_day:
          type: string
          format: date
          description: The date on which the paystub was issued, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ("yyyy-mm-dd").
          nullable: true
        gross_earnings:
          type: number
          description: Total earnings before tax.
          nullable: true
        check_amount:
          type: number
          description: The net amount of the paycheck.
          nullable: true
      required:
      - start_date
      - end_date
      - pay_day
      - gross_earnings
      - check_amount
    PaystubDeduction:
      title: PaystubDeduction
      type: object
      additionalProperties: true
      properties:
        type:
          type: string
          description: 'The description of the deduction, as provided on the paystub. For example: `"401(k)"`, `"FICA MED TAX"`.'
          nullable: true
        is_pretax:
          type: boolean
          description: '`true` if the deduction is pre-tax; `false` otherwise.'
          nullable: true
        total:
          type: number
          description: The amount of the deduction.
          nullable: true
      required:
      - type
      - is_pretax
      - total
    PaystubYTDDetails:
      title: PaystubYTDDetails
      type: object
      additionalProperties: true
      properties:
        gross_earnings:
          type: number
          description: Year-to-date gross earnings.
          nullable: true
        net_earnings:
          type: number
          description: Year-to-date net (take home) earnings.
          nullable: true
      description: The amount of income earned year to date, as based on paystub data.
    IncomeVerificationDocumentsDownloadRequest:
      title: IncomeVerificationDocumentsDownloadRequest
      type: object
      description: IncomeVerificationDocumentsDownloadRequest defines the request schema for `/income/verification/documents/download`.
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        income_verification_id:
          type: string
          nullable: true
          deprecated: true
          description: The ID of the verification.
        access_token:
          $ref: '#/components/schemas/AccessTokenNullable'
    IncomeVerificationDocumentsDownloadResponse:
      title: IncomeVerificationDocumentsDownloadResponse
      type: object
      additionalProperties: true
      properties:
        id:
          type: string
          description: ID for indocme verification document download
      description: IncomeVerificationDocumentsDownloadResponse defines the response schema for `/income/verification/documents/download`.
      required:
      - id
    IncomeVerificationTaxformsGetRequest:
      title: IncomeVerificationTaxformsGetRequest
      type: object
      description: IncomeVerificationTaxformsGetRequest defines the request schema for `/income/verification/taxforms/get`
      additionalProperties: true
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        income_verification_id:
          type: string
          description: The ID of the verification.
          nullable: true
          deprecated: true
        access_token:
          $ref: '#/components/schemas/AccessTokenNullable'
    IncomeVerificationTaxformsGetResponse:
      title: IncomeVerificationTaxformsGetResponse
      type: object
      description: IncomeVerificationTaxformsGetResponse defines the response schema for `/income/verification/taxforms/get`
      properties:
        request_id:
          $ref: '#/components/schemas/RequestID'
        taxforms:
          type: array
          description: A list of taxforms.
          items:
            $ref: '#/components/schemas/Taxform'
        document_metadata:
          type: array
          description: An array of objects representing metadata from the end user's uploaded document.
          items:
            $ref: '#/components/schemas/DocumentMetadata'
        error:
          $ref: '#/components/schemas/Error'
      required:
      - taxforms
      - document_metadata
    Taxform:
      title: Taxform
      type: object
      additionalProperties: true
      properties:
        document_type:
          type: string
          description: The type of tax document.
        w2:
          $ref: '#/components/schemas/W2'
      required:
      - document_type
    W2:
      title: W2
      type: object
      additionalProperties: true
      description: W2 is an object that represents income data taken from a W2 tax document.
      properties:
        employer:
          $ref: '#/components/schemas/PaystubEmployer'
        employee:
          $ref: '#/components/schemas/Employee'
        tax_year:
          type: string
          description: The tax year of the W2 document.
          nullable: true
        employer_id_number:
          type: string
          description: An employee identification number or EIN.
          nullable: true
        wages_tips_other_comp:
          type: string
          description: Wages from tips and other compensation.
          nullable: true
        federal_income_tax_withheld:
          type: string
          description: Federal income tax withheld for the tax year.
          nullable: true
        social_security_wages:
          type: string
          description: Wages from social security.
          nullable: true
        social_security_tax_withheld:
          type: string
          description: Social security tax withheld for the tax year.
          nullable: true
        medicare_wages_and_tips:
          type: string
          description: Wages and tips from medicare.
          nullable: true
        medicare_tax_withheld:
          type: string
          description: Medicare tax withheld for the tax year.
          nullable: true
        social_security_tips:
          type: string
          description: Tips from social security.
          nullable: true
        allocated_tips:
          type: string
          description: Allocated tips.
          nullable: true
        box_9:
          type: string
          description: Contents from box 9 on the W2.
          nullable: true
        dependent_care_benefits:
          type: string
          description: Dependent care benefits.
          nullable: true
        nonqualified_plans:
          type: string
          description: Nonqualified plans.
          nullable: true
        box_12:
          type: array
          description: Contents from box 12 on the W2.
          items:
            $ref: '#/components/schemas/W2Box12'
        statutory_employee:
          type: string
          description: Statutory employee.
          nullable: true
        retirement_plan:
          type: string
          description: Retirement plan.
          nullable: true
        third_party_sick_pay:
          type: string
          description: Third party sick pay.
          nullable: true
        other:
          type: string
          description: Other.
          nullable: true
        state_and_local_wages:
          type: array
          description: State and local wages
          items:
            $ref: '#/components/schemas/W2StateAndLocalWages'
    W2Box12:
      title: W2Box12
      type: object
      additionalProperties: true
      properties:
        code:
          type: string
          description: W2 Box 12 code.
          nullable: true
        amount:
          type: string
          description: W2 Box 12 amount.
          nullable: true
    W2StateAndLocalWages:
      title: W2StateAndLocalWages
      type: object
      additionalProperties: true
      properties:
        state:
          type: string
          description: State associated with the wage.
          nullable: true
        employer_state_id_number:
          type: string
          description: State identification number of the employer.
          nullable: true
        state_wages_tips:
          type: string
          description: Wages and tips from the specified state.
          nullable: true
        state_income_tax:
          type: string
          description: Income tax from the specified state.
          nullable: true
        local_wages_tips:
          type: string
          description: Wages and tips from the locality.
          nullable: true
        local_income_tax:
          type: string
          description: Income tax from the locality.
          nullable: true
        locality_name:
          type: string
          description: Name of the locality.
          nullable: true
    IncomeVerificationWebhookStatus:
      title: IncomeVerificationWebhookStatus
      type: object
      additionalProperties: true
      properties:
        id:
          type: string
      required:
      - id
    AssetReportTransaction:
      title: AssetReportTransaction
      description: The date on which the transaction took place, in IS0 8601 format.
      allOf:
      - $ref: '#/components/schemas/TransactionBase'
      - type: object
        additionalProperties: true
        properties:
          date_transacted:
            type: string
            nullable: true
        required:
        - original_description
    HealthIncident:
      title: HealthIncident
      type: object
      additionalProperties: true
      properties:
        start_date:
          type: string
          format: date-time
          description: The start date of the incident, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `"2020-10-30T15:26:48Z"`.
        end_date:
          type: string
          format: date-time
          description: The end date of the incident, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `"2020-10-30T15:26:48Z"`.
        title:
          type: string
          description: The title of the incident
        incident_updates:
          type: array
          description: Updates on the health incident.
          items:
            $ref: '#/components/schemas/IncidentUpdate'
      required:
      - start_date
      - title
      - incident_updates
    IncidentUpdate:
      title: IncidentUpdate
      type: object
      additionalProperties: true
      properties:
        description:
          type: string
          description: The content of the update.
        status:
          type: string
          description: The status of the incident.
          enum:
          - INVESTIGATING
          - IDENTIFIED
          - SCHEDULED
          - RESOLVED
          - UNKNOWN
        updated_date:
          type: string
          format: date-time
          description: The date when the update was published, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `"2020-10-30T15:26:48Z"`.
    DepositSwitchAltCreateRequest:
      title: DepositSwitchAltCreateRequest
      type: object
      description: DepositSwitchAltCreateRequest defines the request schema for `/deposit_switch/alt/create`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        target_account:
          $ref: '#/components/schemas/DepositSwitchTargetAccount'
        target_user:
          $ref: '#/components/schemas/DepositSwitchTargetUser'
        options:
          $ref: '#/components/schemas/DepositSwitchCreateRequestOptions'
        country_code:
          type: string
          title: CountryCode
          enum:
          - US
          - CA
          description: ISO-3166-1 alpha-2 country code standard.
          nullable: true
      required:
      - target_account
      - target_user
    DepositSwitchAltCreateResponse:
      title: DepositSwitchAltCreateResponse
      type: object
      additionalProperties: true
      properties:
        deposit_switch_id:
          type: string
          description: ID of the deposit switch. This ID is persisted throughout the lifetime of the deposit switch.
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - deposit_switch_id
      - request_id
      description: DepositSwitchAltCreateResponse defines the response schema for `/deposit_switch/alt/create`
    DepositSwitchTargetAccount:
      title: DepositSwitchTargetAccount
      type: object
      additionalProperties: true
      description: The deposit switch destination account information
      properties:
        account_number:
          type: string
          description: Account number for deposit switch destination
        routing_number:
          type: string
          description: Routing number for deposit switch destination
        account_name:
          type: string
          description: The name of the deposit switch destination account, as it will be displayed to the end user in the Deposit Switch interface. It is not required to match the name used in online banking.
        account_subtype:
          type: string
          description: The account subtype of the account, either `checking` or `savings`.
          enum:
          - checking
          - savings
      required:
      - account_number
      - routing_number
      - account_name
      - account_subtype
    DepositSwitchTargetUser:
      title: DepositSwitchTargetUser
      type: object
      additionalProperties: true
      description: The deposit switch destination user information
      properties:
        given_name:
          type: string
          description: The given name (first name) of the user.
        family_name:
          type: string
          description: The family name (last name) of the user.
        phone:
          type: string
          description: The phone number of the user. The endpoint can accept a variety of phone number formats, including E.164.
        email:
          type: string
          description: The email address of the user.
        address:
          $ref: '#/components/schemas/DepositSwitchAddressData'
        tax_payer_id:
          type: string
          description: The taxpayer ID of the user, generally their SSN, EIN, or TIN.
      required:
      - given_name
      - family_name
      - phone
      - email
    DepositSwitchAddressData:
      title: DepositSwitchAddressData
      type: object
      additionalProperties: true
      description: The user's address.
      properties:
        city:
          type: string
          description: The full city name
        region:
          type: string
          description: |-
            The region or state
            Example: `"NC"`
        street:
          type: string
          description: |-
            The full street address
            Example: `"564 Main Street, APT 15"`
        postal_code:
          type: string
          description: The postal code
        country:
          type: string
          description: The ISO 3166-1 alpha-2 country code
      required:
      - street
      - city
      - region
      - postal_code
      - country
    SandboxBankTransferFireWebhookRequest:
      title: SandboxBankTransferFireWebhookRequest
      type: object
      description: Defines the request schema for `/sandbox/bank_transfer/fire_webhook`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        webhook:
          type: string
          description: The URL to which the webhook should be sent.
      required:
      - webhook
    SandboxBankTransferFireWebhookResponse:
      title: SandboxBankTransferFireWebhookResponse
      type: object
      description: Defines the response schema for `/sandbox/bank_transfer/fire_webhook`
      properties:
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - request_id
    ApplicationID:
      title: ApplicationID
      type: string
      description: This field will map to the application ID that is returned from /item/applications/list, or provided to the institution in an oauth redirect.
    Application:
      type: object
      description: Metadata about the application
      properties:
        application_id:
          $ref: '#/components/schemas/ApplicationID'
        name:
          type: string
          description: The name of the application
        created_at:
          type: string
          format: date
          description: The date this application was linked in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format in UTC.
        logo_url:
          nullable: true
          type: string
          description: A URL that links to the application logo image.
        application_url:
          nullable: true
          type: string
          description: The URL for the application's website
        reason_for_access:
          nullable: true
          type: string
          description: A string provided by the connected app stating why they use their respective enabled products.
      required:
      - application_id
      - created_at
      - name
      - logo_url
      - application_url
      - reason_for_access
    ApplicationGetRequest:
      description: ApplicationGetResponse defines the schema for `/application/get`
      type: object
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        application_id:
          $ref: '#/components/schemas/ApplicationID'
      required:
      - client_id
      - secret
      - application_id
    ApplicationGetResponse:
      description: The request ID associated with this call.
      type: object
      properties:
        request_id:
          $ref: '#/components/schemas/RequestID'
        application:
          $ref: '#/components/schemas/Application'
      required:
      - request_id
      - application
    ProductAccess:
      description: The product access being requested. Used to or disallow product access across all accounts. If unset, defaults to all products allowed.
      type: object
      additionalProperties: true
      properties:
        statements:
          description: Allow access to statements. If unset, defaults to `true`.
          type: boolean
          nullable: true
          default: true
        identity:
          description: Allow access to the Identity product (name, email, phone, address). If unset, defaults to `true`.
          type: boolean
          nullable: true
          default: true
        auth:
          description: Allow access to account number details. If unset, defaults to `true`.
          type: boolean
          nullable: true
          default: true
        transactions:
          description: Allow access to transaction details. If unset, defaults to `true`.
          type: boolean
          nullable: true
          default: true
    AccountAccess:
      description: Allow or disallow product access by account. Unlisted (e.g. missing) accounts will be considered `new_accounts`.
      type: object
      properties:
        unique_id:
          description: The unique account identifier for this account. This value must match that returned by the data access API for this account.
          type: string
        authorized:
          description: Allow the application to see this account (and associated details, including balance) in the list of accounts. If unset, defaults to `true`.
          type: boolean
          nullable: true
          default: true
      required:
      - unique_id
    ScopesNullable:
      description: The scopes object
      nullable: true
      allOf:
      - $ref: '#/components/schemas/Scopes'
      - type: object
        additionalProperties: true
    Scopes:
      description: The scopes object
      type: object
      properties:
        product_access:
          $ref: '#/components/schemas/ProductAccess'
        accounts:
          type: array
          description: Allow or disallow product access by account. Unlisted (e.g. missing) accounts will be considered `new_accounts`
          items:
            $ref: '#/components/schemas/AccountAccess'
        new_accounts:
          description: Allow access to newly opened accounts as they are opened. If unset, defaults to `true`.
          type: boolean
          nullable: true
          default: true
    RequestedScopes:
      type: object
      description: Scope of required and optional account features or content from a ConnectedApplication.
      properties:
        required_product_access:
          $ref: '#/components/schemas/ProductAccess'
        optional_product_access:
          $ref: '#/components/schemas/ProductAccess'
        account_filters:
          $ref: '#/components/schemas/AccountFilter'
        account_selection_cardinality:
          $ref: '#/components/schemas/AccountSelectionCardinality'
      required:
      - required_product_access
      - optional_product_access
      - account_selection_cardinality
    ScopesState:
      description: When scopes are updated during enrollment, this field must be populated with the state sent to the partner in the OAuth Login URI. This field is required when the context is `ENROLLMENT`.
      type: string
    ScopesContext:
      description: An indicator for when scopes are being updated. When scopes are updated via enrollment (i.e. OAuth), the partner must send `ENROLLMENT`. When scopes are updated in a post-enrollment view, the partner must send `PORTAL`.
      type: string
      enum:
      - ENROLLMENT
      - PORTAL
    ItemApplicationScopesUpdateRequest:
      description: ItemApplicationScopesUpdateRequest defines the request schema for `/item/application/scopes/update`
      type: object
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        access_token:
          $ref: '#/components/schemas/AccessToken'
        application_id:
          $ref: '#/components/schemas/ApplicationID'
        scopes:
          $ref: '#/components/schemas/Scopes'
        state:
          $ref: '#/components/schemas/ScopesState'
        context:
          $ref: '#/components/schemas/ScopesContext'
      required:
      - application_id
      - access_token
      - scopes
      - context
    ItemApplicationScopesUpdateResponse:
      description: ItemApplicationScopesUpdateResponse defines the response schema for `/item/application/scopes/update`
      type: object
      properties:
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - request_id
    ItemApplicationListRequest:
      description: Request to list connected applications for a user.
      type: object
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        access_token:
          $ref: '#/components/schemas/AccessTokenNullable'
    ItemApplicationListResponse:
      description: Describes the connected application for a particular end user.
      type: object
      properties:
        request_id:
          $ref: '#/components/schemas/RequestID'
        applications:
          type: array
          description: A list of connected applications.
          items:
            $ref: '#/components/schemas/ConnectedApplication'
      required:
      - applications
    ConnectedApplication:
      description: Describes the connected application for a particular end user.
      type: object
      properties:
        application_id:
          $ref: '#/components/schemas/ApplicationID'
        name:
          type: string
          description: The name of the application
        logo:
          nullable: true
          type: string
          description: A URL that links to the application logo image (will be deprecated in the future, please use logo_url).
          deprecated: true
        logo_url:
          nullable: true
          type: string
          description: A URL that links to the application logo image.
        application_url:
          nullable: true
          type: string
          description: The URL for the application's website
        reason_for_access:
          nullable: true
          type: string
          description: A string provided by the connected app stating why they use their respective enabled products.
        created_at:
          type: string
          format: date
          description: The date this application was linked in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format in UTC.
          example: "2020-01-01"
        product_data_types:
          type: array
          description: (Deprecated) A list of enums representing the data collected and products enabled for this connected application.
          items:
            type: string
            enum:
            - ACCOUNT_BALANCE
            - ACCOUNT_USER_INFO
            - ACCOUNT_TRANSACTIONS
        scopes:
          $ref: '#/components/schemas/ScopesNullable'
        requested_scopes:
          $ref: '#/components/schemas/RequestedScopes'
      required:
      - application_id
      - name
      - created_at
      - logo
      - logo_url
      - application_url
      - reason_for_access
      - product_data_types
    AccountSelectionCardinality:
      type: string
      description: |-
        The application requires that accounts be limited to a specific cardinality.
        `MULTI_SELECT`: indicates that the user should be allowed to pick multiple accounts.
        `SINGLE_SELECT`: indicates that the user should be allowed to pick only a single account.
        `ALL`: indicates that the user must share all of their accounts and should not be given the opportunity to de-select
      enum:
      - SINGLE_SELECT
      - MULTI_SELECT
      - ALL
    AccountFilter:
      type: object
      description: Enumerates the account subtypes that the application wishes for the user to be able to select from. For more details refer to Plaid documentation on account filters.
      properties:
        depository:
          $ref: '#/components/schemas/AccountFilterSubtypes'
        credit:
          $ref: '#/components/schemas/AccountFilterSubtypes'
        loan:
          $ref: '#/components/schemas/AccountFilterSubtypes'
        investment:
          $ref: '#/components/schemas/AccountFilterSubtypes'
    AccountFilterSubtypes:
      type: array
      description: A list of account subtypes to be filtered.
      items:
        type: string
        description: List of account subtypes.
    SandboxIncomeFireWebhookRequest:
      title: SandboxIncomeFireWebhookRequest
      type: object
      description: SandboxIncomeFireWebhookRequest defines the request schema for `/sandbox/income/fire_webhook`
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        income_verification_id:
          type: string
          description: The ID of the verification.
        webhook:
          type: string
          description: The URL to which the webhook should be sent.
        verification_status:
          type: string
          enum:
          - VERIFICATION_STATUS_PROCESSING_COMPLETE
          - VERIFICATION_STATUS_DOCUMENT_REJECTED
          - VERIFICATION_STATUS_PROCESSING_FAILED
          description: |-
            `VERIFICATION_STATUS_PROCESSING_COMPLETE`: The income verification status processing has completed.

            `VERIFICATION_STATUS_DOCUMENT_REJECTED`: The documentation uploaded by the end user was recognized as a supported file format, but not recognized as a valid paystub.

            `VERIFICATION_STATUS_PROCESSING_FAILED`: A failure occurred when attempting to process the verification documentation.
      required:
      - income_verification_id
      - webhook
      - verification_status
    SandboxIncomeFireWebhookResponse:
      title: SandboxIncomeFireWebhookResponse
      type: object
      description: SandboxIncomeFireWebhookResponse defines the response schema for `/sandbox/income/fire_webhook`
      properties:
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - request_id
    ItemApplicationListUserAuth:
      type: object
      nullable: true
      description: User authentication parameters, for clients making a request without an `access_token`. This is only allowed for select clients and will not be supported in the future. Most clients should call /item/import to obtain an access token before making a request.
      properties:
        user_id:
          nullable: true
          type: string
          description: Account username.
        fi_username_hash:
          nullable: true
          type: string
          description: Account username hashed by FI.
    SignalEvaluateRequest:
      title: SignalEvaluateRequest
      type: object
      additionalProperties: true
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        access_token:
          $ref: '#/components/schemas/AccessToken'
        account_id:
          type: string
          description: The `account_id` of the account whose verification status is to be modified
        client_transaction_id:
          type: string
          description: The unique ID that you would like to use to refer to this transaction. For your convenience mapping your internal data, you could use your internal ID/identifier for this transaction. The max length for this field is 36 characters.
          maxLength: 36
        amount:
          type: number
          description: The transaction amount, in USD (e.g. `102.05`)
        client_user_id:
          type: string
          description: A unique ID that identifies the end user in your system. This ID is used to correlate requests by a user with multiple Items. The max length for this field is 36 characters.
          maxLength: 36
        user:
          $ref: '#/components/schemas/SignalUser'
        device:
          $ref: '#/components/schemas/SignalDevice'
      required:
      - access_token
      - account_id
      - client_transaction_id
      - amount
    SignalUser:
      title: SignalUser
      type: object
      description: Details about the end user initiating the transaction (i.e., the account holder).
      properties:
        name:
          $ref: '#/components/schemas/SignalPersonName'
        phone_number:
          type: string
          description: 'The user''s phone number, in E.164 format: +{countrycode}{number}. For example: "+14151234567"'
          nullable: true
        email_address:
          type: string
          description: The user's email address.
          nullable: true
        address:
          $ref: '#/components/schemas/SignalAddressData'
    SignalPersonName:
      title: SignalPersonName
      type: object
      description: The user's legal name
      nullable: true
      properties:
        prefix:
          type: string
          description: The user's name prefix (e.g. "Mr.")
          nullable: true
        given_name:
          type: string
          description: The user's given name. If the user has a one-word name, it should be provided in this field.
          nullable: true
        middle_name:
          type: string
          description: The user's middle name
          nullable: true
        family_name:
          type: string
          description: The user's family name / surname
          nullable: true
        suffix:
          type: string
          description: The user's name suffix (e.g. "II")
          nullable: true
    SignalAddressData:
      title: AddressData
      type: object
      nullable: true
      additionalProperties: true
      description: Data about the components comprising an address.
      properties:
        city:
          type: string
          description: The full city name
        region:
          type: string
          description: |-
            The region or state
            Example: `"NC"`
          nullable: true
        street:
          type: string
          description: |-
            The full street address
            Example: `"564 Main Street, APT 15"`
        postal_code:
          type: string
          description: The postal code
          nullable: true
        country:
          type: string
          description: The ISO 3166-1 alpha-2 country code
          nullable: true
    SignalDevice:
      title: SignalEvaluateDevice
      type: object
      description: Details about the end user's device
      properties:
        ip_address:
          type: string
          description: The IP address of the device that initiated the transaction
          nullable: true
        user_agent:
          type: string
          description: The user agent of the device that initiated the transaction (e.g. "Mozilla/5.0")
          nullable: true
    SignalEvaluateResponse:
      title: SignalEvaluateResponse
      type: object
      additionalProperties: true
      properties:
        request_id:
          $ref: '#/components/schemas/RequestID'
        scores:
          $ref: '#/components/schemas/SignalScores'
        core_attributes:
          $ref: '#/components/schemas/SignalEvaluateCoreAttributes'
      required:
      - request_id
      - scores
      - core_attributes
    SignalScores:
      title: SignalEvaluateScores
      type: object
      additionalProperties: true
      properties:
        customer_initiated_return_risk:
          $ref: '#/components/schemas/CustomerInitiatedReturnRisk'
        bank_initiated_return_risk:
          $ref: '#/components/schemas/BankInitiatedReturnRisk'
    SignalScore:
      description: 'A score from 0-99 that indicates the transaction return risk: a higher risk score suggests a higher return likelihood.'
      type: integer
      minimum: 0
      maximum: 100
    CustomerInitiatedRiskTier:
      description: |
        A tier corresponding to the projected likelihood that the transaction, if initiated, will be subject to a return.

        In the `customer_initiated_return_risk` object, there are five risk tiers corresponding to the scores:
          1: Predicted customer-initiated return incidence rate between 0.00% - 0.02%
          2: Predicted customer-initiated return incidence rate between 0.02% - 0.05%
          3: Predicted customer-initiated return incidence rate between 0.05% - 0.1%
          4: Predicted customer-initiated return incidence rate between 0.1% - 0.5%
          5: Predicted customer-initiated return incidence rate greater than 0.5%
      type: integer
      minimum: 1
      maximum: 5
    CustomerInitiatedReturnRisk:
      title: CustomerInitiatedReturnRisk
      type: object
      description: 'The object contains a risk score and a risk tier that evaluate the transaction return risk of an unauthorized debit. Common return codes in this category include: “R05”, "R07", "R10", "R11", "R29". These returns typically have a return time frame of up to 60 calendar days. During this period, the customer of financial institutions can dispute a transaction as unauthorized.'
      properties:
        score:
          $ref: '#/components/schemas/SignalScore'
        risk_tier:
          $ref: '#/components/schemas/CustomerInitiatedRiskTier'
      required:
      - risk_tier
      - score
    BankInitiatedRiskTier:
      description: |
        In the `bank_initiated_return_risk` object, there are eight risk tiers corresponding to the scores:
          1: Predicted bank-initiated return incidence rate between 0.0% - 0.5%
          2: Predicted bank-initiated return incidence rate between 0.5% - 1.5%
          3: Predicted bank-initiated return incidence rate between 1.5% - 3%
          4: Predicted bank-initiated return incidence rate between 3% - 5%
          5: Predicted bank-initiated return incidence rate between 5% - 10%
          6: Predicted bank-initiated return incidence rate between 10% - 15%
          7: Predicted bank-initiated return incidence rate between 15% and 50%
          8: Predicted bank-initiated return incidence rate greater than 50%
      type: integer
      minimum: 1
      maximum: 8
    BankInitiatedReturnRisk:
      title: BankInitiatedReturnRisk
      type: object
      description: 'The object contains a risk score and a risk tier that evaluate the transaction return risk because an account is overdrawn or because an ineligible account is used. Common return codes in this category include: "R01", "R02", "R03", "R04", "R06", “R08”,  "R09", "R13", "R16", "R17", "R20", "R23". These returns have a turnaround time of 2 banking days.'
      properties:
        score:
          $ref: '#/components/schemas/SignalScore'
        risk_tier:
          $ref: '#/components/schemas/BankInitiatedRiskTier'
      required:
      - risk_tier
      - score
    SignalEvaluateCoreAttributes:
      title: SignalEvaluateCoreAttributes
      type: object
      description: The core attributes object contains additional data that can be used to assess the ACH return risk, such as past ACH return events, balance/transaction history, the Item’s connection history in the Plaid network, and identity change history.
      properties:
        unauthorized_transactions_count_7d:
          type: integer
          description: We parse and analyze historical transaction metadata to identify the number of possible past returns due to unauthorized transactions over the past 7 days from the account that will be debited.
        unauthorized_transactions_count_30d:
          type: integer
          description: We parse and analyze historical transaction metadata to identify the number of possible past returns due to unauthorized transactions over the past 30 days from the account that will be debited.
        unauthorized_transactions_count_60d:
          type: integer
          description: We parse and analyze historical transaction metadata to identify the number of possible past returns due to unauthorized transactions over the past 60 days from the account that will be debited.
        unauthorized_transactions_count_90d:
          type: integer
          description: We parse and analyze historical transaction metadata to identify the number of possible past returns due to unauthorized transactions over the past 90 days from the account that will be debited.
        nsf_overdraft_transactions_count_7d:
          type: integer
          description: We parse and analyze historical transaction metadata to identify the number of possible past returns due to non-sufficient funds/overdrafts over the past 7 days from the account that will be debited.
        nsf_overdraft_transactions_count_30d:
          type: integer
          description: We parse and analyze historical transaction metadata to identify the number of possible past returns due to non-sufficient funds/overdrafts over the past 30 days from the account that will be debited.
        nsf_overdraft_transactions_count_60d:
          type: integer
          description: We parse and analyze historical transaction metadata to identify the number of possible past returns due to non-sufficient funds/overdrafts over the past 60 days from the account that will be debited.
        nsf_overdraft_transactions_count_90d:
          type: integer
          description: We parse and analyze historical transaction metadata to identify the number of possible past returns due to non-sufficient funds/overdrafts over the past 90 days from the account that will be debited.
        days_since_first_plaid_connection:
          type: integer
          description: The number of days since the first time the Item was connected to an application via Plaid
          nullable: true
        plaid_connections_count_7d:
          type: integer
          description: The number of times the Item has been connected to applications via Plaid over the past 7 days
          nullable: true
        plaid_connections_count_30d:
          type: integer
          description: The number of times the Item has been connected to applications via Plaid over the past 30 days
          nullable: true
        total_plaid_connections_count:
          type: integer
          description: The total number of times the Item has been connected to applications via Plaid
          nullable: true
        is_savings_or_money_market_account:
          type: boolean
          description: Indicates if the ACH transaction funding account is a savings/money market account
        total_credit_transactions_amount_10d:
          type: number
          description: The total credit (inflow) transaction amount over the past 10 days from the account that will be debited
        total_debit_transactions_amount_10d:
          type: number
          description: The total debit (outflow) transaction amount over the past 10 days from the account that will be debited
        p50_credit_transactions_amount_28d:
          type: number
          description: The 50th percentile of all credit (inflow) transaction amounts over the past 28 days from the account that will be debited
          nullable: true
        p50_debit_transactions_amount_28d:
          type: number
          description: The 50th percentile of all debit (outflow) transaction amounts over the past 28 days from the account that will be debited
          nullable: true
        p95_credit_transactions_amount_28d:
          type: number
          description: The 95th percentile of all credit (inflow) transaction amounts over the past 28 days from the account that will be debited
          nullable: true
        p95_debit_transactions_amount_28d:
          type: number
          description: The 95th percentile of all debit (outflow) transaction amounts over the past 28 days from the account that will be debited
          nullable: true
        days_with_negative_balance_count_90d:
          type: integer
          description: The number of days within the past 90 days when the account that will be debited had a negative end-of-day available balance
          nullable: true
        p90_eod_balance_30d:
          type: number
          description: The 90th percentile of the end-of-day available balance over the past 30 days of the account that will be debited
          nullable: true
        p90_eod_balance_60d:
          type: number
          description: The 90th percentile of the end-of-day available balance over the past 60 days of the account that will be debited
          nullable: true
        p90_eod_balance_90d:
          type: number
          description: The 90th percentile of the end-of-day available balance over the past 90 days of the account that will be debited
          nullable: true
        p10_eod_balance_30d:
          type: number
          description: The 10th percentile of the end-of-day available balance over the past 30 days of the account that will be debited
          nullable: true
        p10_eod_balance_60d:
          type: number
          description: The 10th percentile of the end-of-day available balance over the past 60 days of the account that will be debited
          nullable: true
        p10_eod_balance_90d:
          type: number
          description: The 10th percentile of the end-of-day available balance over the past 90 days of the account that will be debited
          nullable: true
        available_balance:
          type: number
          description: Available balance, as of the `balance_last_updated` time. The available balance is the current balance less any outstanding holds or debits that have not yet posted to the account.
          nullable: true
        current_balance:
          type: number
          description: Current balance, as of the `balance_last_updated` time. The current balance is the total amount of funds in the account.
          nullable: true
        balance_last_updated:
          type: string
          format: date-time
          description: Timestamp in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DDTHH:mm:ssZ) indicating the last time that the balance for the given account has been updated.
          nullable: true
        phone_change_count_28d:
          type: integer
          description: The number of times the account's phone numbers on file have changed over the past 28 days
          nullable: true
        phone_change_count_90d:
          type: integer
          description: The number of times the account's phone numbers on file have changed over the past 90 days
          nullable: true
        email_change_count_28d:
          type: integer
          description: The number of times the account's email addresses on file have changed over the past 28 days
          nullable: true
        email_change_count_90d:
          type: integer
          description: The number of times the account's email addresses on file have changed over the past 90 days
          nullable: true
        address_change_count_28d:
          type: integer
          description: The number of times the account's addresses on file have changed over the past 28 days
          nullable: true
        address_change_count_90d:
          type: integer
          description: The number of times the account's addresses on file have changed over the past 90 days
          nullable: true
    SignalDecisionReportRequest:
      title: SignalDecisionReportRequest
      type: object
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        client_transaction_id:
          type: string
          description: Must be the same as the `client_transaction_id` supplied when calling `/signal/evaluate`
        initiated:
          type: boolean
          description: '`true` if the ACH transaction was initiated, `false` otherwise.'
      required:
      - client_transaction_id
      - initiated
    SignalDecisionReportResponse:
      title: SignalDecisionReportResponse
      type: object
      properties:
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - request_id
    SignalReturnReportRequest:
      title: SignalReturnReportRequest
      type: object
      properties:
        client_id:
          $ref: '#/components/schemas/APIClientID'
        secret:
          $ref: '#/components/schemas/APISecret'
        client_transaction_id:
          type: string
          description: Must be the same as the `client_transaction_id` supplied when calling `/signal/evaluate`
        return_code:
          type: string
          description: Must be a valid ACH return code (e.g. "R01")
      required:
      - client_transaction_id
      - return_code
    SignalReturnReportResponse:
      title: SignalReturnReportResponse
      type: object
      properties:
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
      - request_id
    SandboxOauthSelectAccountsRequest:
      title: SandboxOauthSelectAccountsRequest
      type: object
      description: Defines the request schema for `sandbox/oauth/select_accounts`
      properties:
        oauth_state_id:
          type: string
          description: OAuth state ID
        accounts:
          type: array
          description: The account which needs to be selected
          items:
            type: string
      required:
      - oauth_state_id
      - accounts
    SandboxOauthSelectAccountsResponse:
      title: SandboxOauthSelectAccountsResponse
      type: object
      description: Defines the response schema for `/sandbox/oauth/select_accounts`
