{
  "operations": [
    {
      "name": "billing.bootstrap",
      "path": "/api/billing/bootstrap",
      "readOnly": false,
      "description": "Initialize billing defaults and create any missing standard accounts. Existing active accounts are preserved.",
      "bodyFields": [],
      "requestSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "billing.summary",
      "path": "/api/billing/summary",
      "readOnly": false,
      "description": "Summary. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [],
      "requestSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "billing.clients-overview",
      "path": "/api/billing/clients-overview",
      "readOnly": false,
      "description": "Clients overview. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [],
      "requestSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "billing.resolve-rate",
      "path": "/api/billing/resolve-rate",
      "readOnly": false,
      "description": "Resolve rate. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "matterId",
        "timekeeperId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "matterId": {
            "type": "string",
            "format": "uuid"
          },
          "timekeeperId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "billing.prebill",
      "path": "/api/billing/prebill",
      "readOnly": false,
      "description": "Prebill. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "clientId",
        "throughDate"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "clientId": {
            "type": "string",
            "format": "uuid"
          },
          "throughDate": {
            "type": "string",
            "format": "date"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "billing.invoices.create",
      "path": "/api/billing/invoices/create",
      "readOnly": false,
      "description": "Invoices create. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "clientId",
        "discountAmount",
        "dueDate",
        "expenseEntryIds",
        "flatMatterIds",
        "invoiceDate",
        "notes",
        "periodEnd",
        "timeEntryIds"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "clientId": {
            "type": "string",
            "format": "uuid"
          },
          "discountAmount": {
            "type": [
              "string",
              "number"
            ],
            "description": "Decimal value using the application workflow precision."
          },
          "dueDate": {
            "type": "string",
            "format": "date"
          },
          "expenseEntryIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "flatMatterIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "invoiceDate": {
            "type": "string",
            "format": "date"
          },
          "notes": {
            "type": "string"
          },
          "periodEnd": {
            "type": "string",
            "format": "date"
          },
          "timeEntryIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "billing.invoices.post",
      "path": "/api/billing/invoices/post",
      "readOnly": false,
      "description": "Invoices post. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "invoiceId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "invoiceId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "billing.invoices.void",
      "path": "/api/billing/invoices/void",
      "readOnly": false,
      "description": "Invoices void. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "invoiceId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "invoiceId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "billing.invoices.detail",
      "path": "/api/billing/invoices/detail",
      "readOnly": false,
      "description": "Invoices detail. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "invoiceId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "invoiceId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "billing.payments.receive",
      "path": "/api/billing/payments/receive",
      "readOnly": false,
      "description": "Payments receive. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "allocations",
        "clientId",
        "depositAccountCode",
        "memo",
        "method",
        "paymentDate",
        "reference"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "allocations": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "invoiceId": {
                  "type": "string",
                  "format": "uuid"
                },
                "amount": {
                  "type": [
                    "string",
                    "number"
                  ],
                  "description": "Payment amount in invoice currency."
                }
              },
              "required": [
                "invoiceId",
                "amount"
              ],
              "additionalProperties": false
            }
          },
          "clientId": {
            "type": "string",
            "format": "uuid"
          },
          "depositAccountCode": {
            "type": "string"
          },
          "memo": {
            "type": "string"
          },
          "method": {
            "type": "string"
          },
          "paymentDate": {
            "type": "string",
            "format": "date"
          },
          "reference": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "billing.payments.void",
      "path": "/api/billing/payments/void",
      "readOnly": false,
      "description": "Payments void. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "paymentId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "paymentId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "billing.trust.deposit",
      "path": "/api/billing/trust/deposit",
      "readOnly": false,
      "description": "Trust deposit. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "amount",
        "clientId",
        "description",
        "matterId",
        "reference",
        "txnDate"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "amount": {
            "type": [
              "string",
              "number"
            ],
            "description": "Decimal value using the application workflow precision."
          },
          "clientId": {
            "type": "string",
            "format": "uuid"
          },
          "description": {
            "type": "string"
          },
          "matterId": {
            "type": "string",
            "format": "uuid"
          },
          "reference": {
            "type": "string"
          },
          "txnDate": {
            "type": "string",
            "format": "date"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "billing.trust.disburse",
      "path": "/api/billing/trust/disburse",
      "readOnly": false,
      "description": "Trust disburse. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "amount",
        "clientId",
        "description",
        "matterId",
        "reference",
        "txnDate"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "amount": {
            "type": [
              "string",
              "number"
            ],
            "description": "Decimal value using the application workflow precision."
          },
          "clientId": {
            "type": "string",
            "format": "uuid"
          },
          "description": {
            "type": "string"
          },
          "matterId": {
            "type": "string",
            "format": "uuid"
          },
          "reference": {
            "type": "string"
          },
          "txnDate": {
            "type": "string",
            "format": "date"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "billing.trust.apply",
      "path": "/api/billing/trust/apply",
      "readOnly": false,
      "description": "Trust apply. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "amount",
        "clientId",
        "invoiceId",
        "matterId",
        "txnDate"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "amount": {
            "type": [
              "string",
              "number"
            ],
            "description": "Decimal value using the application workflow precision."
          },
          "clientId": {
            "type": "string",
            "format": "uuid"
          },
          "invoiceId": {
            "type": "string",
            "format": "uuid"
          },
          "matterId": {
            "type": "string",
            "format": "uuid"
          },
          "txnDate": {
            "type": "string",
            "format": "date"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "billing.trust.balances",
      "path": "/api/billing/trust/balances",
      "readOnly": false,
      "description": "Trust balances. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [],
      "requestSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "billing.vendor-bills.create",
      "path": "/api/billing/vendor-bills/create",
      "readOnly": false,
      "description": "Vendor bills create. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "amount",
        "billDate",
        "billNo",
        "category",
        "clientId",
        "dueDate",
        "expenseAccountCode",
        "isBillable",
        "matterId",
        "memo",
        "vendorContactId",
        "vendorName"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "amount": {
            "type": [
              "string",
              "number"
            ],
            "description": "Decimal value using the application workflow precision."
          },
          "billDate": {
            "type": "string",
            "format": "date"
          },
          "billNo": {},
          "category": {
            "type": "string"
          },
          "clientId": {
            "type": "string",
            "format": "uuid"
          },
          "dueDate": {
            "type": "string",
            "format": "date"
          },
          "expenseAccountCode": {
            "type": "string"
          },
          "isBillable": {
            "type": "boolean"
          },
          "matterId": {
            "type": "string",
            "format": "uuid"
          },
          "memo": {
            "type": "string"
          },
          "vendorContactId": {
            "type": "string",
            "format": "uuid"
          },
          "vendorName": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "billing.vendor-bills.pay",
      "path": "/api/billing/vendor-bills/pay",
      "readOnly": false,
      "description": "Vendor bills pay. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "amount",
        "method",
        "paymentAccountCode",
        "paymentDate",
        "reference",
        "vendorBillId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "amount": {
            "type": [
              "string",
              "number"
            ],
            "description": "Decimal value using the application workflow precision."
          },
          "method": {
            "type": "string"
          },
          "paymentAccountCode": {},
          "paymentDate": {
            "type": "string",
            "format": "date"
          },
          "reference": {
            "type": "string"
          },
          "vendorBillId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "billing.ar-aging",
      "path": "/api/billing/ar-aging",
      "readOnly": false,
      "description": "Ar aging. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [],
      "requestSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "billing.ap-aging",
      "path": "/api/billing/ap-aging",
      "readOnly": false,
      "description": "Ap aging. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [],
      "requestSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "billing.statements.generate",
      "path": "/api/billing/statements/generate",
      "readOnly": false,
      "description": "Statements generate. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "clientId",
        "endDate",
        "startDate"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "clientId": {
            "type": "string",
            "format": "uuid"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "startDate": {
            "type": "string",
            "format": "date"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "billing.clients.export",
      "path": "/api/billing/clients/export",
      "readOnly": false,
      "description": "Clients export. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "clientId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "clientId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "billing.clients.documents.list",
      "path": "/api/billing/clients/documents/list",
      "readOnly": false,
      "description": "Clients documents list. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "clientId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "clientId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "reports.cash-flow",
      "path": "/api/reports/cash-flow",
      "readOnly": true,
      "description": "Cash flow. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "endDate",
        "startDate",
        "tag"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "tag": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "reports.trial-balance",
      "path": "/api/reports/trial-balance",
      "readOnly": true,
      "description": "Trial balance. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "asOfDate",
        "tag"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "asOfDate": {
            "type": "string",
            "format": "date"
          },
          "tag": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "reports.cash-position",
      "path": "/api/reports/cash-position",
      "readOnly": true,
      "description": "Cash position. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "asOfDate"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "asOfDate": {
            "type": "string",
            "format": "date"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "reports.reconcile.start",
      "path": "/api/reports/reconcile/start",
      "readOnly": false,
      "description": "Reconcile start. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "accountCode",
        "endBalance",
        "statementDate"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "accountCode": {
            "type": "string"
          },
          "endBalance": {
            "type": [
              "string",
              "number"
            ],
            "description": "Decimal value using the application workflow precision."
          },
          "statementDate": {
            "type": "string",
            "format": "date"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "reports.reconcile.rows",
      "path": "/api/reports/reconcile/rows",
      "readOnly": true,
      "description": "Reconcile rows. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "accountCode",
        "statementDate"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "accountCode": {
            "type": "string"
          },
          "statementDate": {
            "type": "string",
            "format": "date"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "reports.reconcile.complete",
      "path": "/api/reports/reconcile/complete",
      "readOnly": false,
      "description": "Reconcile complete. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "ledgerIds",
        "sessionId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "ledgerIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "sessionId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "reports.reconcile.sessions",
      "path": "/api/reports/reconcile/sessions",
      "readOnly": true,
      "description": "Reconcile sessions. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [],
      "requestSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "reports.reconcile.cancel",
      "path": "/api/reports/reconcile/cancel",
      "readOnly": false,
      "description": "Reconcile cancel. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "sessionId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "reports.periods.list",
      "path": "/api/reports/periods/list",
      "readOnly": true,
      "description": "Periods list. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "year"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "year": {}
        },
        "additionalProperties": false
      }
    },
    {
      "name": "reports.periods.set",
      "path": "/api/reports/periods/set",
      "readOnly": false,
      "description": "Periods set. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "name",
        "reason",
        "status"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          },
          "status": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "reports.periods.closed",
      "path": "/api/reports/periods/closed",
      "readOnly": true,
      "description": "Periods closed. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [],
      "requestSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "reports.cash-forecast",
      "path": "/api/reports/cash-forecast",
      "readOnly": true,
      "description": "Cash forecast. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "horizonDays",
        "scenarioId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "horizonDays": {},
          "scenarioId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "reports.net-worth",
      "path": "/api/reports/net-worth",
      "readOnly": true,
      "description": "Net worth. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "granularity",
        "tag"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "granularity": {},
          "tag": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "reports.reconcile.auto-match",
      "path": "/api/reports/reconcile/auto-match",
      "readOnly": false,
      "description": "Reconcile auto match. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "accountCode",
        "endBalance",
        "statementDate"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "accountCode": {
            "type": "string"
          },
          "endBalance": {
            "type": [
              "string",
              "number"
            ],
            "description": "Decimal value using the application workflow precision."
          },
          "statementDate": {
            "type": "string",
            "format": "date"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "budgets.list",
      "path": "/api/budgets/list",
      "readOnly": true,
      "description": "List. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [],
      "requestSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "budgets.create",
      "path": "/api/budgets/create",
      "readOnly": false,
      "description": "Create. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "byEntity",
        "distribution",
        "factorPct",
        "fiscalYear",
        "name",
        "seed"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "byEntity": {
            "type": "boolean"
          },
          "distribution": {},
          "factorPct": {
            "type": [
              "string",
              "number"
            ],
            "description": "Decimal value using the application workflow precision."
          },
          "fiscalYear": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "seed": {}
        },
        "additionalProperties": false
      }
    },
    {
      "name": "budgets.lines",
      "path": "/api/budgets/lines",
      "readOnly": true,
      "description": "Lines. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "versionId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "versionId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "budgets.save-lines",
      "path": "/api/budgets/save-lines",
      "readOnly": false,
      "description": "Save lines. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "changes",
        "versionId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "changes": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "account_code": {
                  "type": "string"
                },
                "year_month": {
                  "type": "string",
                  "pattern": "^\\d{4}-\\d{2}$"
                },
                "amount": {
                  "type": [
                    "string",
                    "number"
                  ]
                },
                "tag": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "account_code",
                "year_month",
                "amount"
              ]
            }
          },
          "versionId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "budgets.revise",
      "path": "/api/budgets/revise",
      "readOnly": false,
      "description": "Revise. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "label",
        "versionId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string"
          },
          "versionId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "budgets.approve",
      "path": "/api/budgets/approve",
      "readOnly": false,
      "description": "Approve. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "approve",
        "versionId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "approve": {
            "type": "boolean"
          },
          "versionId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "budgets.bva",
      "path": "/api/budgets/bva",
      "readOnly": true,
      "description": "Bva. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "tag",
        "versionId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "tag": {
            "type": "string"
          },
          "versionId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "forecast.scenarios",
      "path": "/api/forecast/scenarios",
      "readOnly": false,
      "description": "Load forecast scenarios for a fiscal year, creating defaults when absent.",
      "bodyFields": [
        "fiscalYear"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "fiscalYear": {
            "type": "integer"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "forecast.save",
      "path": "/api/forecast/save",
      "readOnly": false,
      "description": "Save. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "assumptions",
        "notes",
        "scenarioId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "assumptions": {},
          "notes": {
            "type": "string"
          },
          "scenarioId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "forecast.compute",
      "path": "/api/forecast/compute",
      "readOnly": false,
      "description": "Compute. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "scenarioId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "scenarioId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "forecast.promote",
      "path": "/api/forecast/promote",
      "readOnly": false,
      "description": "Promote. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "label",
        "scenarioId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string"
          },
          "scenarioId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "forecast.accuracy",
      "path": "/api/forecast/accuracy",
      "readOnly": false,
      "description": "Accuracy. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "scenarioId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "scenarioId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "approvals.context",
      "path": "/api/approvals/context",
      "readOnly": true,
      "description": "Context. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [],
      "requestSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "approvals.list",
      "path": "/api/approvals/list",
      "readOnly": true,
      "description": "List. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [],
      "requestSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "approvals.je-request",
      "path": "/api/approvals/je-request",
      "readOnly": false,
      "description": "Je request. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "payload"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "payload": {
            "type": "object",
            "properties": {
              "date": {
                "type": "string",
                "format": "date"
              },
              "amount": {
                "type": [
                  "string",
                  "number"
                ]
              },
              "debitCode": {
                "type": "string"
              },
              "creditCode": {
                "type": "string"
              },
              "debitName": {
                "type": "string"
              },
              "creditName": {
                "type": "string"
              },
              "description": {
                "type": "string"
              }
            },
            "required": [
              "date",
              "amount",
              "debitCode",
              "creditCode"
            ]
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "approvals.je-decide",
      "path": "/api/approvals/je-decide",
      "readOnly": false,
      "description": "Je decide. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "approve",
        "note",
        "requestId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "approve": {
            "type": "boolean"
          },
          "note": {},
          "requestId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "approvals.bill-decide",
      "path": "/api/approvals/bill-decide",
      "readOnly": false,
      "description": "Bill decide. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "approve",
        "billId",
        "note"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "approve": {
            "type": "boolean"
          },
          "billId": {
            "type": "string",
            "format": "uuid"
          },
          "note": {}
        },
        "additionalProperties": false
      }
    },
    {
      "name": "approvals.recent",
      "path": "/api/approvals/recent",
      "readOnly": true,
      "description": "Recent. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [],
      "requestSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "ops.entities.list",
      "path": "/api/ops/entities/list",
      "readOnly": true,
      "description": "Entities list. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [],
      "requestSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "ops.entities.create",
      "path": "/api/ops/entities/create",
      "readOnly": false,
      "description": "Entities create. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "accountingFramework",
        "countryCode",
        "currency",
        "defaultTaxRate",
        "description",
        "entityCode",
        "entityName",
        "entityType",
        "fiscalYearEnd",
        "legalName",
        "ownershipPercent",
        "parentEntityId",
        "taxId",
        "taxName"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "accountingFramework": {
            "type": "string"
          },
          "countryCode": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "defaultTaxRate": {
            "type": [
              "string",
              "number"
            ],
            "description": "Decimal value using the application workflow precision."
          },
          "description": {
            "type": "string"
          },
          "entityCode": {
            "type": "string"
          },
          "entityName": {
            "type": "string"
          },
          "entityType": {
            "type": "string"
          },
          "fiscalYearEnd": {
            "type": "string"
          },
          "legalName": {
            "type": "string"
          },
          "ownershipPercent": {
            "type": [
              "string",
              "number"
            ],
            "description": "Decimal value using the application workflow precision."
          },
          "parentEntityId": {
            "type": "string",
            "format": "uuid"
          },
          "taxId": {
            "type": "string",
            "format": "uuid"
          },
          "taxName": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "ops.entities.update",
      "path": "/api/ops/entities/update",
      "readOnly": false,
      "description": "Entities update. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "accountingFramework",
        "countryCode",
        "currency",
        "defaultTaxRate",
        "description",
        "entityId",
        "entityName",
        "entityType",
        "fiscalYearEnd",
        "isActive",
        "legalName",
        "ownershipPercent",
        "parentEntityId",
        "taxId",
        "taxName"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "accountingFramework": {
            "type": "string"
          },
          "countryCode": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "defaultTaxRate": {
            "type": [
              "string",
              "number"
            ],
            "description": "Decimal value using the application workflow precision."
          },
          "description": {
            "type": "string"
          },
          "entityId": {
            "type": "string",
            "format": "uuid"
          },
          "entityName": {
            "type": "string"
          },
          "entityType": {
            "type": "string"
          },
          "fiscalYearEnd": {
            "type": "string"
          },
          "isActive": {
            "type": "boolean"
          },
          "legalName": {
            "type": "string"
          },
          "ownershipPercent": {
            "type": [
              "string",
              "number"
            ],
            "description": "Decimal value using the application workflow precision."
          },
          "parentEntityId": {
            "type": "string",
            "format": "uuid"
          },
          "taxId": {
            "type": "string",
            "format": "uuid"
          },
          "taxName": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "ops.items.list",
      "path": "/api/ops/items/list",
      "readOnly": true,
      "description": "Items list. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "entityId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "entityId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "ops.items.save",
      "path": "/api/ops/items/save",
      "readOnly": false,
      "description": "Items save. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "category",
        "description",
        "entityId",
        "id",
        "isActive",
        "itemName",
        "reorderPoint",
        "serialNo",
        "sku",
        "unitCost",
        "unitPrice"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "category": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "entityId": {
            "type": "string",
            "format": "uuid"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "isActive": {
            "type": "boolean"
          },
          "itemName": {
            "type": "string"
          },
          "reorderPoint": {
            "type": [
              "string",
              "number"
            ],
            "description": "Decimal value using the application workflow precision."
          },
          "serialNo": {
            "type": "string"
          },
          "sku": {
            "type": "string"
          },
          "unitCost": {
            "type": [
              "string",
              "number"
            ],
            "description": "Decimal value using the application workflow precision."
          },
          "unitPrice": {
            "type": [
              "string",
              "number"
            ],
            "description": "Decimal value using the application workflow precision."
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "ops.receipts.create",
      "path": "/api/ops/receipts/create",
      "readOnly": false,
      "description": "Receipts create. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "entityId",
        "itemId",
        "paidFrom",
        "quantity",
        "receiptDate",
        "reference",
        "unitCost",
        "vendorName"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "entityId": {
            "type": "string",
            "format": "uuid"
          },
          "itemId": {
            "type": "string",
            "format": "uuid"
          },
          "paidFrom": {},
          "quantity": {
            "type": [
              "string",
              "number"
            ],
            "description": "Decimal value using the application workflow precision."
          },
          "receiptDate": {
            "type": "string",
            "format": "date"
          },
          "reference": {
            "type": "string"
          },
          "unitCost": {
            "type": [
              "string",
              "number"
            ],
            "description": "Decimal value using the application workflow precision."
          },
          "vendorName": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "ops.receipts.list",
      "path": "/api/ops/receipts/list",
      "readOnly": true,
      "description": "Receipts list. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "entityId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "entityId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "ops.sales.create",
      "path": "/api/ops/sales/create",
      "readOnly": false,
      "description": "Sales create. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "amount",
        "customerName",
        "entityId",
        "lines",
        "notes",
        "paidBy",
        "reference",
        "saleDate",
        "taxAmount",
        "taxRate"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "amount": {
            "type": [
              "string",
              "number"
            ],
            "description": "Decimal value using the application workflow precision."
          },
          "customerName": {
            "type": "string"
          },
          "entityId": {
            "type": "string",
            "format": "uuid"
          },
          "lines": {},
          "notes": {
            "type": "string"
          },
          "paidBy": {},
          "reference": {
            "type": "string"
          },
          "saleDate": {
            "type": "string",
            "format": "date"
          },
          "taxAmount": {},
          "taxRate": {
            "type": [
              "string",
              "number"
            ],
            "description": "Decimal value using the application workflow precision."
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "ops.sales.list",
      "path": "/api/ops/sales/list",
      "readOnly": true,
      "description": "Sales list. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "entityId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "entityId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "ops.shipments.save",
      "path": "/api/ops/shipments/save",
      "readOnly": false,
      "description": "Shipments save. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "carrier",
        "declaredValue",
        "deliveredDate",
        "destinationCity",
        "destinationCountry",
        "destinationName",
        "entityId",
        "etaDate",
        "id",
        "notes",
        "paymentStatus",
        "reference",
        "salesReceiptId",
        "shipDate",
        "status",
        "trackingNo"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "carrier": {
            "type": "string"
          },
          "declaredValue": {},
          "deliveredDate": {
            "type": "string",
            "format": "date"
          },
          "destinationCity": {},
          "destinationCountry": {},
          "destinationName": {},
          "entityId": {
            "type": "string",
            "format": "uuid"
          },
          "etaDate": {
            "type": "string",
            "format": "date"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "notes": {
            "type": "string"
          },
          "paymentStatus": {},
          "reference": {
            "type": "string"
          },
          "salesReceiptId": {
            "type": "string",
            "format": "uuid"
          },
          "shipDate": {
            "type": "string",
            "format": "date"
          },
          "status": {
            "type": "string"
          },
          "trackingNo": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "ops.shipments.list",
      "path": "/api/ops/shipments/list",
      "readOnly": true,
      "description": "Shipments list. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "entityId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "entityId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "ops.shipments.map",
      "path": "/api/ops/shipments/map",
      "readOnly": true,
      "description": "Shipments map. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [],
      "requestSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "ops.deposits.create",
      "path": "/api/ops/deposits/create",
      "readOnly": false,
      "description": "Deposits create. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "amount",
        "bankAccountCode",
        "depositDate",
        "entityId",
        "notes",
        "reference"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "amount": {
            "type": [
              "string",
              "number"
            ],
            "description": "Decimal value using the application workflow precision."
          },
          "bankAccountCode": {},
          "depositDate": {
            "type": "string",
            "format": "date"
          },
          "entityId": {
            "type": "string",
            "format": "uuid"
          },
          "notes": {
            "type": "string"
          },
          "reference": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "ops.deposits.list",
      "path": "/api/ops/deposits/list",
      "readOnly": true,
      "description": "Deposits list. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "entityId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "entityId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "ops.documents.list",
      "path": "/api/ops/documents/list",
      "readOnly": true,
      "description": "Documents list. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "entityId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "entityId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "ops.documents.download",
      "path": "/api/ops/documents/download",
      "readOnly": true,
      "description": "Documents download. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "documentId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "documentId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "ops.documents.delete",
      "path": "/api/ops/documents/delete",
      "readOnly": false,
      "description": "Documents delete. Uses the company’s application workflow and accounting controls.",
      "bodyFields": [
        "documentId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "documentId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "billing.payments.setup",
      "path": "/api/billing/payments/setup",
      "readOnly": true,
      "description": "Check Stripe readiness, invoice delivery and the company fee. Return setupUrl when a person needs to finish setup.",
      "bodyFields": [],
      "requestSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "billing.payments.connect",
      "path": "/api/billing/payments/connect",
      "readOnly": false,
      "description": "Prepare a short-lived Stripe onboarding link for the company owner. First show the current fee and obtain authorization. The owner completes business verification at Stripe.",
      "bodyFields": [
        "country",
        "acceptedFeeBps"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "pattern": "^[A-Z]{2}$"
          },
          "acceptedFeeBps": {
            "type": "integer",
            "minimum": 0,
            "maximum": 10000
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "billing.invoices.stripe-link",
      "path": "/api/billing/invoices/stripe-link",
      "readOnly": false,
      "description": "Create or reuse a payment link for an open invoice on the company connected Stripe account. Includes the platform fee. Creating a link does not charge the customer.",
      "bodyFields": [
        "invoiceId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "invoiceId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "billing.invoices.email",
      "path": "/api/billing/invoices/email",
      "readOnly": false,
      "description": "Send the selected invoice to its saved client billing email, including a Stripe payment link when connected. Requires explicit user authorization to send. Do not retry an uncertain delivery under a new key.",
      "bodyFields": [
        "invoiceId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "invoiceId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "billing.payments.plans",
      "path": "/api/billing/payments/plans",
      "readOnly": true,
      "description": "List recurring plans, authorization links, agreed fees, cancellation status and provider adjustments needing review.",
      "bodyFields": [],
      "requestSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "billing.payments.plans.create",
      "path": "/api/billing/payments/plans/create",
      "readOnly": false,
      "description": "Prepare a weekly, monthly, quarterly or annual subscription authorization link. Amount is before the client saved taxes. Show cadence, total and fee to the user. The client authorizes the first payment at Stripe. The agent idempotency key is reused with Stripe.",
      "bodyFields": [
        "clientId",
        "description",
        "amount",
        "currency",
        "frequency"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "clientId": {
            "type": "string",
            "format": "uuid"
          },
          "description": {
            "type": "string",
            "maxLength": 200
          },
          "amount": {
            "type": "string",
            "pattern": "^[0-9]+(?:\\.[0-9]{1,2})?$"
          },
          "currency": {
            "type": "string",
            "enum": [
              "USD",
              "MXN",
              "CAD",
              "EUR",
              "GBP",
              "AUD",
              "NZD",
              "CHF",
              "SGD",
              "HKD"
            ]
          },
          "frequency": {
            "type": "string",
            "enum": [
              "weekly",
              "monthly",
              "quarterly",
              "yearly"
            ]
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "billing.payments.plans.cancel",
      "path": "/api/billing/payments/plans/cancel",
      "readOnly": false,
      "description": "Stop future subscription payments at the end of the current billing period, or expire an unused authorization link. Does not refund prior payments.",
      "bodyFields": [
        "planId"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "planId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "bank.connections",
      "path": "/api/plaid/items",
      "readOnly": true,
      "description": "Read bank connection readiness, automatic download preferences and last sync time. Setup URL requires the company owner to authenticate with Plaid.",
      "bodyFields": [],
      "requestSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "bank.downloaded",
      "path": "/api/plaid/downloaded",
      "readOnly": true,
      "description": "Read downloaded bank transactions, pending states and provider changes. Follow nextOffset until null. This inbox is not posted ledger data. Reconcile before importing or changing the books.",
      "bodyFields": [
        "item_id",
        "offset"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "item_id": {
            "type": "string"
          },
          "offset": {
            "type": "integer",
            "minimum": 0
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "bank.sync",
      "path": "/api/plaid/sync",
      "readOnly": false,
      "description": "Download current activity for one connection or all company connections into the durable inbox. Does not post ledger entries. Follow bank.downloaded pagination for the full history.",
      "bodyFields": [
        "item_id"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "item_id": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "bank.preferences",
      "path": "/api/plaid/preferences",
      "readOnly": false,
      "description": "Enable or pause background downloads for one connected bank. No bank transfer is made.",
      "bodyFields": [
        "item_id",
        "autoSync"
      ],
      "requestSchema": {
        "type": "object",
        "properties": {
          "item_id": {
            "type": "string"
          },
          "autoSync": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      }
    }
  ]
}
