Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.api.bsa.ai/llms.txt

Use this file to discover all available pages before exploring further.

IDs

Every resource ID is exposed as a string, even though LMS stores them as integers internally.
{
  "id": "42",
  "customerId": "17",
  "officeId": "1"
}
Rules:
  • Treat IDs as opaque. Do not parse them as integers in your client code; future versions may switch to UUIDs.
  • Pass them back exactly as received.
  • Path params accept the same string format: GET /v1/customers/42.
Note that write payloads still accept integer IDs ("customerId": 42) — this matches what LMS expects and what your code is likely to produce. Responses always come back as strings.

Dates

All dates on the wire are ISO-8601 YYYY-MM-DD strings.
{
  "activationDate": "2026-05-22",
  "submittedDate": "2026-05-20"
}
The service handles converting these to LMS’s internal date formats ("dd MMMM yyyy" strings on writes, [yyyy, m, d] arrays on reads) — you should never see those forms in API responses. Time zones: dates have no timezone attached. They represent the calendar date in the deployment’s configured locale.

Money

Amounts (principal, interest rate, transaction amount, credit limit) are represented as JSON numbers:
{
  "principal": 5000,
  "interestRatePerPeriod": 1.5,
  "creditLimit": 12000.50
}
The current API uses double-precision floats for monetary values, matching what LMS returns. For high-precision use cases, round amounts client-side before persisting. A future major version may switch to fixed-point string representation.

Enumerated values

LMS represents enums (loan status, transaction type, frequency type, etc.) as {id, code, value} triples internally. The wrappers API flattens these to the human-readable value on responses:
{
  "status": "Active",
  "type": "Repayment"
}
On writes, you provide the integer code LMS expects (e.g. loanTermFrequencyType: 2 for months). Each endpoint page documents the valid values for its fields.