Modern Treasury LedgerEntry API

The LedgerEntry API from Modern Treasury — 2 operation(s) for ledgerentry.

OpenAPI Specification

modern-treasury-ledgerentry-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Modern Treasury AccountCapability LedgerEntry 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: LedgerEntry
paths:
  /api/ledger_entries:
    get:
      summary: list ledger_entries
      tags:
      - LedgerEntry
      operationId: listLedgerEntries
      description: Get a list of all ledger entries.
      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/bulk_id'
      - name: ledger_account_id
        in: query
        schema:
          type: string
        required: false
      - name: ledger_transaction_id
        in: query
        schema:
          type: string
        required: false
      - name: ledger_account_payout_id
        in: query
        schema:
          type: string
        required: false
      - name: ledger_account_settlement_id
        in: query
        schema:
          type: string
        required: false
      - name: effective_date
        in: query
        schema:
          type: object
          additionalProperties:
            type: string
            format: date
        style: deepObject
        required: false
        description: Use `gt` (>), `gte` (>=), `lt` (<), `lte` (<=), or `eq` (=) to filter by the transaction's effective date. Format YYYY-MM-DD
        explode: true
      - name: effective_at
        in: query
        schema:
          type: object
          additionalProperties:
            type: string
            format: date-time
        style: deepObject
        required: false
        description: Use `gt` (>), `gte` (>=), `lt` (<), `lte` (<=), or `eq` (=) to filter by the transaction's effective time. Format ISO8601
        explode: true
      - name: updated_at
        in: query
        schema:
          type: object
          additionalProperties:
            type: string
            format: date-time
        style: deepObject
        required: false
        description: Use `gt` (>), `gte` (>=), `lt` (<), `lte` (<=), or `eq` (=) to filter by the posted at timestamp. For example, for all times after Jan 1 2000 12:00 UTC, use updated_at%5Bgt%5D=2000-01-01T12:00:00Z.
        explode: true
      - name: as_of_lock_version
        in: query
        schema:
          type: integer
        required: false
        description: Shows all ledger entries that were present on a ledger account at a particular `lock_version`. You must also specify `ledger_account_id`.
      - name: ledger_account_lock_version
        in: query
        schema:
          type: object
          additionalProperties:
            type: integer
        style: deepObject
        required: false
        description: Use `gt` (>), `gte` (>=), `lt` (<), `lte` (<=), or `eq` (=) to filter by the lock_version of a ledger account. For example, for all entries created at or before before lock_version 1000 of a ledger account, use `ledger_account_lock_version%5Blte%5D=1000`.
        explode: true
      - name: ledger_account_category_id
        in: query
        schema:
          type: string
        required: false
        description: Get all ledger entries that match the direction specified. One of `credit`, `debit`.
      - name: ledger_account_statement_id
        in: query
        schema:
          type: string
        required: false
        description: Get all ledger entries that are included in the ledger account statement.
      - name: show_deleted
        in: query
        required: false
        description: If true, response will include ledger entries that were deleted. When you update a ledger transaction to specify a new set of entries, the previous entries are deleted.
        schema:
          type: boolean
      - name: direction
        in: query
        schema:
          type: string
          enum:
          - credit
          - debit
          _x-stainless-modelDefPath: $shared.transaction_direction
        required: false
        description: If true, response will include ledger entries that were deleted. When you update a ledger transaction to specify a new set of entries, the previous entries are deleted.
      - name: status
        in: query
        schema:
          type: string
          enum:
          - pending
          - posted
          - archived
        required: false
        description: Get all ledger entries that match the status specified. One of `pending`, `posted`, or `archived`. For multiple statuses, use `status[]=pending&status[]=posted`.
      - name: status[]
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - pending
            - posted
            - archived
        required: false
        description: Get all ledger entries that match the status specified. One of `pending`, `posted`, or `archived`. For multiple statuses, use `status[]=pending&status[]=posted`.
        explode: true
      - name: order_by
        in: query
        schema:
          type: object
          properties:
            created_at:
              type: string
              enum:
              - asc
              - desc
            effective_at:
              type: string
              enum:
              - asc
              - desc
          additionalProperties: false
        style: deepObject
        required: false
        description: Order by `created_at` or `effective_at` in `asc` or `desc` order. For example, to order by `effective_at asc`, use `order_by%5Beffective_at%5D=asc`. Ordering by only one field at a time is supported.
        explode: true
      - name: amount
        in: query
        schema:
          type: object
          properties:
            gte:
              type: integer
            lte:
              type: integer
            gt:
              type: integer
            lt:
              type: integer
            eq:
              type: integer
        style: deepObject
        required: false
        description: Use `gt` (>), `gte` (>=), `lt` (<), `lte` (<=), or `eq` (=) to filter by amount.
        explode: true
      - name: show_balances
        in: query
        required: false
        description: If true, response will include the balances attached to the ledger entry. If there is no balance available, null will be returned instead.
        schema:
          type: boolean
      - $ref: '#/components/parameters/metadata_query'
      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_entry'
        '403':
          description: forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_message'
        '422':
          description: unsuccessful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_message'
  /api/ledger_entries/{id}:
    parameters:
    - name: id
      in: path
      schema:
        type: string
      description: id
      required: true
    patch:
      summary: update ledger_entry
      tags:
      - LedgerEntry
      operationId: updateLedgerEntry
      description: Update the details of a ledger entry.
      security:
      - basic_auth: []
      parameters: []
      responses:
        '200':
          description: successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ledger_entry'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ledger_entry_update_request'
    get:
      summary: get ledger_entry
      tags:
      - LedgerEntry
      operationId: getLedgerEntry
      description: Get details on a single ledger entry.
      security:
      - basic_auth: []
      parameters:
      - name: show_balances
        in: query
        required: false
        description: If true, response will include the balances attached to the ledger entry. If there is no balance available, null will be returned instead.
        schema:
          type: boolean
      responses:
        '200':
          description: successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ledger_entry'
        '404':
          description: not found
          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`.
    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_entry_update_request:
      type: object
      properties:
        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
    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_entry:
      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
        amount:
          type: integer
          description: Value in specified currency's smallest unit. e.g. $10 would be represented as 1000. Can be any integer up to 36 digits.
        effective_at:
          type: string
          format: date-time
          description: The timestamp (ISO8601 format) at which the ledger transaction happened for reporting purposes.
        direction:
          type: string
          enum:
          - credit
          - debit
          description: One of `credit`, `debit`. Describes the direction money is flowing in the transaction. A `credit` moves money from your account to someone else's. A `debit` pulls money from someone else's account to your own. Note that wire, rtp, and check payments will always be `credit`.
          _x-stainless-modelDefPath: $shared.transaction_direction
        status:
          type: string
          enum:
          - archived
          - pending
          - posted
          description: Equal to the state of the ledger transaction when the ledger entry was created. One of `pending`, `posted`, or `archived`.
        ledger_account_id:
          type: string
          format: uuid
          description: The ledger account that this ledger entry is associated with.
        ledger_account_lock_version:
          type: integer
          description: Lock version of the ledger account. This can be passed when creating a ledger transaction to only succeed if no ledger transactions have posted since the given version. See our post about Designing the Ledgers API with Optimistic Locking for more details.
          nullable: true
        ledger_account_currency:
          type: string
          description: The currency of the ledger account.
        ledger_account_currency_exponent:
          type: integer
          description: The currency exponent of the ledger account.
        ledger_transaction_id:
          type: string
          description: The ledger transaction that this ledger entry is associated with.
        resulting_ledger_account_balances:
          $ref: '#/components/schemas/ledger_balances'
          description: The pending, posted, and available balances for this ledger entry's ledger account. 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. Please see https://docs.moderntreasury.com/docs/transaction-status-and-balances for more details.
          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
      additionalProperties: false
      minProperties: 17
      required:
      - id
      - object
      - live_mode
      - created_at
      - updated_at
      - discarded_at
      - amount
      - effective_at
      - direction
      - status
      - ledger_account_id
      - ledger_account_lock_version
      - ledger_account_currency
      - ledger_account_currency_exponent
      - ledger_transaction_id
      - resulting_ledger_account_balances
      - metadata
    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