Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.ntropii.com/llms.txt

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

A subledger is a ledger-shaped table scoped to an entity and workflow run (expenses, journal staging, etc.). Rows live in the tenant ledgers schema alongside the GL — not in ingest.*. Use ntro.subledger from activities or workflow-adjacent code that already holds a data-plane connection.

Opening a handle

from uuid import UUID
from ntro.subledger import open as subledger_open

handle = subledger_open(
    name="expenses",
    entity_id=UUID("…"),
    task_id=UUID("…"),
    tenant_slug="acme",
)
rows = await handle.query(...)
Platform types (e.g. expenses) register via @register_type under ntro.subledger.types. Mutation helpers for review workflows live alongside the type (e.g. edit/reject rules) so Temporal-signalled actions can apply domain logic consistently — see UI and Temporal signals.

Core concepts

SymbolPurpose
RowPydantic base for subledger rows — standard columns (id, entity_id, period, task_id, status, …).
SubledgerStatusDefault lifecycle enum; types may specialize.
SubledgerHandleLazy-bound API for query / insert / transitions for one (subledger name, entity, task).
register_typeAssociates a row model with a subledger name at import time.
Direct HTTP mutation endpoints on Ntropii Tenant may still exist for ops or legacy callers; interactive Tenant UI edits for HITL tables should go through workflow signals so Temporal stays the source of truth — same boundary as described in the signals doc.

Ingest outcomes & feedback

Earlier stage: ingest schema and feedback envelopes.

UI and Temporal signals

How row edits reach ntro.subledger via workflows.

Accounting capability

GL-facing helpers built on subledger proposals where applicable.

General ledgers

ntro.capabilities.gl — post BillProposal and other resources to the external GL.