Campfire Developer APIs

Granular REST access to Campfire's core accounting, revenue-recognition, and financial-data features — 362 operations across 12 tags. Token (Authorization: Token) auth, cursor/limit/offset pagination, and Idempotency-Key handling on create operations.

OpenAPI Specification

campfire-openapi-original.json Raw ↑
{
    "openapi": "3.0.3",
    "info": {
        "title": "Campfire Developer APIs",
        "version": "1.0.0",
        "description": "## Introduction\nCampfire's developer APIs offer granular access to Campfire's core accounting,\nrevenue recognition, and financial data features.\n\nThese APIs are designed to be used by developers to build custom integrations,\nautomate workflows, and perform any other programmatic operations.\n"
    },
    "paths": {
        "/ca/api/account": {
            "get": {
                "operationId": "list_accounts",
                "description": "\n        Retrieve a paginated list of bank accounts.\n\n        Supports including soft-deleted records for audit and recovery purposes.\n        When include_deleted=true, deleted records will have is_deleted=true\n        and include deletion metadata (deleted_at timestamp).\n\n        Supports sorting by all returned fields:\n        - name, -name (account name)\n        - nickname, -nickname (account nickname)\n        - type, -type (account type)\n        - status, -status (account status)\n        - currency, -currency (account currency)\n        - external_account_id, -external_account_id (external account ID)\n        - institution_id, -institution_id (institution ID)\n        - source, -source (account source)\n        - current_balance, -current_balance (current balance)\n        - available_balance, -available_balance (available balance)\n        - created_at, -created_at (creation date)\n        - last_modified_at, -last_modified_at (last modified date)\n        - account_type, -account_type (chart account type)\n        - account_subtype, -account_subtype (chart account subtype)\n        - account_cashflow_classification, -account_cashflow_classification (cashflow classification)\n        - type_name, -type_name (human-readable account type)\n        - subtype_name, -subtype_name (human-readable account subtype)\n        - cashflow_classification_name, -cashflow_classification_name (human-readable cashflow classification)\n        - entity_name, -entity_name (entity name)\n        - department, -department (department name)\n        - id, -id (account ID)\n        - account_id, -account_id (UUID account ID)\n        ",
                "summary": "List Bank Accounts",
                "parameters": [
                    {
                        "in": "query",
                        "name": "chart_of_accounts_account",
                        "schema": {
                            "type": "integer"
                        },
                        "description": "Filter bank accounts by their linked chart of accounts account ID"
                    },
                    {
                        "in": "query",
                        "name": "include_deleted",
                        "schema": {
                            "type": "boolean",
                            "default": false
                        },
                        "description": "When set to 'true', returns ONLY deleted records instead of active records. Deleted records contain minimal data: 'id', 'is_deleted=true', 'deleted_at' timestamp, and 'last_modified_at'. When 'false' or omitted, returns ONLY active records. This provides clean separation between active and deleted data."
                    },
                    {
                        "in": "query",
                        "name": "last_modified_at__gte",
                        "schema": {
                            "type": "string"
                        },
                        "description": "Filter for records modified on or after this timestamp. Format: ISO 8601 (e.g., '2024-01-01T00:00:00Z' or '2024-01-01'). Works with both active records and deleted records (filters by deletion time for deleted records)."
                    },
                    {
                        "in": "query",
                        "name": "last_modified_at__lte",
                        "schema": {
                            "type": "string"
                        },
                        "description": "Filter for records modified on or before this timestamp. Format: ISO 8601 (e.g., '2024-12-31T23:59:59Z' or '2024-12-31'). Works with both active records and deleted records (filters by deletion time for deleted records)."
                    },
                    {
                        "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"
                        }
                    }
                ],
                "tags": [
                    "Cash Management"
                ],
                "security": [
                    {
                        "knoxApiToken": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedBankAccountList"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "post": {
                "operationId": "create_account",
                "description": "Create a new bank account",
                "summary": "Create Bank Account",
                "tags": [
                    "Cash Management"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/BankAccount"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/BankAccount"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/BankAccount"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "knoxApiToken": []
                    }
                ],
                "responses": {
                    "201": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/BankAccount"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/ca/api/account/{id}": {
            "get": {
                "operationId": "ca_api_account_retrieve",
                "summary": "Retrieve Bank Account",
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "integer"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "Cash Management"
                ],
                "security": [
                    {
                        "knoxApiToken": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/BankAccount"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "put": {
                "operationId": "ca_api_account_update",
                "summary": "Update Bank Account",
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "integer"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "Cash Management"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/BankAccount"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/BankAccount"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/BankAccount"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "knoxApiToken": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/BankAccount"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "patch": {
                "operationId": "ca_api_account_partial_update",
                "summary": "Partial Update Bank Account",
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "integer"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "Cash Management"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedBankAccount"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedBankAccount"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedBankAccount"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "knoxApiToken": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/BankAccount"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "delete": {
                "operationId": "ca_api_account_destroy",
                "summary": "Delete Bank Account",
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "integer"
                        },
                        "required": true
                    },
                    {
                        "in": "query",
                        "name": "new_account",
                        "schema": {
                            "type": "integer"
                        },
                        "description": "ID of the bank account to reassign transactions to before deletion"
                    }
                ],
                "tags": [
                    "Cash Management"
                ],
                "security": [
                    {
                        "knoxApiToken": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/ca/api/balance-sheet/comparative": {
            "get": {
                "operationId": "ca_api_balance_sheet_comparative_retrieve",
                "description": "API view for comparative balance sheet that handles budget vs actual comparisons",
                "summary": "Get Comparative Balance Sheet",
                "parameters": [
                    {
                        "in": "query",
                        "name": "cadence",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "daily",
                                "monthly",
                                "quarterly",
                                "weekly",
                                "yearly"
                            ],
                            "default": "monthly"
                        }
                    },
                    {
                        "in": "query",
                        "name": "entity",
                        "schema": {
                            "type": "integer"
                        },
                        "description": "Entity ID(s) to scope the report. Can be repeated (?entity=1&entity=2) or JSON array",
                        "explode": true,
                        "style": "form"
                    },
                    {
                        "in": "query",
                        "name": "entity_rollup",
                        "schema": {
                            "type": "boolean",
                            "default": false
                        },
                        "description": "If true, includes all data of children entities in consolidation"
                    },
                    {
                        "in": "query",
                        "name": "group_by",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "tags": [
                    "Financial Statements"
                ],
                "security": [
                    {
                        "knoxApiToken": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "balance_sheet": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "account_id": {
                                                        "type": "integer"
                                                    },
                                                    "account_name": {
                                                        "type": "string"
                                                    },
                                                    "account_number": {
                                                        "type": "string"
                                                    },
                                                    "hierarchy": {
                                                        "type": "array",
                                                        "items": {
                                                            "type": "string"
                                                        }
                                                    }
                                                }
                                            }
                                        },
                                        "headers": {
                                            "type": "object"
                                        },
                                        "budget_id": {
                                            "type": "string",
                                            "nullable": true
                                        }
                                    }
                                },
                                "examples": {
                                    "Example": {
                                        "value": {
                                            "balance_sheet": [
                                                {
                                                    "account_id": "12172",
                                                    "account_name": "Cash and Cash Equivalents",
                                                    "account_number": "111000",
                                                    "hierarchy": [
                                                        "ASSET",
                                                        "12093",
                                                        "12172"
                                                    ],
                                                    "2024-01-31_Total": 50000.0,
                                                    "2024-02-29_Total": 55000.0,
                                                    "comparison_1_Difference": 5000.0,
                                                    "comparison_1_Percentage": 10.0
                                                }
                                            ],
                                            "headers": {
                                                "comparison_1": [
                                                    "2024-01-31_Total",
                                                    "2024-02-29_Total",
                                                    "comparison_1_Difference",
                                                    "comparison_1_Percentage"
                                                ]
                                            },
                                            "budget_id": null
                                        }
                                    }
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/ca/api/bank-feed/{account_id}": {
            "post": {
                "operationId": "ca_api_bank_feed_create",
                "description": "Ingest bank feed data for a specific bank account. Creates bank transactions with corresponding journal entries, updates account balances, and triggers auto-categorization.",
                "summary": "Post Bank Feed",
                "parameters": [
                    {
                        "in": "path",
                        "name": "account_id",
                        "schema": {
                            "type": "integer"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "Cash Management"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/BankFeed"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/BankFeed"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/BankFeed"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "knoxApiToken": []
                    }
                ],
                "responses": {
                    "201": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Bank feed processed successfully"
                                        },
                                        "account_id": {
                                            "type": "integer"
                                        },
                                        "submitted_count": {
                                            "type": "integer"
                                        },
                                        "created_count": {
                                            "type": "integer"
                                        },
                                        "skipped_count": {
                                            "type": "integer"
                                        },
                                        "skipped_transactions": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "external_transaction_id": {
                                                        "type": "string"
                                                    },
                                                    "reason": {
                                                        "type": "string"
                                                    }
                                                }
                                            }
                                        },
                                        "failed_count": {
                                            "type": "integer"
                                        },
                                        "failed_transactions": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "external_transaction_id": {
                                                        "type": "string"
                                                    },
                                                    "reason": {
                                                        "type": "string"
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/ca/api/cash-basis": {
            "get": {
                "operationId": "ca_api_cash_basis_retrieve",
                "summary": "Get Cash Basis Income Statement",
                "parameters": [
                    {
                        "in": "query",
                        "name": "all_time",
                        "schema": {
                            "type": "boolean",
                            "default": false
                        },
                        "description": "If true, uses full transaction date range for the customer; start_date and end_date are ignored"
                    },
                    {
                        "in": "query",
                        "name": "cadence",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "daily",
                                "monthly",
                                "quarterly",
                                "weekly",
                                "yearly"
                            ],
                            "default": "monthly"
                        }
                    },
                    {
                        "in": "query",
                        "name": "end_date",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Latest date (inclusive) for which to retrieve data. Defaults to end of current month"
                    },
                    {
                        "in": "query",
                        "name": "entity",
                        "schema": {
                            "type": "integer"
                        },
                        "description": "Entity ID(s) to scope the report. Can be repeated (?entity=1&entity=2) or JSON array",
                        "explode": true,
                        "style": "form"
                    },
                    {
                        "in": "query",
                        "name": "entity_rollup",
                        "schema": {
                            "type": "boolean",
                            "default": false
                        },
                        "description": "If true, includes all data of children entities in consolidation"
                    },
                    {
                        "in": "query",
                        "name": "export",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "xlsx"
                            ]
                        },
                        "description": "If xlsx, returns Excel file (income_statement.xlsx) instead of JSON"
                    },
                    {
                        "in": "query",
                        "name": "group",
                        "schema": {
                            "type": "integer"
                        },
                        "description": "Tag group ID. Required when group_by=tag"
                    },
                    {
                        "in": "query",
                        "name": "group_by",
                        "schema": {
                            "type": "string"
                        },
                        "description": "Breakdown dimension: vendor, department, tag, currency, entity. For tag, also pass group (tag group ID). For cash-basis, department_row_children, department_row_parents, department_only normalize to department"
                    },
                    {
                        "in": "query",
                        "name": "rollup_totals",
                        "schema": {
                            "type": "boolean",
                            "default": true
                        },
                        "description": "If true, roll up child account totals to parent accounts. Set to false for export"
                    },
                    {
                        "in": "query",
                        "name": "start_date",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Earliest date (inclusive) for which to retrieve data. Defaults to six months ago"
                    },
                    {
                        "in": "query",
                        "name": "use_book_values",
                        "schema": {
                            "type": "boolean",
                            "default": false
                        },
                        "description": "If true, use book currency amounts instead of presentation currency"
                    }
                ],
                "tags": [
                    "Financial Statements"
                ],
                "security": [
                    {
                        "knoxApiToken": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/ca/api/cash-basis-operating-statement": {
            "get": {
                "operationId": "ca_api_cash_basis_operating_statement_retrieve",
                "summary": "Get Cash Basis Operating Statement",
                "parameters": [
                    {
                        "in": "query",
                        "name": "all_time",
                        "schema": {
                            "type": "boolean",
                            "default": false
                        },
                        "description": "If true, uses full transaction date range for the customer; start_date and end_date are ignored"
                    },
                    {
                        "in": "query",
                        "name": "cadence",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "daily",
                                "monthly",
                                "quarterly",
                                "weekly",
                                "yearly"
                            ],
                            "default": "monthly"
                        }
                    },
                    {
                        "in": "query",
                        "name": "end_date",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Latest date (inclusive) for which to retrieve data. Defaults to end of current month"
                    },
                    {
                        "in": "query",
                        "name": "entity",
                        "schema": {
                            "type": "integer"
                        },
                        "description": "Entity ID(s) to scope the report. Can be repeated (?entity=1&entity=2) or JSON array",
                        "explode": true,
                        "style": "form"
                    },
                    {
                        "in": "query",
     

# --- truncated at 32 KB (2009 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/campfire/refs/heads/main/openapi/campfire-openapi-original.json