Campfire Bank Reconciliation API

The Bank Reconciliation API from Campfire — 6 operation(s) for bank reconciliation.

OpenAPI Specification

campfire-bank-reconciliation-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Campfire Developer APIs Accounts Payable Bank Reconciliation API
  version: 1.0.0
  description: '## Introduction

    Campfire''s developer APIs offer granular access to Campfire''s core accounting,

    revenue recognition, and financial data features.


    These APIs are designed to be used by developers to build custom integrations,

    automate workflows, and perform any other programmatic operations.

    '
servers:
- url: https://api.meetcampfire.com
  description: Production server
tags:
- name: Bank Reconciliation
paths:
  /coa/api/v2/reconciliation:
    get:
      operationId: coa_api_v2_reconciliation_list
      description: Retrieve a paginated list of bank reconciliation reports. Supports filtering by start_date, end_date, entity, account, and search query (q). Default sort is by statement_ending_date descending.
      summary: List Bank Reconciliation Reports
      parameters:
      - in: query
        name: account
        schema:
          type: integer
        description: Filter by account ID
      - in: query
        name: end_date
        schema:
          type: string
        description: Filter by maximum statement ending date (YYYY-MM-DD)
      - in: query
        name: entity
        schema:
          type: integer
        description: Filter by entity ID
      - name: limit
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - name: offset
        required: false
        in: query
        description: The initial index from which to return the results.
        schema:
          type: integer
      - in: query
        name: q
        schema:
          type: string
        description: Search term for account name, number, or reconciled_by name
      - in: query
        name: sort
        schema:
          type: string
        description: Sort field (prefix with - for descending)
      - in: query
        name: start_date
        schema:
          type: string
        description: Filter by minimum statement ending date (YYYY-MM-DD)
      tags:
      - Bank Reconciliation
      security:
      - knoxApiToken: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedReconciliationReportV2ListList'
          description: ''
    post:
      operationId: coa_api_v2_reconciliation_create
      description: Create a new bank reconciliation report for a specific account and date range. Cannot create overlapping date ranges for the same account and entity.
      summary: Create Bank Reconciliation Report
      tags:
      - Bank Reconciliation
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReconciliationReportV2'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ReconciliationReportV2'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ReconciliationReportV2'
        required: true
      security:
      - knoxApiToken: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReconciliationReportV2'
          description: ''
  /coa/api/v2/reconciliation/{id}:
    get:
      operationId: coa_api_v2_reconciliation_retrieve
      description: Retrieve a specific bank reconciliation report by ID. Includes report metadata, status, async task status for PDF processing, and attached files/CSV statements.
      summary: Get Bank Reconciliation Report
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Bank Reconciliation
      security:
      - knoxApiToken: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReconciliationReportV2'
          description: ''
    put:
      operationId: coa_api_v2_reconciliation_update
      description: Update a bank reconciliation report. Supports partial updates via PATCH.
      summary: Update Bank Reconciliation Report
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Bank Reconciliation
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReconciliationReportV2'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ReconciliationReportV2'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ReconciliationReportV2'
        required: true
      security:
      - knoxApiToken: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReconciliationReportV2'
          description: ''
    patch:
      operationId: coa_api_v2_reconciliation_partial_update
      description: Partially update a bank reconciliation report. Only provided fields are modified.
      summary: Partial Update Bank Reconciliation Report
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Bank Reconciliation
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedReconciliationReportV2'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedReconciliationReportV2'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedReconciliationReportV2'
      security:
      - knoxApiToken: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReconciliationReportV2'
          description: ''
    delete:
      operationId: coa_api_v2_reconciliation_destroy
      description: Delete a bank reconciliation report and all associated data.
      summary: Delete Bank Reconciliation Report
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Bank Reconciliation
      security:
      - knoxApiToken: []
      responses:
        '204':
          description: No response body
  /coa/api/v2/reconciliation/{id}/bulk-match-transactions:
    post:
      operationId: coa_api_v2_reconciliation_bulk_match_transactions_create
      description: Match multiple GL transactions to statement transactions in a single request. Pairs are validated atomically — all succeed or none are created.
      summary: Bulk Match GL Transactions to Statement Transactions
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Bank Reconciliation
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkMatchTransactionRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/BulkMatchTransactionRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/BulkMatchTransactionRequest'
        required: true
      security:
      - knoxApiToken: []
      responses:
        '201':
          description: All pairs matched successfully
        '400':
          description: Validation error (duplicates, already reconciled, non-draft report)
        '404':
          description: Report, GL transaction, or statement transaction not found
  /coa/api/v2/reconciliation/{id}/source-transactions:
    get:
      operationId: coa_api_v2_reconciliation_source_transactions_list
      description: List source (GL) transactions available for reconciliation. Supports filtering by date range, bank, vendor, department, tag, currency, and reconciliation status.
      summary: List GL Transactions for Reconciliation
      parameters:
      - in: query
        name: bank
        schema:
          type: integer
        description: Filter by bank account ID
      - in: query
        name: currency
        schema:
          type: string
        description: Filter by currency code (e.g., USD, EUR)
      - in: query
        name: department
        schema:
          type: integer
        description: Filter by department ID
      - in: query
        name: end_date
        schema:
          type: string
        description: Filter by maximum posted date (YYYY-MM-DD)
      - in: query
        name: group
        schema:
          type: integer
        description: Filter by tag group ID
      - in: path
        name: id
        schema:
          type: integer
        required: true
      - name: limit
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - in: query
        name: matched
        schema:
          type: string
        description: Set to 'true' to show only transactions with an explicit statement match, or 'false' to show transactions without an explicit statement match
      - name: offset
        required: false
        in: query
        description: The initial index from which to return the results.
        schema:
          type: integer
      - in: query
        name: q
        schema:
          type: string
        description: Search term for bank description, journal memo, journal order, or amount
      - in: query
        name: reconciled_only
        schema:
          type: string
        description: Set to 'true' to show only reconciled transactions for this report
      - in: query
        name: sort
        schema:
          type: string
        description: 'Sort field(s), comma-separated (prefix with - for descending). Default: posted_at'
      - in: query
        name: start_date
        schema:
          type: string
        description: Filter by minimum posted date (YYYY-MM-DD)
      - in: query
        name: tag
        schema:
          type: integer
        description: Filter by tag ID
      - in: query
        name: unreconciled
        schema:
          type: string
        description: Set to 'true' to show only unreconciled transactions
      - in: query
        name: vendor
        schema:
          type: integer
        description: Filter by vendor/payee ID
      tags:
      - Bank Reconciliation
      security:
      - knoxApiToken: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedReconciliationReportV2SourceTransactionListList'
          description: ''
  /coa/api/v2/reconciliation/{id}/transactions/confirm:
    post:
      operationId: coa_api_v2_reconciliation_transactions_confirm_create
      description: Confirm the selection of GL transactions for reconciliation. Pass selected transaction IDs in the request body. Selected transactions are marked as RECONCILED; deselected transactions have their status as suggested matches to this reconciliation report cleared.
      summary: Confirm Selection of Transactions to Reconcile
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Bank Reconciliation
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfirmTransactionSelectionRequest'
            examples:
              ConfirmSelectedTransactions:
                value:
                  selected:
                  - 1001
                  - 1002
                  - 1003
                  - 1004
                  - 1005
                summary: Confirm selected transactions
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ConfirmTransactionSelectionRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ConfirmTransactionSelectionRequest'
        required: true
      security:
      - knoxApiToken: []
      responses:
        '204':
          description: No response body
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ''
  /coa/api/v2/reconciliation/parse-statement-page:
    post:
      operationId: parse_bank_statement_page
      description: "Parse a bank statement PDF.\n\nAccepts:\n    ``file_id`` (required) -- ID of the uploaded PDF ``File``.\n    ``pages`` (optional, int) -- How many pages to include in the first parse batch.\n        Defaults to ``BATCH_PAGE_SIZE``. Use a small value (e.g. 2) for\n        a fast initial response with just balances and dates.\n\nOnly the first batch is parsed in this request. Parsed output is cached under\n``file_id`` and the effective first-batch page count (``pages`` or default\n``BATCH_PAGE_SIZE``) so different ``pages`` values do not share one cache entry."
      summary: Parse Bank Statement Page
      tags:
      - Bank Reconciliation
      security:
      - knoxApiToken: []
      responses:
        '200':
          description: No response body
