Codat Source accounts API

Provide and manage lists of source bank accounts.

OpenAPI Specification

codat-source-accounts-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Bank Feeds Account mapping Source accounts API
  version: 3.0.0
  contact:
    email: support@codat.io
    name: Codat
  description: 'Bank Feeds solution enables your SMB users to set up bank feeds from accounts in your application to supported accounting software.


    A bank feed is a connection between a source bank account in your application and a target bank account in a supported accounting software.


    [Explore solution](https://docs.codat.io/bank-feeds-api/overview) | [See OpenAPI spec](https://github.com/codatio/oas)


    ---

    <!-- Start Codat Tags Table -->

    ## Endpoints


    | Endpoints | Description |

    | :- |:- |

    | Companies | Create and manage your SMB users'' companies. |

    | Connections | Create new and manage existing data connections for a company. |

    | Source accounts | Provide and manage lists of source bank accounts. |

    | Account mapping | Extra functionality for building an account management UI. |

    | Company information | Get detailed information about a company from the underlying platform. |

    | Transactions | Create new bank account transactions for a company''s connections, and see previous operations. |

    <!-- End Codat Tags Table -->'
  termsOfService: https://www.codat.io/legals/
servers:
- description: Production
  url: https://api.codat.io
security:
- auth_header: []
tags:
- name: Source accounts
  description: Provide and manage lists of source bank accounts.
paths:
  /companies/{companyId}/connections/{connectionId}/connectionInfo/bankFeedAccounts/batch:
    parameters:
    - $ref: '#/components/parameters/companyId'
    - $ref: '#/components/parameters/connectionId'
    post:
      tags:
      - Source accounts
      summary: Create source accounts
      description: 'The _Batch create source accounts_ endpoint allows you to create multiple representations of your SMB''s bank accounts within Codat''s domain. The company can then map the source account to an existing or new target account in their accounting software.


        > ### Versioning

        > If you are integrating the Bank Feeds solution with Codat after August 1, 2024, please use the v2 version of the API, as detailed in the schema below. For integrations completed before August 1, 2024, select the v1 version from the schema dropdown below.'
      operationId: create-batch-source-account
      x-speakeasy-name-override: create-batch
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
              - type: array
                items:
                  $ref: '#/components/schemas/SourceAccountV2/definitions/sourceAccountV2Prototype'
              - type: array
                items:
                  $ref: '#/components/schemas/SourceAccount/definitions/sourceAccountPrototype'
      responses:
        '201':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  oneOf:
                  - $ref: '#/components/schemas/SourceAccountV2BatchCreateResponse'
                  - $ref: '#/components/schemas/SourceAccountBatchCreateResponse'
        '207':
          description: Multi-Status
          content:
            application/json:
              schema:
                type: array
                items:
                  oneOf:
                  - $ref: '#/components/schemas/SourceAccountV2BatchCreateResponse'
                  - $ref: '#/components/schemas/SourceAccountBatchCreateResponse'
                  - $ref: '#/components/schemas/SourceAccountBatchErrorResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/Payment-Required'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/Not-Found'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: array
                items:
                  oneOf:
                  - $ref: '#/components/schemas/SourceAccountV2BatchCreateResponse'
                  - $ref: '#/components/schemas/SourceAccountBatchCreateResponse'
                  - $ref: '#/components/schemas/SourceAccountBatchErrorResponse'
        '429':
          $ref: '#/components/responses/Too-Many-Requests'
        '500':
          $ref: '#/components/responses/Internal-Server-Error'
        '503':
          $ref: '#/components/responses/Service-Unavailable'
  /companies/{companyId}/connections/{connectionId}/connectionInfo/bankFeedAccounts:
    parameters:
    - $ref: '#/components/parameters/companyId'
    - $ref: '#/components/parameters/connectionId'
    post:
      tags:
      - Source accounts
      summary: Create single source account
      description: 'The _Create Source Account_ endpoint allows you to create a representation of a bank account within Codat''s domain. The company can then map the source account to an existing or new target account in their accounting software.


        > ### Versioning

        > If you are integrating the Bank Feeds solution with Codat after August 1, 2024, please use the v2 version of the API, as detailed in the schema below. For integrations completed before August 1, 2024, select the v1 version from the schema dropdown below.'
      operationId: create-source-account
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/SourceAccountV2/definitions/sourceAccountV2Prototype'
              - $ref: '#/components/schemas/SourceAccount/definitions/sourceAccountPrototype'
            examples:
              Version 2:
                value:
                  id: acc-001
                  accountName: account-081
                  accountType: checking
                  accountNumber: '12345670'
                  routingInfo:
                    bankCode: 021001088
                    type: bankcode
                  currency: GBP
                  balance: 99.99
                  accountInfo:
                    description: account description 1
                    nickname: account 123
                    accountOpenDate: '2023-05-06'
                    availableBalance: 10
                  modifiedDate: '2024-08-02T00:00:00.000Z'
              Version 1:
                value:
                  id: acc-002
                  accountName: account-081
                  sortCode: '123456'
                  accountType: Credit
                  accountNumber: '12345670'
                  currency: GBP
                  balance: 99.99
                  modifiedDate: '2023-01-09T14:14:14.1057478Z'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/SourceAccountV2'
                - $ref: '#/components/schemas/SourceAccount'
              examples: {}
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/Payment-Required'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/Not-Found'
        '429':
          $ref: '#/components/responses/Too-Many-Requests'
        '500':
          $ref: '#/components/responses/Internal-Server-Error'
        '503':
          $ref: '#/components/responses/Service-Unavailable'
    get:
      tags:
      - Source accounts
      summary: List source accounts
      description: "\uFEFFThe _List source accounts_ endpoint returns a list of [source accounts](https://docs.codat.io/bank-feeds-api#/schemas/BankFeedAccount) for a given company's connection.\n\n[Source accounts](https://docs.codat.io/bank-feeds-api#/schemas/BankFeedAccount) are the bank's bank account within Codat's domain from which transactions are synced into the accounting platform.\n\n> ### Versioning\n> If you are integrating the Bank Feeds solution with Codat after August 1, 2024, please use the v2 version of the API, as detailed in the schema below. For integrations completed before August 1, 2024, select the v1 version from the schema dropdown below."
      operationId: list-source-accounts
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/SourceAccountV2/definitions/sourceAccounts'
                - $ref: '#/components/schemas/SourceAccount/definitions/sourceAccounts'
              examples: {}
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/Payment-Required'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/Not-Found'
        '429':
          $ref: '#/components/responses/Too-Many-Requests'
        '500':
          $ref: '#/components/responses/Internal-Server-Error'
        '503':
          $ref: '#/components/responses/Service-Unavailable'
  /companies/{companyId}/connections/{connectionId}/connectionInfo/bankFeedAccounts/{accountId}:
    patch:
      tags:
      - Source accounts
      summary: Update source account
      description: "\uFEFFThe _Update source account_ endpoint updates a single source account for a single data connection connected to a single company.\n\n### Tips and pitfalls\n\n* This endpoint makes it possible to update the `accountName`, `status`, and `balance` fields.\n    * The `status` field can only be updated to 'disconnected'.\n    * The `balance` field can only be updated on accounts that are **not** 'connected'.\n* Updates made here apply exclusively to source accounts and will not affect target accounts in the accounting software."
      operationId: update-source-account
      parameters:
      - $ref: '#/components/parameters/companyId'
      - $ref: '#/components/parameters/connectionId'
      - $ref: '#/components/parameters/accountId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SourceAccount'
            examples: {}
      responses:
        '200':
          description: Success
          content:
            application/json:
              x-speakeasy-usage-example: true
              schema:
                $ref: '#/components/schemas/SourceAccount'
              examples: {}
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/Payment-Required'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/Not-Found'
        '429':
          $ref: '#/components/responses/Too-Many-Requests'
        '500':
          $ref: '#/components/responses/Internal-Server-Error'
        '503':
          $ref: '#/components/responses/Service-Unavailable'
    delete:
      tags:
      - Source accounts
      summary: Delete source account
      description: 'The _Delete source account_ endpoint enables you to remove a source account.


        Removing a source account will also remove any mapping between the source bank feed bank accounts and the target bankfeed bank account.

        '
      operationId: delete-source-account
      parameters:
      - $ref: '#/components/parameters/companyId'
      - $ref: '#/components/parameters/connectionId'
      - $ref: '#/components/parameters/accountId'
      responses:
        '204':
          description: No Content
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/Payment-Required'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/Not-Found'
        '429':
          $ref: '#/components/responses/Too-Many-Requests'
        '500':
          $ref: '#/components/responses/Internal-Server-Error'
        '503':
          $ref: '#/components/responses/Service-Unavailable'
  /companies/{companyId}/connections/{connectionId}/connectionInfo/bankFeedAccounts/credentials:
    post:
      tags:
      - Source accounts
      summary: Generate source account credentials
      description: "\uFEFFThe _Generate bank account credentials_ endpoint can be used to generate credentials for QuickBooks Online to authenticate the Bank Feed in the QBO portal. Each time this endpoint is called, a new set of credentials will be generated.\n\nThe old credentials will still be valid until the revoke credentials endpoint is used, which will revoke all credentials associated to the data connection.\n\n> **For QuickBooks Online only**\n>\n> Only call this endpoint when onboarding SMBs that use  QuickBooks Online."
      operationId: generate-credentials
      parameters:
      - $ref: '#/components/parameters/companyId'
      - $ref: '#/components/parameters/connectionId'
      requestBody:
        required: true
        content:
          application/json: {}
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountCredentials'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/Payment-Required'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/Not-Found'
        '429':
          $ref: '#/components/responses/Too-Many-Requests'
        '500':
          $ref: '#/components/responses/Internal-Server-Error'
        '503':
          $ref: '#/components/responses/Service-Unavailable'
    delete:
      tags:
      - Source accounts
      summary: Delete all source account credentials
      x-speakeasy-name-override: delete-credentials
      description: 'The _Delete Bank Account Credentials_ endpoint serves as a comprehensive mechanism for revoking all existing authorization credentials that a company employs to establish its Bank Feed connection.


        In cases where multiple credential sets have been generated, a single API call to this endpoint revokes all of them.'
      operationId: delete-bank-feed-credentials
      parameters:
      - $ref: '#/components/parameters/companyId'
      - $ref: '#/components/parameters/connectionId'
      responses:
        '204':
          description: No Content
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/Payment-Required'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/Not-Found'
        '429':
          $ref: '#/components/responses/Too-Many-Requests'
        '500':
          $ref: '#/components/responses/Internal-Server-Error'
        '503':
          $ref: '#/components/responses/Service-Unavailable'
components:
  schemas:
    SourceAccountV2:
      title: Source account (v2)
      type: object
      description: The target bank account in a supported accounting software for ingestion into a bank feed.
      additionalProperties: false
      properties:
        id:
          type: string
          description: Unique ID for the bank account.
        accountName:
          type: string
          description: The bank account name.
        accountType:
          type: string
          description: The type of bank account e.g. checking, savings, loan, creditCard, prepaidCard.
          enum:
          - checking
          - savings
          - loan
          - creditCard
          - prepaidCard
        accountNumber:
          type: string
          description: The account number.
        sortCode:
          type: string
          nullable: true
          description: The sort code.
        routingInfo:
          $ref: '#/components/schemas/SourceAccountV2/definitions/routingInfo'
        currency:
          $ref: '#/components/schemas/SourceAccount/properties/currency'
        balance:
          type: number
          format: decimal
          description: The latest balance for the bank account.
        accountInfo:
          $ref: '#/components/schemas/SourceAccountV2/definitions/accountInfo'
        modifiedDate:
          $ref: '#/components/schemas/DateTime'
          nullable: true
          description: The last date the bank account was modified.
        status:
          type: string
          nullable: true
          description: Status of the source account.
          enum:
          - pending
          - connected
          - connecting
          - disconnected
          - unknown
        feedStartDate:
          nullable: true
          title: Date
          type: string
          example: '2022-10-23'
          description: 'In Codat''s data model, dates are represented using the <a class="external" href="https://en.wikipedia.org/wiki/ISO_8601" target="_blank">ISO 8601 standard</a>. Date fields are formatted as strings; for example:

            ```

            2020-10-08

            ```'
      required:
      - id
      - accountName
      - accountType
      - accountNumber
      - currency
      - balance
      definitions:
        sourceAccountV2Prototype:
          title: Source account (v2)
          type: object
          properties:
            id:
              $ref: '#/components/schemas/SourceAccountV2/properties/id'
            accountName:
              $ref: '#/components/schemas/SourceAccountV2/properties/accountName'
            accountType:
              $ref: '#/components/schemas/SourceAccountV2/properties/accountType'
            accountNumber:
              $ref: '#/components/schemas/SourceAccountV2/properties/accountNumber'
            routingInfo:
              $ref: '#/components/schemas/SourceAccountV2/definitions/routingInfo'
            sortCode:
              $ref: '#/components/schemas/SourceAccountV2/properties/sortCode'
            currency:
              $ref: '#/components/schemas/SourceAccount/properties/currency'
            balance:
              $ref: '#/components/schemas/SourceAccountV2/properties/balance'
            modifiedDate:
              $ref: '#/components/schemas/SourceAccountV2/properties/modifiedDate'
            accountInfo:
              $ref: '#/components/schemas/SourceAccountV2/definitions/accountInfo'
          required:
          - id
          - accountName
          - accountType
          - accountNumber
          - currency
          - balance
        accountInfo:
          title: Account Info
          type: object
          nullable: true
          properties:
            description:
              type: string
              nullable: true
              description: Description of the account.
            nickname:
              type: string
              nullable: true
              description: Name given to the account by the user. Used in UIs to assist in account selection.
            accountOpenDate:
              $ref: '#/components/schemas/SourceAccountV2/properties/feedStartDate'
              nullable: true
              description: Date when the account was opened or created at the provider
            availableBalance:
              type: number
              format: decimal
              nullable: true
              description: Balance of funds available for use. This includes pending activity.
        sourceAccounts:
          title: Source accounts
          type: array
          items:
            $ref: '#/components/schemas/SourceAccountV2'
        routingInfo:
          title: Routing Info
          type: object
          description: Routing information for the bank. This does not include account number.
          properties:
            bankCode:
              type: string
              nullable: true
              description: The numeric identifier of the routing number
            type:
              type: string
              nullable: true
              default: bankcode
              enum:
              - rtn
              - aba
              - swift
              - bsb
              - iban
              - nz2
              - trno
              - sortcode
              - blz
              - ifsc
              - bankcode
              - apca
              - clabe
              description: The type of routing number.
      examples:
      - id: acc-001
        accountName: account-081
        accountType: checking
        accountNumber: '12345670'
        routingInfo:
          bankCode: 021001088
          type: bankcode
        currency: GBP
        balance: 99.99
        accountInfo:
          description: account description 1
          nickname: account 123
          accountOpenDate: '2023-05-06'
          availableBalance: 10
        modifiedDate: '2024-08-02T00:00:00.000Z'
        status: pending
        feedStartDate: '2024-05-01'
      - id: acc-002
        accountName: account-083
        accountType: savings
        accountNumber: '23456789'
        routingInfo:
          bankCode: 021001088
          type: bankcode
        currency: GBP
        balance: 400
        accountInfo:
          description: account description 2
          nickname: account 1290
          accountOpenDate: '2023-05-23'
          availableBalance: 400
        modifiedDate: '2024-08-02T00:00:00.000Z'
        status: pending
        feedStartDate: '2024-05-01'
    SourceAccount:
      title: Source account (v1)
      type: object
      description: The target bank account in a supported accounting software for ingestion into a bank feed.
      additionalProperties: false
      properties:
        id:
          type: string
          description: Unique ID for the bank account.
        accountName:
          type: string
          nullable: true
          description: The bank account name.
        accountType:
          type: string
          nullable: true
          description: The type of bank account e.g. Credit.
        accountNumber:
          type: string
          nullable: true
          description: The account number.
        sortCode:
          type: string
          nullable: true
          description: The sort code.
        currency:
          title: Currency
          x-internal: true
          type: string
          description: "The currency data type in Codat is the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code, e.g. _GBP_.\n\n## Unknown currencies\n\nIn line with the ISO 4217 specification, the code _XXX_ is used when the data source does not return a currency for a transaction. \n\nThere are only a very small number of edge cases where this currency code is returned by the Codat system."
          format: ISO4217
          examples:
          - GBP
          - USD
          - EUR
        balance:
          type: number
          format: decimal
          nullable: true
          description: The latest balance for the bank account.
        modifiedDate:
          $ref: '#/components/schemas/DateTime'
          nullable: true
          description: The last date the bank account was modified.
        status:
          type: string
          nullable: true
          description: Status of the source account.
          enum:
          - pending
          - connected
          - connecting
          - disconnected
          - unknown
        feedStartDate:
          $ref: '#/components/schemas/DateTime'
          nullable: true
      required:
      - id
      definitions:
        sourceAccountPrototype:
          title: Source account (v1)
          type: object
          properties:
            id:
              $ref: '#/components/schemas/SourceAccount/properties/id'
            accountName:
              $ref: '#/components/schemas/SourceAccount/properties/accountName'
            accountType:
              $ref: '#/components/schemas/SourceAccount/properties/accountType'
            accountNumber:
              $ref: '#/components/schemas/SourceAccount/properties/accountNumber'
            sortCode:
              $ref: '#/components/schemas/SourceAccount/properties/sortCode'
            currency:
              $ref: '#/components/schemas/SourceAccount/properties/currency'
            balance:
              $ref: '#/components/schemas/SourceAccount/properties/balance'
            modifiedDate:
              $ref: '#/components/schemas/SourceAccount/properties/modifiedDate'
          required:
          - id
        sourceAccounts:
          title: Source accounts
          type: array
          items:
            $ref: '#/components/schemas/SourceAccount'
      examples:
      - id: acc-002
        accountName: account-081
        sortCode: '123456'
        accountType: Credit
        accountNumber: '12345670'
        currency: GBP
        balance: 99.99
        modifiedDate: '2023-01-09T14:14:14.1057478Z'
        status: pending
      - id: acc-003
        accountName: account-095
        sortCode: '123456'
        accountType: Credit
        accountNumber: '12345671'
        currency: USD
        balance: 0
        modifiedDate: '2023-01-09T14:14:14.1057478Z'
        status: pending
    DateTime:
      title: Date time
      type: string
      examples:
      - '2022-10-23T00:00:00Z'
      - '2022-10-23'
      description: "In Codat's data model, dates and times are represented using the <a class=\"external\" href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601 standard</a>. Date and time fields are formatted as strings; for example:\n\n```\n2020-10-08T22:40:50Z\n2021-01-01T00:00:00\n```\n\n\n\nWhen syncing data that contains `DateTime` fields from Codat, make sure you support the following cases when reading time information:\n\n- Coordinated Universal Time (UTC): `2021-11-15T06:00:00Z`\n- Unqualified local time: `2021-11-15T01:00:00`\n- UTC time offsets: `2021-11-15T01:00:00-05:00`\n\n> Time zones\n> \n> Not all dates from Codat will contain information about time zones.  \n> Where it is not available from the underlying platform, Codat will return these as times local to the business whose data has been synced."
    SourceAccountBatchErrorResponse:
      title: Batch source account creation error
      description: Describes the error that occured when trying to create the specified source account.
      type: object
      properties:
        sourceAccountId:
          type: string
          description: Unique ID for the source account.
          examples:
          - '12345'
        result:
          type: object
          properties:
            statusCode:
              description: The error status code for the attempted creation of the source account.
              type: string
              examples:
              - 409
            error:
              description: The error description for the attempted creation of the source account.
              type: string
              examples:
              - A bank account already exists with the same Id
    SourceAccountBatchCreateResponse:
      title: Batch source account request creation response
      description: Account ID and resulting object of the batch `Create source account` request.
      type: object
      properties:
        sourceAccountId:
          type: string
          description: Unique ID for the source account.
          examples:
          - '12345'
        result:
          $ref: '#/components/schemas/SourceAccountBatchCreateResponse/definitions/sourceAccountBatchCreateResult'
      definitions:
        sourceAccountBatchCreateResult:
          title: Source Account Batch Create Result
          description: Status details and corresponding object of the `Create account` operation.
          type: object
          properties:
            statusCode:
              type: integer
              description: The HTTP status code for the creation of the source account
            error:
              type: string
              nullable: true
              description: A brief description of the error.
            account:
              $ref: '#/components/schemas/SourceAccount'
    ErrorMessage:
      title: Error message
      type: object
      x-internal: true
      properties:
        statusCode:
          type: integer
          description: The HTTP status code returned by the error.
        service:
          type: string
          description: Codat's service the returned the error.
        error:
          type: string
          description: A brief description of the error.
        correlationId:
          type: string
          description: Unique identifier used to propagate to all downstream services and determine the source of the error.
        validation:
          $ref: '#/components/schemas/ErrorMessage/definitions/errorValidation'
        canBeRetried:
          type: string
          description: '`True` if the error occurred transiently and can be retried.'
        detailedErrorCode:
          type: integer
          description: Machine readable error code used to automate processes based on the code returned.
      definitions:
        errorValidation:
          title: Validation error
          type: object
          nullable: true
          description: A human-readable object describing validation decisions Codat has made. If an operation has failed because of validation errors, they will be detailed here.
          properties:
            errors:
              type: array
              nullable: true
              items:
                $ref: '#/components/schemas/ErrorMessage/definitions/errorValidationItem'
            warnings:
              type: array
              nullable: true
              items:
                $ref: '#/components/schemas/ErrorMessage/definitions/errorValidationItem'
        errorValidationItem:
          title: Validation error item
          type: object
          properties:
            itemId:
              type: string
              nullable: true
              description: Unique identifier for a validation item.
            message:
              type: string
              nullable: true
              description: A message outlining validation item's issue.
            validatorName:
              type: string
              nullable: true
              description: Name of validator.
    SourceAccountV2BatchCreateResponse:
      title: Batch source account (v2) creation response
      description: Account ID and resulting object of the batch `Create source account` request.
      type: object
      properties:
        sourceAccountId:
          type: string
          description: Unique ID for the source account.
          examples:
          - '12345'
        result:
          $ref: '#/components/schemas/SourceAccountV2BatchCreateResponse/definitions/sourceAccountV2BatchCreateResult'
      definitions:
        sourceAccountV2BatchCreateResult:
          title: Source Account V2 Batch CreateResult
          description: Status details and corresponding object of the `Create account` operation.
          type: object
          properties:
            statusCode:
              type: integer
              description: The HTTP status code for the creation of the source account
            error:
              type: string
              nullable: true
              description: A brief description of the error.
            account:
              $ref: '#/components/schemas/SourceAccountV2'
    BankAccountCredentials:
      title: Bank Account Credentials
      description: Result of generate credentials
      type: object
      properties:
        username:
          type: string
          example: S0MW-TR0P-7DS0
          description: Username used by the bank feeds platform to retrieve transactions
        password:
          type: string
          example: cO0ajh0uGyTN0Pwh
          description: Password to enable the bank feeds platform to securely retrieve transactions.
      examples:
      - QuickBooks Online Bank Feeds: null
        username: S0MW-TR0P-7DS0
        password: cO0ajh0uGyTN0Pwh
  parameters:
    connectionId:
      name: connectionId
      in: path
      required: true
      schema:
        type: string
        format: uuid
        example: 2e9d2c44-f675-40ba-8049-353bfcb5e171
        description: Unique i

# --- truncated at 32 KB (40 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/codat/refs/heads/main/openapi/codat-source-accounts-api-openapi.yml