Light API

REST API for the Light accounting and financial-operations platform. 183 operations across 28 resource groups covering the general ledger, accounts payable and receivable, bank accounts and reconciliation, cards and card transactions, expenses, contracts, purchase orders and master data. JSON in camelCase, cursor or offset pagination with a field:operator:value filter grammar, an X-Idempotency-Key header on 14 write operations, and API-key or OAuth 2.0 bearer authentication.

OpenAPI Specification

light-openapi-original.json Raw ↑
{
  "openapi" : "3.0.1",
  "info" : {
    "title" : "Light API",
    "version" : "1.0.0"
  },
  "security" : [ {
    "apiKeyAuth" : [ ]
  }, {
    "bearerAuth" : [ ]
  } ],
  "paths" : {
    "/oauth/token" : {
      "post" : {
        "tags" : [ "Authorization" ],
        "summary" : "Create access token",
        "description" : "Exchanges an authorization code or refresh token for an access token",
        "operationId" : "getOAuthToken",
        "requestBody" : {
          "content" : {
            "application/x-www-form-urlencoded" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "client_id" : {
                    "type" : "string"
                  },
                  "client_secret" : {
                    "type" : "string"
                  },
                  "grant_type" : {
                    "type" : "string"
                  },
                  "code" : {
                    "type" : "string"
                  },
                  "redirect_uri" : {
                    "type" : "string"
                  },
                  "refresh_token" : {
                    "type" : "string"
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "description" : "default response",
            "content" : {
              "application/json;charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExternalOauthToken"
                }
              }
            }
          }
        }
      }
    },
    "/oauth/authorize" : {
      "get" : {
        "tags" : [ "Authorization" ],
        "summary" : "Start authorization flow",
        "description" : "Redirects the user to the authorization page to start the OAuth V2 authorization flow",
        "operationId" : "startOAuthAuthorizationFlow",
        "parameters" : [ {
          "name" : "redirect_uri",
          "in" : "query",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "state",
          "in" : "query",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "client_id",
          "in" : "query",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "default response",
            "content" : {
              "application/json;charset=UTF-8" : { }
            }
          }
        }
      }
    },
    "/v1/accounting-documents/accounting-documents" : {
      "get" : {
        "tags" : [ "v1 - Accounting Documents" ],
        "summary" : "List accounting documents",
        "description" : "Returns a paginated list of accounting documents",
        "operationId" : "listAccountingDocuments",
        "parameters" : [ {
          "name" : "sort",
          "in" : "query",
          "schema" : {
            "type" : "string",
            "description" : "Sort string in the format `field:direction`. To provide multiple sort fields, separate them with commas.\n\nAvailable directions: `asc`, `desc`. \n\nAvailable fields: `companyEntityId`, `documentSequenceId`, `postingDate`, `valuationDate`, `documentDate`, `businessPartnerName`, `status`, `createdBy`, `createdAt`, `description`, `documentNumber`, `arDueDate`, `arOpenedAt`, `ctPerformedAt`, `ctStatus`, `ctAmount`, `ccAmount`.",
            "example" : "amount:desc,createdAt:asc"
          }
        }, {
          "name" : "filter",
          "in" : "query",
          "schema" : {
            "type" : "string",
            "description" : "Filter string in the format `field:operator:value`. To provide multiple filters, separate them with commas.\n\nAvailable operators: `eq`, `ne`, `in`, `not_in`, `gt`, `gte`, `lt`, `lte`.\n - For `in` and `not_in` operators, provide multiple values separated by the pipe character (`|`). \n\nAvailable fields: `id`, `documentSequenceId`, `documentNumber`, `documentType`, `companyEntityId`, `ledgerName`, `businessPartnerName`, `businessPartnerId`, `status`, `currency`, `postingDate`, `documentDate`, `valuationDate`, `createdAt`, `updatedAt`, `createdBy`, `intercompanyDocumentId`, `apDueDate`, `apState`, `apVendorId`, `arContractId`, `arDueDate`, `arCustomerId`, `arInvoiceTemplateId`, `arPayeeBankAccountId`, `arOpenedAt`, `arState`, `ctCardId`, `ctCardBalanceAccountId`, `ctStatus`, `ctPerformedAt`, `cnToBeAdjustedAccDocType`, `intercompanyJournalEntryId`, `ycAccountingYearId`, `accountCode`, `accountLabel`, `taxCode`.",
            "example" : "state:in:IN_DRAFT|SCHEDULED|PAID,amount:gte:500,vendorId:ne:null"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of items to return. Default is 50, maximum is 200.",
          "schema" : {
            "maximum" : 200,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "offset",
          "in" : "query",
          "description" : "Number of items to skip before starting to collect the result set. Deprecated, use 'cursor' instead.",
          "deprecated" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "cursor",
          "in" : "query",
          "description" : "The cursor position to start returning results from.\nTo opt-in into cursor-based pagination, provide `0` for the initial request.\nFor subsequent requests, use `nextCursor` and `prevCursor` from the previous response to navigate.\nCursor values are opaque and should not be constructed manually.",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "default response",
            "content" : {
              "application/json;charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExternalPaginatedResponseV1ModelExternalAccountingDocumentWithAmountV1Model"
                }
              }
            }
          }
        }
      }
    },
    "/v1/attachments" : {
      "get" : {
        "tags" : [ "v1 - Attachments" ],
        "summary" : "List attachments",
        "description" : "Returns a list of attachments associated with a specific resource",
        "operationId" : "getAttachments",
        "parameters" : [ {
          "name" : "resourceId",
          "in" : "query",
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "default response",
            "content" : {
              "application/json;charset=UTF-8" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ExternalAttachmentV1Model"
                  }
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "v1 - Attachments" ],
        "summary" : "Create attachment",
        "description" : "Creates a new attachment record",
        "operationId" : "createAttachment",
        "requestBody" : {
          "content" : {
            "application/json;charset=UTF-8" : {
              "schema" : {
                "$ref" : "#/components/schemas/ExternalCreateAttachmentRequestV1Model"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "description" : "default response",
            "content" : {
              "application/json;charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExternalAttachmentV1Model"
                }
              }
            }
          }
        }
      }
    },
    "/v1/attachments/upload-url" : {
      "post" : {
        "tags" : [ "v1 - Attachments" ],
        "summary" : "Generate attachment upload URL",
        "description" : "Generates a secure upload URL for attachment files",
        "operationId" : "createAttachmentUploadUrl",
        "requestBody" : {
          "content" : {
            "application/json;charset=UTF-8" : {
              "schema" : {
                "$ref" : "#/components/schemas/ExternalUploadAttachmentRequestV1Model"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "description" : "default response",
            "content" : {
              "application/json;charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExternalAttachmentUploadUrlResponseV1Model"
                }
              }
            }
          }
        }
      }
    },
    "/v1/attachments/{attachmentId}" : {
      "delete" : {
        "tags" : [ "v1 - Attachments" ],
        "summary" : "Delete attachment",
        "description" : "Deletes a specific attachment and its associated file",
        "operationId" : "deleteAttachment",
        "parameters" : [ {
          "name" : "attachmentId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "default response",
            "content" : {
              "application/json;charset=UTF-8" : { }
            }
          }
        }
      }
    },
    "/v1/attachments/{attachmentId}/document" : {
      "get" : {
        "tags" : [ "v1 - Attachments" ],
        "summary" : "Get attachment document",
        "description" : "Returns the document file for a specific attachment",
        "operationId" : "getAttachmentDocument",
        "parameters" : [ {
          "name" : "attachmentId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "default response",
            "content" : {
              "application/json;charset=UTF-8" : { }
            }
          }
        }
      },
      "options" : {
        "tags" : [ "v1 - Attachments" ],
        "summary" : "Get attachment options",
        "description" : "Handles CORS preflight requests for attachment document access",
        "operationId" : "getAttachmentDocumentOptions",
        "parameters" : [ {
          "name" : "attachmentId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json;charset=UTF-8" : {
              "schema" : {
                "$ref" : "#/components/schemas/LightPrincipal"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "description" : "default response",
            "content" : {
              "application/json;charset=UTF-8" : { }
            }
          }
        }
      }
    },
    "/v1/bank-accounts" : {
      "get" : {
        "tags" : [ "v1 - Bank Accounts" ],
        "summary" : "Get bank accounts of the company",
        "description" : "Returns all bank accounts of the company",
        "operationId" : "getBankAccountsForCompany",
        "responses" : {
          "default" : {
            "description" : "default response",
            "content" : {
              "application/json;charset=UTF-8" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ExternalBankAccountV1Model"
                  }
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "v1 - Bank Accounts" ],
        "summary" : "Create bank account",
        "description" : "Creates a bank account along with its linked ledger (chart-of-accounts) entry in a single transaction. The ledger account code must be a unique 6-digit integer within the company's chart of accounts.",
        "operationId" : "createBankAccount",
        "requestBody" : {
          "content" : {
            "application/json;charset=UTF-8" : {
              "schema" : {
                "$ref" : "#/components/schemas/ExternalCreateBankAccountRequestV1Model"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "description" : "default response",
            "content" : {
              "application/json;charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExternalBankAccountV1Model"
                }
              }
            }
          }
        }
      }
    },
    "/v1/bank-accounts/{bankAccountId}/bank-transactions" : {
      "get" : {
        "tags" : [ "v1 - Bank Accounts" ],
        "summary" : "List bank transactions",
        "description" : "Returns a paginated list of bank transactions for the specified bank account, including the balance",
        "operationId" : "listBankTransactions",
        "parameters" : [ {
          "name" : "bankAccountId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "schema" : {
            "type" : "string",
            "description" : "Sort string in the format `field:direction`. To provide multiple sort fields, separate them with commas.\n\nAvailable directions: `asc`, `desc`. \n\nAvailable fields: `reconciliationStatus`, `dcSign`, `date`, `amount`, `name`, `memo`.",
            "example" : "amount:desc,createdAt:asc"
          }
        }, {
          "name" : "filter",
          "in" : "query",
          "schema" : {
            "type" : "string",
            "description" : "Filter string in the format `field:operator:value`. To provide multiple filters, separate them with commas.\n\nAvailable operators: `eq`, `ne`, `in`, `not_in`, `gt`, `gte`, `lt`, `lte`.\n - For `in` and `not_in` operators, provide multiple values separated by the pipe character (`|`). \n\nAvailable fields: `reconciliationStatus`, `dcSign`, `date`.",
            "example" : "state:in:IN_DRAFT|SCHEDULED|PAID,amount:gte:500,vendorId:ne:null"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of items to return. Default is 50, maximum is 200.",
          "schema" : {
            "maximum" : 200,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "offset",
          "in" : "query",
          "description" : "Number of items to skip before starting to collect the result set. Deprecated, use 'cursor' instead.",
          "deprecated" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "cursor",
          "in" : "query",
          "description" : "The cursor position to start returning results from.\nTo opt-in into cursor-based pagination, provide `0` for the initial request.\nFor subsequent requests, use `nextCursor` and `prevCursor` from the previous response to navigate.\nCursor values are opaque and should not be constructed manually.",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "default response",
            "content" : {
              "application/json;charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExternalGetAllResponseWithBalanceV1ModelExternalBankTransactionV1Model"
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "v1 - Bank Accounts" ],
        "summary" : "Create bank transactions",
        "description" : "Creates bank transactions in batch. Maximum 500 transactions per request. Duplicate transactions (same transactionId for the same bank account) are silently skipped.",
        "operationId" : "createBankTransactions",
        "parameters" : [ {
          "name" : "bankAccountId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json;charset=UTF-8" : {
              "schema" : {
                "$ref" : "#/components/schemas/ExternalCreateBankTransactionsRequestV1Model"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "description" : "default response",
            "content" : {
              "application/json;charset=UTF-8" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ExternalBankTransactionV1Model"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/bank-accounts/{bankAccountId}/balance" : {
      "get" : {
        "tags" : [ "v1 - Bank Accounts" ],
        "summary" : "Get bank account balance",
        "description" : "Returns the bank statement balance and ledger balance for a bank account as of the given date. If `asOf` is omitted, today's balance is returned. The bank balance is derived from the opening balance plus all bank transactions on or before `asOf`; the ledger balance is the sum of ledger transaction lines posted on or before `asOf` for the linked ledger account.",
        "operationId" : "getBankAccountBalance",
        "parameters" : [ {
          "name" : "bankAccountId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        }, {
          "name" : "asOf",
          "in" : "query",
          "description" : "Date the balance is computed for (ISO-8601, e.g. `2026-05-07`). Defaults to today.",
          "schema" : {
            "$ref" : "#/components/schemas/LocalDateParam"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "default response",
            "content" : {
              "application/json;charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExternalBankAccountBalanceAsOfV1Model"
                }
              }
            }
          }
        }
      },
      "put" : {
        "tags" : [ "v1 - Bank Accounts" ],
        "summary" : "Upsert bank account balance",
        "description" : "Creates or updates the opening balance for a bank account. Only one balance per bank account is allowed — subsequent calls update the existing balance.",
        "operationId" : "upsertBankAccountBalance",
        "parameters" : [ {
          "name" : "bankAccountId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json;charset=UTF-8" : {
              "schema" : {
                "$ref" : "#/components/schemas/ExternalUpsertBankAccountBalanceRequestV1Model"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "description" : "default response",
            "content" : {
              "application/json;charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExternalBankAccountBalanceV1Model"
                }
              }
            }
          }
        }
      }
    },
    "/v1/bank-accounts/{bankAccountId}/bank-transactions/{bankTransactionId}" : {
      "get" : {
        "tags" : [ "v1 - Bank Accounts" ],
        "summary" : "Get bank transaction",
        "description" : "Returns a specific bank transaction by ID",
        "operationId" : "getBankTransaction",
        "parameters" : [ {
          "name" : "bankAccountId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        }, {
          "name" : "bankTransactionId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "default response",
            "content" : {
              "application/json;charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExternalBankTransactionV1Model"
                }
              }
            }
          }
        }
      }
    },
    "/v1/bff/invoice-payables" : {
      "get" : {
        "tags" : [ "v1 - Invoice Payables" ],
        "summary" : "List invoice payables",
        "description" : "Returns a paginated list of invoice payables",
        "operationId" : "listInvoicePayables",
        "parameters" : [ {
          "name" : "sort",
          "in" : "query",
          "schema" : {
            "type" : "string",
            "description" : "Sort string in the format `field:direction`. To provide multiple sort fields, separate them with commas.\n\nAvailable directions: `asc`, `desc`. \n\nAvailable fields: `amount`, `canceledAt`, `companyEntityName`, `description`, `dueDate`, `fromAccountName`, `createdAt`, `invoiceNumber`, `issuedDate`, `ocrCompletedAt`, `paymentAt`, `senderEmail`, `state`, `vendorName`, `businessPartnerName`, `nextApproverName`.",
            "example" : "amount:desc,createdAt:asc"
          }
        }, {
          "name" : "filter",
          "in" : "query",
          "schema" : {
            "type" : "string",
            "description" : "Filter string in the format `field:operator:value`. To provide multiple filters, separate them with commas.\n\nAvailable operators: `eq`, `ne`, `in`, `not_in`, `gt`, `gte`, `lt`, `lte`.\n - For `in` and `not_in` operators, provide multiple values separated by the pipe character (`|`). \n\nAvailable fields: `approverUserId`, `id`, `vendorId`, `userId`, `companyEntityId`, `senderBankAccountId`, `amount`, `description`, `documentNumber`, `dueDate`, `issuedDate`, `paymentAt`, `createdAt`, `updatedAt`, `state`, `vendorName`, `userFirstName`, `userLastName`, `type`.",
            "example" : "state:in:IN_DRAFT|SCHEDULED|PAID,amount:gte:500,vendorId:ne:null"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of items to return. Default is 50, maximum is 200.",
          "schema" : {
            "maximum" : 200,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "offset",
          "in" : "query",
          "description" : "Number of items to skip before starting to collect the result set. Deprecated, use 'cursor' instead.",
          "deprecated" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "cursor",
          "in" : "query",
          "description" : "The cursor position to start returning results from.\nTo opt-in into cursor-based pagination, provide `0` for the initial request.\nFor subsequent requests, use `nextCursor` and `prevCursor` from the previous response to navigate.\nCursor values are opaque and should not be constructed manually.",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "include",
          "in" : "query",
          "schema" : {
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string",
              "description" : "⚠️ This enum is not exhaustive; new values may be added in the future.",
              "enum" : [ "REIMBURSEMENT" ]
            }
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "default response",
            "content" : {
              "application/json;charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExternalPaginatedResponseV1ModelExternalBffInvoicePayableV1Model"
                }
              }
            }
          }
        }
      }
    },
    "/v1/card-balance-accounts/{accountId}/statement" : {
      "get" : {
        "tags" : [ "v1 - Card Balance Accounts" ],
        "summary" : "Generate a card balance account statement",
        "description" : "Generates a statement for a card balance account over a period. Dates are interpreted as UTC day boundaries and all timestamps in the response are in UTC. Runs a fresh provider sync inline so the statement reflects the latest activity.",
        "operationId" : "generateCardBalanceAccountStatement",
        "parameters" : [ {
          "name" : "accountId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        }, {
          "name" : "from",
          "in" : "query",
          "description" : "Start of the statement period, inclusive. A UTC calendar date in `YYYY-MM-DD` format.",
          "schema" : {
            "type" : "string",
            "format" : "date",
            "example" : "2026-01-01"
          }
        }, {
          "name" : "to",
          "in" : "query",
          "description" : "End of the statement period. A UTC calendar date in `YYYY-MM-DD` format; must be after `from`.",
          "schema" : {
            "type" : "string",
            "format" : "date",
            "example" : "2026-01-31"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "default response",
            "content" : {
              "application/json;charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExternalCardBalanceAccountStatementV1Model"
                }
              }
            }
          }
        }
      }
    },
    "/v1/card-balance-accounts/{accountId}" : {
      "get" : {
        "tags" : [ "v1 - Card Balance Accounts" ],
        "summary" : "Get card balance account",
        "description" : "Returns a card balance account by ID, including balance details",
        "operationId" : "getCardBalanceAccount",
        "parameters" : [ {
          "name" : "accountId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "default response",
            "content" : {
              "application/json;charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExternalCardBalanceAccountV1Model"
                }
              }
            }
          }
        }
      }
    },
    "/v1/card-balance-accounts" : {
      "get" : {
        "tags" : [ "v1 - Card Balance Accounts" ],
        "summary" : "List card balance accounts",
        "description" : "Returns a list of card balance accounts",
        "operationId" : "listCardBalanceAccounts",
        "parameters" : [ {
          "name" : "sort",
          "in" : "query",
          "schema" : {
            "type" : "string",
            "description" : "Sort string in the format `field:direction`. To provide multiple sort fields, separate them with commas.\n\nAvailable directions: `asc`, `desc`. \n\nAvailable fields: `companyEntityId`, `status`, `createdAt`.",
            "example" : "amount:desc,createdAt:asc"
          }
        }, {
          "name" : "filter",
          "in" : "query",
          "schema" : {
            "type" : "string",
            "description" : "Filter string in the format `field:operator:value`. To provide multiple filters, separate them with commas.\n\nAvailable operators: `eq`, `ne`, `in`, `not_in`, `gt`, `gte`, `lt`, `lte`.\n - For `in` and `not_in` operators, provide multiple values separated by the pipe character (`|`). \n\nAvailable fields: `id`, `companyId`, `companyEntityId`, `currency`, `status`, `createdAt`.",
            "example" : "state:in:IN_DRAFT|SCHEDULED|PAID,amount:gte:500,vendorId:ne:null"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of items to return. Default is 50, maximum is 200.",
          "schema" : {
            "maximum" : 200,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "offset",
          "in" : "query",
          "description" : "Number of items to skip before starting to collect the result set. Deprecated, use 'cursor' instead.",
          "deprecated" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "cursor",
          "in" : "query",
          "description" : "The cursor position to start returning results from.\nTo opt-in into cursor-based pagination, provide `0` for the initial request.\nFor subsequent requests, use `nextCursor` and `prevCursor` from the previous response to navigate.\nCursor values are opaque and should not be constructed manually.",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "default response",
            "content" : {
              "application/json;charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExternalPaginatedResponseV1ModelExternalCardBalanceAccountV1Model"
                }
              }
            }
          }
        }
      }
    },
    "/v1/card-balance-accounts/{accountId}/total-spend" : {
      "get" : {
        "tags" : [ "v1 - Card Balance Accounts" ],
        "summary" : "Get total spend for a card balance account",
        "description" : "Returns the total spend for a card balance account within a date range",
        "operationId" : "getCardBalanceAccountTotalSpend",
        "parameters" : [ {
          "name" : "accountId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        }, {
          "name" : "from",
          "in" : "query",
          "description" : "Start of the spend window, inclusive. A UTC calendar date in `YYYY-MM-DD` format.",
          "schema" : {
            "type" : "string",
            "format" : "date",
            "example" : "2026-01-01"
          }
        }, {
          "name" : "to",
          "in" : "query",
          "description" : "End of the spend window, inclusive. A UTC calendar date in `YYYY-MM-DD` format. Defaults to now if omitted.",
          "schema" : {
            "type" : "string",
            "format" : "date",
            "example" : "2026-01-31"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "default response",
            "content" : {
              "application/json;charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExternalCardBalanceAccountSpendV1Model"
                }
              }
            }
          }
        }
      }
    },
    "/v1/card-customers/public-key" : {
      "get" : {
        "tags" : [ "v1 - Card Customers" ],
        "summary" : "Get card integration public key",
        "description" : "Returns the public key for the cards integration service",
        "operationId" : "getPublicKey",
        "parameters" : [ {
          "name" : "companyEntityId",
          "in" : "query",
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "default" : {
            "description" : "default response",
            "content" : {
              "application/json;charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExternalCardPublicKeyInfoV1Model"
                }
              }
            }
          }
        }
      }
    },
    "/v1/card-transactions/batch-update" : {
      "patch" 

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