addedInput schema / $schema
Added value: +"https://json-schema.org/draft/2020-12/schema"
changedInput schema / properties / accountIds / description
Previous value: -"Only these accounts (Account.Id list). For one account's transactions run GeneralLedger with accountIds. Works on: ProfitAndLoss, GeneralLedger, ProfitAndLossDetail."New value: +"P&L, GeneralLedger, P&L detail."
changedInput schema / properties / accountStatus / description
Previous value: -"Deleted or live accounts. Works on: AccountList."New value: +"AccountList."
changedInput schema / properties / accountType / description
Previous value: -"Only accounts of this type. Works on: AccountList, GeneralLedger, ProfitAndLossDetail."New value: +"AccountList, GeneralLedger, P&L detail."
changedInput schema / properties / accountingMethod / description
Previous value: -"Omit for the company default basis (qbCompanyProfile reportBasis). BudgetVsActuals defaults to Accrual. Refused on the agings, balances, transaction lists, JournalReport, AccountList and inventory: same numbers either way."New value: +"Omit for the company basis."
changedInput schema / properties / adjustedGainLoss / description
Previous value: -"Multi-currency companies: include unrealized gains and losses. Works on: ProfitAndLoss, ProfitAndLossByClass, BalanceSheet, ProfitAndLossDetail."New value: +"Multi-currency P&L and BalanceSheet."
changedInput schema / properties / agingPeriod / description
Previous value: -"Days per aging bucket (default 30). Works on: AgedReceivablesDetail, AgedPayablesDetail, AgedReceivables, AgedPayables."New value: +"Days per bucket (30)."
removedInput schema / properties / amount / description
Removed value: -"Exact transaction amount. Works on: the transaction lists except WithSplits."
changedInput schema / properties / apPaid / description
Previous value: -"Payable documents: All, Paid or Unpaid. Works on: the transaction lists except WithSplits, VendorBalance, VendorBalanceDetail."New value: +"Also VendorBalance[Detail]."
changedInput schema / properties / arPaid / description
Previous value: -"Receivable documents: All, Paid or Unpaid. Works on: the transaction lists except WithSplits, CustomerBalance, CustomerBalanceDetail."New value: +"Also CustomerBalance[Detail]."
changedInput schema / properties / budgetId / description
Previous value: -"BudgetVsActuals only. Omit to use the one active budget covering the period; when several or none do, the result lists the budgets to pick from."New value: +"BudgetVsActuals; omit for the active budget."
removedInput schema / properties / classIds / description
Removed value: -"Only these classes (Class.Id list; needs class tracking)."
removedInput schema / properties / cleared / description
Removed value: -"Bank-reconciliation status. Works on: the transaction lists."
changedInput schema / properties / columns / description
Previous value: -"Column keys to return, in QuickBooks' own order. The money key differs per report: subt_nat_amount (TransactionList, GeneralLedger, ProfitAndLossDetail), amount (TransactionListByCustomer, TransactionListWithSplits), nat_amount (TransactionListByVendor), debt_amt/credit_amt (JournalReport). TransactionList has no split or other-account column: use TransactionListWithSplits, or GeneralLedger, where split_acc stands in for account_name (as on ProfitAndLossDetail). Choosing columns on GeneralLedger/ProfitAndLossDetail drops the subtotal rows. Works on: the transaction lists, the aging and balance details, AccountList, GeneralLedger, JournalReport, ProfitAndLossDetail."New value: +"Detail/list reports; drops subtotals."
addedInput schema / properties / companyId
Added value: +{
+ "type": "string"
+}
removedInput schema / properties / customerIds / description
Removed value: -"Only these customers (Customer.Id list)."
removedInput schema / properties / departmentIds / description
Removed value: -"Only these locations/departments (Department.Id list; needs location tracking)."
changedInput schema / properties / dimensionId / description
Previous value: -"The dimension to total by. Works on: SalesByDimension."New value: +"SalesByDimension."
removedInput schema / properties / docNum / description
Removed value: -"Document/reference number to match. Works on: the transaction lists, GeneralLedger, JournalReport."
changedInput schema / properties / dueDateEnd / description
Previous value: -"Only documents due on or before this date. Works on: the transaction lists except WithSplits, the aging and balance details."New value: +"Also agings/balance details."
changedInput schema / properties / dueDateStart / description
Previous value: -"Only documents due on or after this date. Works on: the transaction lists except WithSplits, the aging and balance details."New value: +"Also agings/balance details."
changedInput schema / properties / employeeIds / description
Previous value: -"Only these employees (Employee.Id list). Works on: ProfitAndLossDetail."New value: +"P&L detail."
removedInput schema / properties / endDate / description
Removed value: -"Period end, or the as-of date on an as-of report. YYYY-MM-DD. Required except on AccountList."
addedInput schema / properties / format
Added value: +{
+ "enum": [
+ "text",
+ "json"
+ ],
+ "type": "string"
+}
removedInput schema / properties / groupBy / description
Removed value: -"Group rows into sections by this field; None = a flat list. Works on: the transaction lists."
removedInput schema / properties / itemIds / description
Removed value: -"Only these products/services (Item.Id list)."
removedInput schema / properties / maxRows / description
Removed value: -"Rows per page (default 500)."
removedInput schema / properties / memo / description
Removed value: -"Memo text to match. GeneralLedger has no text, status or amount filter: pull the account's ledger and filter the rows yourself. Works on: the transaction lists except WithSplits."
changedInput schema / properties / modifiedEnd / description
Previous value: -"Only records last modified on or before this date. Works on: the transaction lists except WithSplits, AccountList."New value: +"Also AccountList."
changedInput schema / properties / modifiedStart / description
Previous value: -"Only records last modified on or after this date. Works on: the transaction lists except WithSplits, AccountList."New value: +"Also AccountList."
changedInput schema / properties / nameIds / description
Previous value: -"Only these names: any Customer, Vendor or Employee Id. Works on: the transaction lists, GeneralLedger, JournalReport."New value: +"Customer, vendor or employee ids."
changedInput schema / properties / numPeriods / description
Previous value: -"Number of aging buckets (default 4). Works on: AgedReceivablesDetail, AgedPayablesDetail, AgedReceivables, AgedPayables."New value: +"Buckets (4)."
changedInput schema / properties / pastDue / description
Previous value: -"Only documents at least this many days past due. Works on: AgedReceivablesDetail, AgedPayablesDetail."New value: +"Aged details."
changedInput schema / properties / paymentMethod / description
Previous value: -"Payment method NAME as QuickBooks shows it (Cash, Check, Visa, ...), not an id. Works on: the transaction lists, ProfitAndLossDetail."New value: +"Method NAME. Also P&L detail."
removedInput schema / properties / printed / description
Removed value: -"Whether checks were printed. Works on: the transaction lists except WithSplits."
removedInput schema / properties / reportType / description
Removed value: -"The report to run."
removedInput schema / properties / rowOffset / description
Removed value: -"0-based row offset for the next page. A page can start mid-section, so [Section] headers from earlier pages still apply."
changedInput schema / properties / shipVia / description
Previous value: -"Shipping method name as stored on the invoice. Works on: AgedReceivablesDetail, CustomerBalanceDetail."New value: +"AR aging/balance details."
changedInput schema / properties / sortBy / description
Previous value: -"Detail/list reports: column key to sort by. A money column sorts alphabetically, not numerically; AccountList ignores account_bal (sort by account_name or detail_acc_type)."New value: +"Money columns sort alphabetically."
removedInput schema / properties / sortOrder / description
Removed value: -"ascend or descend, with or without sortBy."
changedInput schema / properties / sourceAccountIds / description
Previous value: -"Only postings whose source bank/credit-card account is one of these. Works on: GeneralLedger."New value: +"GeneralLedger."
removedInput schema / properties / sourceAccountType / description
Removed value: -"Only transactions whose source account is of this type. Works on: the transaction lists, GeneralLedger, JournalReport."
removedInput schema / properties / startDate / description
Removed value: -"Period start, YYYY-MM-DD. Period reports only: refused on AccountList, ignored on as-of reports."
removedInput schema / properties / summarizeBy / description
Removed value: -"One column per period or entity, plus a Total column. Only on the reports the description lists."
changedInput schema / properties / termIds / description
Previous value: -"Only documents on these payment terms (Term.Id list). Works on: the transaction lists except WithSplits, the aging and balance details."New value: +"Also agings/balance details."
changedInput schema / properties / transactionType / description
Previous value: -"Only this transaction type (one value; a list is rejected). Works on: the transaction lists, GeneralLedger, JournalReport."New value: +"One value."
removedInput schema / properties / vendorIds / description
Removed value: -"Only these vendors (Vendor.Id list)."
changedOutput schema / (root)
Previous value: -{
- "additionalProperties": false,
- "properties": {
- "company": {
- "additionalProperties": false,
- "description": "The company this result came from. Read it back to the user by name.",
- "properties": {
- "name": {
- "description": "DeepLedger client name.",
- "type": "string"
- },
- "organizationId": {
- "description": "DeepLedger organization id the call operated on.",
- "type": "string"
- },
- "qbCompanyName": {
- "description": "QuickBooks company name, when connected.",
- "type": "string"
- },
- "setAt": {
- "description": "When the active company was last set (source \"active\" only).",
- "type": "string"
- },
- "setBy": {
- "description": "Who last set the active company (source \"active\" only).",
- "enum": [
- "mcp",
- "portal",
- "backfill"
- ],
- "type": "string"
- },
- "source": {
- "description": "How the company was chosen: \"active\" = the user's switchable active company; \"pinned\" = fixed by the credential; \"header\" = fixed by X-Organization-Id; \"system\" = an unattended routine credential.",
- "enum": [
- "system",
- "header",
- "pinned",
- "active"
- ],
- "type": "string"
- }
- },
- "required": [
- "organizationId"
- ],
- "type": "object"
- },
- "count": {
- "description": "Number of rows returned in this response (after maxRows/rowOffset paging)",
- "type": "number"
- },
- "data": {
- "additionalProperties": false,
- "description": "Report data with columns and rows",
- "properties": {
- "columns": {
- "description": "Pipe-separated column headers. Authoritative EXCEPT on SalesByProduct, where QuickBooks declares two columns over eight-wide rows and the tool substitutes the real header list.",
- "type": "string"
- },
- "rows": {
- "description": "Pipe-separated row data",
- "items": {
- "type": "string"
- },
- "type": "array"
- }
- },
- "required": [
- "columns",
- "rows"
- ],
- "type": "object"
- },
- "errorCode": {
- "description": "Stable code when success=false — QuickBooks codes (e.g. 5020) or one of MISSING_END_DATE, MISSING_START_DATE, INVALID_DATE, DATE_RANGE_INVERTED, PARAM_NOT_SUPPORTED, INVALID_PARAM, DATES_NOT_ALLOWED, MISSING_DIMENSION_ID, DIMENSION_NOT_FOUND, NO_BUDGETS, MULTIPLE_BUDGETS, NO_BUDGET_FOR_PERIOD, BUDGET_NOT_FOUND, BUDGET_TYPE_UNSUPPORTED, BUDGET_LOOKUP_FAILED, REPORT_FAILED, QB_NOT_CONNECTED, TOKEN_EXPIRED. Branch on this instead of parsing the message.",
- "type": "string"
- },
- "message": {
- "type": "string"
- },
- "reportDate": {
- "description": "Report date range",
- "type": "string"
- },
- "reportName": {
- "description": "Report name from QuickBooks",
- "type": "string"
- },
- "success": {
- "type": "boolean"
- },
- "summary": {
- "anyOf": [
- {
- "additionalProperties": false,
- "properties": {
- "accountCount": {
- "description": "GeneralLedger: number of accounts in the report. TrialBalance: number of accounts listed. NOT a row count — see totalRows for that.",
- "type": "number"
- },
- "balanced": {
- "description": "TrialBalance only: whether total debits equal total credits.",
- "type": "boolean"
- },
- "beginningCash": {
- "type": "number"
- },
- "classCount": {
- "type": "number"
- },
- "customerCount": {
- "type": "number"
- },
- "departmentCount": {
- "type": "number"
- },
- "documents": {
- "description": "SalesByDimension: documents.",
- "type": "number"
- },
- "endingCash": {
- "type": "number"
- },
- "financingCash": {
- "type": "number"
- },
- "grossProfit": {
- "description": "Income minus cost of goods sold. QuickBooks emits a Gross Profit line on every P&L, so on a company with no COGS section this equals totalIncome.",
- "type": "number"
- },
- "investingCash": {
- "type": "number"
- },
- "net": {
- "description": "SalesByDimension: net sales.",
- "type": "number"
- },
- "netAssets": {
- "description": "GB-style statutory balance sheets have no Total Assets/Total Liabilities lines; net assets (= equity) is the bottom line instead.",
- "type": "number"
- },
- "netCashChange": {
- "type": "number"
- },
- "netIncome": {
- "description": "The bottom line (Net Income; \"Net Revenue\" on a nonprofit). Equals totalIncome - totalCogs - totalExpenses + totalOtherIncome - totalOtherExpenses, NOT totalIncome - totalExpenses: the Other Income and Other Expenses sections sit below Net Operating Income and are excluded from those two.",
- "type": "number"
- },
- "netIncomeActual": {
- "type": "number"
- },
- "netIncomeBudget": {
- "type": "number"
- },
- "netIncomeVariance": {
- "type": "number"
- },
- "netOperatingIncome": {
- "description": "grossProfit - totalExpenses (\"Net Operating Revenue\" on a nonprofit).",
- "type": "number"
- },
- "netOtherIncome": {
- "description": "totalOtherIncome - totalOtherExpenses.",
- "type": "number"
- },
- "notTagged": {
- "description": "SalesByDimension: on untagged lines.",
- "type": "number"
- },
- "operatingCash": {
- "type": "number"
- },
- "productCount": {
- "type": "number"
- },
- "rowCount": {
- "type": "number"
- },
- "tagged": {
- "description": "SalesByDimension: on tagged lines.",
- "type": "number"
- },
- "totalAssetValue": {
- "description": "InventoryValuationSummary: total inventory asset value as of endDate.",
- "type": "number"
- },
- "totalAssets": {
- "type": "number"
- },
- "totalCogs": {
- "description": "Total Cost of Goods Sold. Absent when the company has no COGS section.",
- "type": "number"
- },
- "totalCredits": {
- "type": "number"
- },
- "totalDebits": {
- "type": "number"
- },
- "totalEquity": {
- "type": "number"
- },
- "totalExpenses": {
- "description": "Total of the Expenses section only; Other Expenses is reported separately in totalOtherExpenses.",
- "type": "number"
- },
- "totalExpensesActual": {
- "type": "number"
- },
- "totalExpensesBudget": {
- "type": "number"
- },
- "totalIncome": {
- "description": "Total of the Income section only; Other Income is reported separately in totalOtherIncome.",
- "type": "number"
- },
- "totalIncomeActual": {
- "type": "number"
- },
- "totalIncomeBudget": {
- "type": "number"
- },
- "totalLiabilities": {
- "type": "number"
- },
- "totalOtherExpenses": {
- "description": "Total Other Expenses. Absent when the company has no such section.",
- "type": "number"
- },
- "totalOtherIncome": {
- "description": "Total Other Income (released from restriction, in-kind, interest, gains). Absent when the company has no such section.",
- "type": "number"
- },
- "totalOutstanding": {
- "type": "number"
- },
- "type": {
- "type": "string"
- },
- "vendorCount": {
- "type": "number"
- }
- },
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "description": "Key metrics extracted from report. null when QuickBooks returned no rows at all."
- },
- "totalRows": {
- "description": "Total data rows in the full report. When totalRows > count, page with rowOffset.",
- "type": "number"
- },
- "warning": {
- "description": "Present once after the active company was changed by something other than this connection (the portal, or another AI client). Confirm the company with the user before writing.",
- "type": "string"
- }
- },
- "required": [
- "success",
- "message"
- ],
- "type": "object"
-}New value: +null