openapi: 3.0.1 info: title: Modern Treasury AccountCapability LedgerAccountCategory API version: v1 contact: name: Modern Treasury Engineering Team url: https://moderntreasury.com description: The Modern Treasury REST API. Please see https://docs.moderntreasury.com for more details. servers: - url: http://localhost:3000 - url: https://app.moderntreasury.com tags: - name: LedgerAccountCategory paths: /api/ledger_account_categories: get: summary: list ledger_account_categories tags: - LedgerAccountCategory operationId: listLedgerAccountCategories description: Get a list of ledger account categories. security: - basic_auth: [] parameters: - name: after_cursor in: query schema: type: string nullable: true required: false - name: per_page in: query schema: type: integer required: false - $ref: '#/components/parameters/metadata_query' - $ref: '#/components/parameters/bulk_id' - name: name in: query required: false schema: type: string - $ref: '#/components/parameters/bulk_name' - name: ledger_id in: query schema: type: string required: false - name: currency in: query required: false schema: type: string - name: external_id in: query schema: type: string required: false - name: parent_ledger_account_category_id in: query schema: type: string required: false description: Query categories that are nested underneath a parent category - name: ledger_account_id in: query schema: type: string required: false description: Query categories which contain a ledger account directly or through child categories. - name: balances in: query schema: type: object properties: effective_at: type: string format: date-time additionalProperties: false style: deepObject required: false description: For example, if you want the balances as of a particular time (ISO8601), the encoded query string would be `balances%5Beffective_at%5D=2000-12-31T12:00:00Z`. The balances as of a time are inclusive of entries with that exact time, but with respect to the ledger accounts that are currently present in the category. explode: true responses: '200': description: successful headers: X-After-Cursor: schema: type: string nullable: true required: false description: The cursor for the next page. Including this in a call as `after_cursor` will return the next page. X-Per-Page: schema: type: integer nullable: true description: The current `per_page`. content: application/json: schema: type: array items: $ref: '#/components/schemas/ledger_account_category' post: summary: create ledger_account_category tags: - LedgerAccountCategory operationId: createLedgerAccountCategory description: Create a ledger account category. security: - basic_auth: [] parameters: - name: Idempotency-Key in: header required: false description: This key should be something unique, preferably something like an UUID. schema: type: string responses: '201': description: successful content: application/json: schema: $ref: '#/components/schemas/ledger_account_category' '403': description: forbidden content: application/json: schema: $ref: '#/components/schemas/error_message' '404': description: not found content: application/json: schema: $ref: '#/components/schemas/error_message' '422': description: unsuccessful content: application/json: schema: $ref: '#/components/schemas/error_message' requestBody: content: application/json: schema: $ref: '#/components/schemas/ledger_account_category_create_request' /api/ledger_account_categories/{id}: parameters: - name: id in: path schema: type: string description: id required: true get: summary: get ledger_account_category tags: - LedgerAccountCategory operationId: getLedgerAccountCategory description: Get the details on a single ledger account category. security: - basic_auth: [] parameters: - name: balances in: query schema: type: object properties: as_of_date: type: string format: date effective_at: type: string format: date-time additionalProperties: false style: deepObject required: false description: For example, if you want the balances as of a particular time (ISO8601), the encoded query string would be `balances%5Beffective_at%5D=2000-12-31T12:00:00Z`. The balances as of a time are inclusive of entries with that exact time, but with respect to the ledger accounts that are currently present in the category. explode: true responses: '200': description: successful content: application/json: schema: $ref: '#/components/schemas/ledger_account_category' '404': description: not found content: application/json: schema: $ref: '#/components/schemas/error_message' '422': description: unsuccessful content: application/json: schema: $ref: '#/components/schemas/error_message' patch: summary: update ledger_account_category tags: - LedgerAccountCategory operationId: updateLedgerAccountCategory description: Update the details of a ledger account category. security: - basic_auth: [] parameters: [] responses: '200': description: successful content: application/json: schema: $ref: '#/components/schemas/ledger_account_category' '403': description: forbidden content: application/json: schema: $ref: '#/components/schemas/error_message' '404': description: not found content: application/json: schema: $ref: '#/components/schemas/error_message' '409': description: conflict content: application/json: schema: $ref: '#/components/schemas/error_message' '422': description: unsuccessful content: application/json: schema: $ref: '#/components/schemas/error_message' requestBody: content: application/json: schema: $ref: '#/components/schemas/ledger_account_category_update_request' delete: summary: delete ledger_account_category tags: - LedgerAccountCategory operationId: deleteLedgerAccountCategory description: Delete a ledger account category. security: - basic_auth: [] responses: '200': description: successful content: application/json: schema: $ref: '#/components/schemas/ledger_account_category' '403': description: forbidden content: application/json: schema: $ref: '#/components/schemas/error_message' '404': description: not found content: application/json: schema: $ref: '#/components/schemas/error_message' /api/ledger_account_categories/{id}/ledger_accounts/{ledger_account_id}: parameters: - name: id in: path schema: type: string description: id required: true - name: ledger_account_id in: path schema: type: string description: ledger_account_id required: true put: summary: add ledger_account to ledger_account_category tags: - LedgerAccountCategory operationId: addLedgerAccountToLedgerAccountCategory description: Add a ledger account to a ledger account category. security: - basic_auth: [] responses: '200': description: successful '403': description: forbidden content: application/json: schema: $ref: '#/components/schemas/error_message' '404': description: not found content: application/json: schema: $ref: '#/components/schemas/error_message' '422': description: unsuccessful content: application/json: schema: $ref: '#/components/schemas/error_message' delete: summary: remove ledger_account from ledger_account_category tags: - LedgerAccountCategory operationId: removeLedgerAccountFromLedgerAccountCategory description: Remove a ledger account from a ledger account category. security: - basic_auth: [] responses: '200': description: successful '403': description: forbidden content: application/json: schema: $ref: '#/components/schemas/error_message' '404': description: not found content: application/json: schema: $ref: '#/components/schemas/error_message' '422': description: unsuccessful content: application/json: schema: $ref: '#/components/schemas/error_message' /api/ledger_account_categories/{id}/ledger_account_categories/{sub_category_id}: parameters: - name: id in: path schema: type: string description: id required: true - name: sub_category_id in: path schema: type: string description: sub_category_id required: true put: summary: add ledger_account_category to ledger_account_category tags: - LedgerAccountCategory operationId: addLedgerAccountCategoryToLedgerAccountCategory description: Add a ledger account category to a ledger account category. security: - basic_auth: [] responses: '200': description: successful '403': description: forbidden content: application/json: schema: $ref: '#/components/schemas/error_message' '404': description: not found content: application/json: schema: $ref: '#/components/schemas/error_message' '422': description: unsuccessful content: application/json: schema: $ref: '#/components/schemas/error_message' delete: summary: delete ledger_account_category from ledger_account_category tags: - LedgerAccountCategory operationId: deleteLedgerAccountCategoryFromLedgerAccountCategory description: Delete a ledger account category from a ledger account category. security: - basic_auth: [] responses: '200': description: successful '403': description: forbidden content: application/json: schema: $ref: '#/components/schemas/error_message' '404': description: not found content: application/json: schema: $ref: '#/components/schemas/error_message' '422': description: unsuccessful content: application/json: schema: $ref: '#/components/schemas/error_message' components: parameters: bulk_id: name: id[] in: query style: form explode: true allowReserved: true schema: type: array items: type: string required: false description: If you have specific IDs to retrieve in bulk, you can pass them as query parameters delimited with `id[]=`, for example `?id[]=123&id[]=abc`. bulk_name: name: name[] in: query style: form explode: true allowReserved: true schema: type: array items: type: string required: false description: If you have specific names to retrieve in bulk, you can pass them as query parameters delimited with `name[]=`, for example `?name[]=123&name[]=abc`. metadata_query: name: metadata in: query schema: type: object additionalProperties: type: string style: deepObject explode: true required: false description: For example, if you want to query for records with metadata key `Type` and value `Loan`, the query would be `metadata%5BType%5D=Loan`. This encodes the query parameters. schemas: ledger_account_category: type: object properties: id: type: string format: uuid object: type: string live_mode: type: boolean description: This field will be true if this object exists in the live environment or false if it exists in the test environment. created_at: type: string format: date-time updated_at: type: string format: date-time discarded_at: type: string format: date-time nullable: true name: type: string description: The name of the ledger account category. description: type: string description: The description of the ledger account category. nullable: true metadata: type: object description: Additional data represented as key-value pairs. Both the key and value must be strings. additionalProperties: type: string example: key: value foo: bar modern: treasury ledger_id: type: string format: uuid description: The id of the ledger that this account category belongs to. normal_balance: type: string enum: - credit - debit description: The normal balance of the ledger account category. _x-stainless-modelDefPath: $shared.transaction_direction external_id: type: string nullable: true description: An optional user-defined 180 character unique identifier. balances: $ref: '#/components/schemas/ledger_balances' description: The pending, posted, and available balances for this ledger account category. The posted balance is the sum of all posted entries on the account. The pending balance is the sum of all pending and posted entries on the account. The available balance is the posted incoming entries minus the sum of the pending and posted outgoing amounts. additionalProperties: false minProperties: 13 required: - id - object - live_mode - created_at - updated_at - discarded_at - name - description - metadata - ledger_id - normal_balance - external_id - balances error_message: type: object properties: errors: type: object properties: code: type: string enum: - parameter_invalid - parameter_missing - resource_not_found - not_found - forbidden - invalid_ip - invalid_key - header_invalid - expired_key - conflict - too_many_requests message: type: string parameter: type: string required: - errors ledger_balance: type: object properties: credits: type: integer debits: type: integer amount: type: integer currency: type: string description: The currency of the ledger account. currency_exponent: type: integer description: The currency exponent of the ledger account. additionalProperties: false minProperties: 5 required: - credits - debits - amount - currency - currency_exponent ledger_account_category_update_request: type: object properties: name: type: string description: The name of the ledger account category. description: type: string description: The description of the ledger account category. nullable: true metadata: type: object description: Additional data represented as key-value pairs. Both the key and value must be strings. additionalProperties: type: string example: key: value foo: bar modern: treasury external_id: type: string description: An optional user-defined 180 character unique identifier. nullable: true ledger_account_category_create_request: type: object properties: name: type: string description: The name of the ledger account category. description: type: string description: The description of the ledger account category. nullable: true metadata: type: object description: Additional data represented as key-value pairs. Both the key and value must be strings. additionalProperties: type: string example: key: value foo: bar modern: treasury currency: type: string description: The currency of the ledger account category. currency_exponent: type: integer description: The currency exponent of the ledger account category. nullable: true ledger_id: type: string format: uuid description: The id of the ledger that this account category belongs to. normal_balance: type: string enum: - credit - debit description: The normal balance of the ledger account category. _x-stainless-modelDefPath: $shared.transaction_direction ledger_account_category_ids: type: array items: type: string format: uuid description: The array of ledger account category ids that this ledger account category should be a child of. external_id: type: string nullable: true description: An optional user-defined 180 character unique identifier. required: - name - normal_balance - currency - ledger_id ledger_balances: type: object properties: pending_balance: $ref: '#/components/schemas/ledger_balance' description: The pending_balance is the sum of all pending and posted entries. posted_balance: $ref: '#/components/schemas/ledger_balance' description: The posted_balance is the sum of all posted entries. available_balance: $ref: '#/components/schemas/ledger_balance' description: The available_balance is the sum of all posted inbound entries and pending outbound entries. For credit normal, available_amount = posted_credits - pending_debits; for debit normal, available_amount = posted_debits - pending_credits. additionalProperties: false minProperties: 3 required: - pending_balance - posted_balance - available_balance securitySchemes: basic_auth: type: http scheme: basic