/v1/ covers six data domains plus pre-computed property KPIs, listed by table below. Field-level detail lives in the
API reference for each endpoint.
Accounting
accounts, booking_headers, booking_positions, budgets, and account_hierarchiesContracts
service_contracts, contract_debits, contract_debit_diffs, contract_ends, and index_rentDepreciation
assets and depreciationKPI (Preview)
property_kpis and property_kpis_by_floor_area_type, aggregated from the other domainsOperations
notifications, offers, orders, projects, and requestsProperty
properties, property_structure, property_creditor_services, and technical_objectsStakeholder
creditors, employees, owners, and tenantsHow the tables connect
property_id is the join key shared across every table on this page.
A booking transaction produces one booking_headers row, which groups every line item it posts (booking_positions). Line items post to accounts of different types — general ledger, tenant, creditor, project, or cost centre, see accounts.account_type_name. A transaction usually involves one creditor, tenant, or cost centre, so booking_headers already contains creditor_id, person_id, and property_structure_account_id itself — no join through booking_positions needed. Each account can have a
budget for a given month. For a cost centre, property_structure.account_id matches the accounts.account_number of the corresponding accounts row — not its accounts.account_id. contract_debits references the general ledger account it posts to via account_number, matching accounts.account_number. contract_debit_diffs uses the same account_number field name, but resolves to a tenant account instead — same column name, different account type per table. contract_debits.debit_type.code is a different thing, a debit-type code, not a ledger reference (see the account_id row below).
Join keys in detail
Cardinalities above describe the intended data model.