components:
  schemas:
    PatchedReconciliationReportV2:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        entity_name:
          type: string
          readOnly: true
        account_name:
          type: string
          readOnly: true
        account_number:
          type: string
          readOnly: true
        account_type:
          type: string
          readOnly: true
        account_subtype:
          type: string
          readOnly: true
        reconciled_by_name:
          type: string
          readOnly: true
        reconciled_by_email:
          type: string
          readOnly: true
        approved_by_name:
          type: string
          readOnly: true
        approved_by_email:
          type: string
          readOnly: true
        async_task:
          allOf:
          - $ref: '#/components/schemas/AsyncTask'
          readOnly: true
        attachments:
          type: array
          items:
            $ref: '#/components/schemas/File'
          readOnly: true
        csv_statements:
          type: string
          readOnly: true
        cleared_total_debits:
          type: string
          readOnly: true
        cleared_total_credits:
          type: string
          readOnly: true
        cleared_activity:
          type: string
          readOnly: true
        cleared_item_count:
          type: string
          readOnly: true
        matched_total_debits:
          type: string
          readOnly: true
        matched_total_credits:
          type: string
          readOnly: true
        matched_activity:
          type: string
          readOnly: true
        matched_item_count:
          type: string
          readOnly: true
        unreconciled_total_debits:
          type: string
          readOnly: true
        unreconciled_total_credits:
          type: string
          readOnly: true
        unreconciled_activity:
          type: string
          readOnly: true
        unreconciled_gl_item_count:
          type: string
          readOnly: true
        unreconciled_statement_line_count:
          type: string
          readOnly: true
        unreconciled_statement_activity:
          type: string
          readOnly: true
        reconciliation_difference:
          type: string
          readOnly: true
        open_total_debits:
          type: string
          readOnly: true
        open_total_credits:
          type: string
          readOnly: true
        open_activity:
          type: string
          readOnly: true
        open_gl_item_count:
          type: string
          readOnly: true
        open_statement_line_count:
          type: string
          readOnly: true
        open_statement_activity:
          type: string
          readOnly: true
        statement_activity:
          type: string
          readOnly: true
        open_difference:
          type: string
          readOnly: true
        currency:
          type: string
          maxLength: 3
        statement_starting_date:
          type: string
          format: date
          nullable: true
        statement_ending_date:
          type: string
          format: date
          nullable: true
        starting_balance:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
        ending_balance:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
        total_credit_amount:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        total_debit_amount:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        adjustments:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        last_modified_at:
          type: string
          format: date-time
          readOnly: true
        reconciled_on:
          type: string
          format: date
          nullable: true
        approved_on:
          type: string
          format: date-time
          readOnly: true
          nullable: true
        status:
          $ref: '#/components/schemas/Status8ecEnum'
        unmatched_statement_transactions:
          nullable: true
        statement_recognition_cost_usd:
          type: number
          format: double
          maximum: 100000000
          minimum: -100000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
          description: Estimated USD cost of AI bank-statement parsing for this report (from summed page token usage).
        statement_recognition_input_tokens:
          type: integer
          maximum: 2147483647
          minimum: 0
          nullable: true
          description: Sum of input tokens from statement parsing across all pages (set on finalize).
        statement_recognition_output_tokens:
          type: integer
          maximum: 2147483647
          minimum: 0
          nullable: true
          description: Sum of output tokens from statement parsing across all pages (set on finalize).
        statement_recognition_token_total:
          type: integer
          maximum: 9223372036854775807
          minimum: 0
          format: int64
          nullable: true
          description: Input plus output tokens for this report (set on finalize).
        statement_recognition_model_name:
          type: string
          nullable: true
          description: LLM model used for statement parsing when token totals were recorded.
          maxLength: 128
        customer:
          type: integer
          readOnly: true
        entity:
          type: integer
          nullable: true
        account:
          type: integer
        matching_task:
          type: integer
          nullable: true
        reconciled_by:
          type: integer
          nullable: true
        approved_by:
          type: integer
          readOnly: true
          nullable: true
    ReconciliationReportV2SourceReconciliationTransactionStatusEnum:
      enum:
      - DRAFT
      - RECONCILED
      type: string
      description: '* `DRAFT` - Draft

        * `RECONCILED` - Reconciled'
    ReconciliationReportV2:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        entity_name:
          type: string
          readOnly: true
        account_name:
          type: string
          readOnly: true
        account_number:
          type: string
          readOnly: true
        account_type:
          type: string
          readOnly: true
        account_subtype:
          type: string
          readOnly: true
        reconciled_by_name:
          type: string
          readOnly: true
        reconciled_by_email:
          type: string
          readOnly: true
        approved_by_name:
          type: string
          readOnly: true
        approved_by_email:
          type: string
          readOnly: true
        async_task:
          allOf:
          - $ref: '#/components/schemas/AsyncTask'
          readOnly: true
        attachments:
          type: array
          items:
            $ref: '#/components/schemas/File'
          readOnly: true
        csv_statements:
          type: string
          readOnly: true
        cleared_total_debits:
          type: string
          readOnly: true
        cleared_total_credits:
          type: string
          readOnly: true
        cleared_activity:
          type: string
          readOnly: true
        cleared_item_count:
          type: string
          readOnly: true
        matched_total_debits:
          type: string
          readOnly: true
        matched_total_credits:
          type: string
          readOnly: true
        matched_activity:
          type: string
          readOnly: true
        matched_item_count:
          type: string
          readOnly: true
        unreconciled_total_debits:
          type: string
          readOnly: true
        unreconciled_total_credits:
          type: string
          readOnly: true
        unreconciled_activity:
          type: string
          readOnly: true
        unreconciled_gl_item_count:
          type: string
          readOnly: true
        unreconciled_statement_line_count:
          type: string
          readOnly: true
        unreconciled_statement_activity:
          type: string
          readOnly: true
        reconciliation_difference:
          type: string
          readOnly: true
        open_total_debits:
          type: string
          readOnly: true
        open_total_credits:
          type: string
          readOnly: true
        open_activity:
          type: string
          readOnly: true
        open_gl_item_count:
          type: string
          readOnly: true
        open_statement_line_count:
          type: string
          readOnly: true
        open_statement_activity:
          type: string
          readOnly: true
        statement_activity:
          type: string
          readOnly: true
        open_difference:
          type: string
          readOnly: true
        currency:
          type: string
          maxLength: 3
        statement_starting_date:
          type: string
          format: date
          nullable: true
        statement_ending_date:
          type: string
          format: date
          nullable: true
        starting_balance:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
        ending_balance:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
        total_credit_amount:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        total_debit_amount:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        adjustments:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        last_modified_at:
          type: string
          format: date-time
          readOnly: true
        reconciled_on:
          type: string
          format: date
          nullable: true
        approved_on:
          type: string
          format: date-time
          readOnly: true
          nullable: true
        status:
          $ref: '#/components/schemas/Status8ecEnum'
        unmatched_statement_transactions:
          nullable: true
        statement_recognition_cost_usd:
          type: number
          format: double
          maximum: 100000000
          minimum: -100000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
          description: Estimated USD cost of AI bank-statement parsing for this report (from summed page token usage).
        statement_recognition_input_tokens:
          type: integer
          maximum: 2147483647
          minimum: 0
          nullable: true
          description: Sum of input tokens from statement parsing across all pages (set on finalize).
        statement_recognition_output_tokens:
          type: integer
          maximum: 2147483647
          minimum: 0
          nullable: true
          description: Sum of output tokens from statement parsing across all pages (set on finalize).
        statement_recognition_token_total:
          type: integer
          maximum: 9223372036854775807
          minimum: 0
          format: int64
          nullable: true
          description: Input plus output tokens for this report (set on finalize).
        statement_recognition_model_name:
          type: string
          nullable: true
          description: LLM model used for statement parsing when token totals were recorded.
          maxLength: 128
        customer:
          type: integer
          readOnly: true
        entity:
          type: integer
          nullable: true
        account:
          type: integer
        matching_task:
          type: integer
          nullable: true
        reconciled_by:
          type: integer
          nullable: true
        approved_by:
          type: integer
          readOnly: true
          nullable: true
      required:
      - account
      - account_name
      - account_number
      - account_subtype
      - account_type
      - approved_by
      - approved_by_email
      - approved_by_name
      - approved_on
      - async_task
      - attachments
      - cleared_activity
      - cleared_item_count
      - cleared_total_credits
      - cleared_total_debits
      - created_at
      - csv_statements
      - customer
      - entity_name
      - id
      - last_modified_at
      - matched_activity
      - matched_item_count
      - matched_total_credits
      - matched_total_debits
      - open_activity
      - open_difference
      - open_gl_item_count
      - open_statement_activity
      - open_statement_line_count
      - open_total_credits
      - open_total_debits
      - reconciled_by_email
      - reconciled_by_name
      - reconciliation_difference
      - statement_activity
      - unreconciled_activity
      - unreconciled_gl_item_count
      - unreconciled_statement_activity
      - unreconciled_statement_line_count
      - unreconciled_total_credits
      - unreconciled_total_debits
    ReconciliationReportV2StatementTransaction:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        page_number:
          type: integer
          readOnly: true
        reconciliation_transaction_id:
          type: string
          readOnly: true
        source_transaction_id:
          type: string
          readOnly: true
        is_matched:
          type: string
          readOnly: true
        date:
          type: string
          format: date
        deposit:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        withdrawal:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        description:
          type: string
          nullable: true
        is_cleared:
          type: boolean
        created_at:
          type: string
          format: date-time
          readOnly: true
        last_modified_at:
          type: string
          format: date-time
          readOnly: true
        customer:
          type: integer
          readOnly: true
        reconciliation_report:
          type: integer
          readOnly: true
        page:
          type: integer
          readOnly: true
      required:
      - created_at
      - customer
      - date
      - id
      - is_matched
      - last_modified_at
      - page
      - page_number
      - reconciliation_report
      - reconciliation_transaction_id
      - source_transaction_id
    File:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        customer:
          type: integer
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        created_by:
          type: integer
          readOnly: true
          nullable: true
        created_by_name:
          type: string
          readOnly: true
        created_by_email:
          type: string
          readOnly: true
        last_modified_at:
          type: string
          format: date-time
          readOnly: true
        name:
          type: string
        url:
          type: string
          readOnly: true
        s3_content_type:
          type: string
          nullable: true
        s3_content_length:
          type: integer
          maximum: 2147483647
          minimum: 0
          nullable: true
        s3_path:
          type: string
        object_id:
          type: integer
          maximum: 2147483647
          minimum: 0
          nullable: true
        app:
          type: string
          readOnly: true
        model:
          type: string
          readOnly: true
        is_deleted:
          type: boolean
          readOnly: true
          default: false
        deleted_at:
          type: string
          format: date-time
          readOnly: true
          nullable: true
      required:
      - app
      - created_at
      - created_by
      - created_by_email
      - created_by_name
      - customer
      - deleted_at
      - id
      - is_deleted
      - last_modified_at
      - model
      - name
      - s3_path
      - url
    ReconciliationReportV2SourceReconciliationTransaction:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        status:
          $ref: '#/components/schemas/ReconciliationReportV2SourceReconciliationTransactionStatusEnum'
        suggestion_id:
          type: integer
          nullable: true
          readOnly: true
        suggestion:
          allOf:
          - $ref: '#/components/schemas/ReconciliationReportV2StatementTransaction'
          readOnly: true
      required:
      - id
      - suggestion
      - suggestion_id
    ErrorResponse:
      type: object
      description: Standard error response.
      properties:
        error:
          type: string
          description: Error message describing what went wrong
      required:
      - error
    Status8ecEnum:
      enum:
      - DRAFT
      - PENDING_APPROVAL
      - APPROVED
      - DELETED
      type: string
      description: '* `DRAFT` - Draft

        * `PENDING_APPROVAL` - Pending Approval

        * `APPROVED` - Approved

        * `DELETED` - Deleted'
    ReconciliationReportV2SourceTransact

# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/campfire/refs/heads/main/openapi/campfire-bank-reconciliation-api-openapi.yml