Skip to main content
Tenant-side proxy for the GL connection state stored on tenant.config.gl in api-workspace. Reads the GL adapter’s connection state and projects it into a small response shape the ui-tenant header consumes for the GL status surface (logo + state dot + last-sync time). GL config is currently tenant-scoped, so all entities under a tenant share the same GL connection. The header surface lives in the entity layout but reflects tenant-level state.

GL connection status

Returns the tenant’s GL connection (provider, service, status, last-sync). Returns { "connected": false } when the tenant has no GL configured — the header renders a placeholder. Response — connected
Response — not connected

Start a GL connect session

Starts a GL connect session for this tenant. The UI opens sessionUrl (typically in a popup / new tab); the GL adapter handles the OAuth dance with the underlying provider (Xero / QuickBooks / …) and fires a webhook back to api-workspace on success which flips tenant.config.gl.options.status to ACTIVE. The UI polls GET /gl/status after the user completes the connect flow. Body
Response

Disconnect

Disconnects the tenant’s GL connection. Idempotent — a no-op if there’s no connection. Response — 204 No Content.

General ledgers (SDK)

ntro.capabilities.gl — the Python surface workflows use to post journals + bills against the connected GL.

Tenant architecture

Where the GL connection sits in the cell topology.