Traverse from Platform ledger line
const url = 'https://api.aerandil.com/v1/object-types/hospitality.platform_ledger_line/objects/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/traverse';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"as_of":"2026-04-15T12:00:00Z","branch":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","cursor":"example","direction":"out","limit":1,"link_type":"hospitality.link.platform_ledger_line_for_dispute","role":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.aerandil.com/v1/object-types/hospitality.platform_ledger_line/objects/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/traverse \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "as_of": "2026-04-15T12:00:00Z", "branch": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "cursor": "example", "direction": "out", "limit": 1, "link_type": "hospitality.link.platform_ledger_line_for_dispute", "role": "example" }'RPC-shaped traversal. Pick the edge by (link_type, direction) or by role — the registry resolves a role name (e.g. managed_by, direct_reports) to the underlying link side. link_type wins when both are present.
One balance transaction on the platform’s own processor balance (Stripe’s txn_…) that belongs to a hotel’s merchant account: the platform charge a destination payment was made with (and Stripe’s processing fee on it), the transfer that carried the hotel’s share, the application fee the platform earned, a refund and the reversal that recovered it, a chargeback’s withdrawal and what was passed back. Filed at the house the account is for, matched when it resolves to a ledger payment or case. Append-only; a line read again may gain a match it could not make before. The platform’s lines no hotel owns (its own payouts, Stripe’s fees on the platform and the tax on them, a reserve, a charge for an account no merchant account holds) are filed at the tenant scope of the operator’s own tenant, with no merchant account, never matched, their day the processor’s UTC day.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Object id (UUID v7, server-generated at create time).
Request Bodyrequired
Section titled “Request Bodyrequired”Body for POST .../traverse. At least one of link_type or role MUST be supplied — the server returns 422 missing_traversal_target when both are absent. link_type wins when both are set.
object
RFC3339 temporal window: return neighbours whose edge was in effect at this instant ([effective_from, effective_to)) instead of now.
Traverse through an open branch’s overlay view instead of the canonical (main) plane. Does not compose with as_of (422).
Edge direction. Optional when the binding is asymmetric.
API name of the link type to traverse. Narrowed to link types that bind the source. Wins over role.
Link-side role name (e.g. managed_by, direct_reports). Mutually substitutable with link_type — the registry resolves the role to its underlying link and direction.
Responses
Section titled “Responses”Neighbours along the resolved link.
object
object
object
object
object
object
object
object
Example
{ "data": [ { "scope": { "level": "tenant" } } ], "direction": "out"}No object with that id, or link type unknown.
Validation error — must supply link_type or role.