Skip to main content
The five tables below join to each other and to three other domains — Property, Accounting, and Stakeholder. See the Data Model Overview for the complete cross-domain diagram.

service_contracts

GET /v1/contracts/service_contracts — maintenance and service contracts.
string
required
Unique property identifier.
object
Validity period of the contract.
string
required
Identifies the service provider. References Stakeholder.creditors.
string
Requires the personal grant. Display name of the service provider.
string
required
Contract identifier.
string
Human-readable contract number.
string
Contract name.
string
Contract category.
string
Contract type.
number
Contract value.
number
Contract value, normalised to an annual figure.
string
Requires the personal grant. Reason code for the contract.
string
Requires the personal grant. Free-text comment on the contract reasoning.

contract_debit_diffs

GET /v1/contracts/contract_debit_diffs — monthly deviations between the debit target and the actual account movements. Usable to reconcile planned debits against realised cash flow.
string
required
Unique property identifier.
object
Net, tax, and gross deviation amount for the period.
string
Tenant account the deviation applies to. Matches Accounting.accounts.account_number — not the same thing as contract_debits.debit_type.code, despite the similar-sounding names, and not the same account type as contract_debits.account_number (general ledger).
string
Tenant identifier.
date
required
Month the deviation applies to.
date
Date from which a payment reminder applies to this deviation, if any.
boolean
Whether the reminder was set manually rather than generated automatically.

contract_debits

GET /v1/contracts/contract_debits — rental debit positions as a time series. Each record represents a scheduled debit with a validity interval.
string
required
Unique property identifier.
integer
References the unit in Property.property_structure.
string
Identifies the tenancy this debit applies to.
integer
Composite key identifying the tenant at property level.
string
General ledger account the debit posts to. Matches Accounting.accounts.account_number, not account_id.
object
Validity interval of the debit.
integer
Day of the month the debit is due. null where the source system has no day set.
object
The type of debit, as a code + label pair (e.g. rent or ancillary charges).
number
required
The debit amount for the validity interval.
string
Account group from the account-range mapping.
string
Status of the debit record.
boolean
Whether the debit is subject to VAT.
boolean
Whether the debit includes a net-rent component.
boolean
Whether the debit includes an ancillary-cost component.
Use floor_area_id to join debit data to Property.property_structure, or floor_area_person_id to join to a specific tenancy in Stakeholder.tenants.

contract_ends

GET /v1/contracts/contract_ends — lease end dates and extension/option handling. Useful to track upcoming expiries, deadlines for exercising options, and the current exercise status.
This endpoint requires a property_id query parameter — a request without it returns 400 Bad Request with "Missing required filter(s): ['property_id']". See Filtering.
string
required
Unique property identifier.
integer
References the unit in Property.property_structure.
string
Identifies the tenancy this record applies to.
object
Start of the lease and its effective end date, after applying any option logic.
date
New end date if the lease was extended.
integer
Extension length in months.
date
Date the tenant was asked to decide on an extension option.
date
Deadline for the tenant’s response.
date
Date the tenant actually responded.
integer
Code for how the tenant responded.
date
Deadline by which an extension option must be exercised.
integer
Lead time, in months, before option_deadline used to trigger reminders.
boolean
Whether the option is exercised automatically if the tenant does not respond.
integer
Number of extension options already used.
integer
Number of extension options still available.
boolean
Whether the lease has been terminated.
string
Reason for the termination, if is_terminated is true.
object
Status of the extension option, as a code + label pair.
string[]
Free-text remarks on the extension option. Empty positions are omitted from the array.
floor_area_person_id alone does not uniquely identify a row, since a tenancy can have multiple option/extension entries. Treat rows as a set per floor_area_person_id, not as individually addressable records.

index_rent

GET /v1/contracts/index_rent — indexed-rent adjustment configuration and state, based on a consumer price index (VPI).
string
required
Unique property identifier.
string
Identifies the tenancy this index-rent state applies to.
object
Validity interval of this index-rent state.
object
The index-calculation model applied, as a code + label pair.
boolean
Whether this is the currently active index-rent state for the tenancy, as opposed to a superseded historical one.
integer
Debit-type code this index-rent state applies to. Not a ledger account reference — matches contract_debits.debit_type.code.
string
Name of the underlying consumer price index series, e.g. “VPI 2020”.
integer
Base year the index series is normalised to (index = 100).
number
Index value for the calendar month this state begins — the basis value the current index is compared against to calculate a change.
number
Minimum index change required before a rent adjustment is triggered, in the unit given by adjustment_unit.
string
Unit of adjustment_threshold and of the index-change comparison: "Prozent" (percentage change) or "Punkte" (absolute index points).
number
Percentage of the index change actually passed on to the rent — 100 passes on the full change, a lower value only a fraction of it.
boolean
Whether a rent adjustment is currently blocked for this tenancy.
date
Date until which is_adjustment_locked applies.
boolean
Whether formal notice to the tenant is required for the adjustment to take effect — relevant when adjustment_type is date-based.
integer
Number of months after which an adjustment becomes possible. Used together with adjustment_type = "Anpassung nach Ablauf Monaten".
integer
Numeric period parameter consumed by calculation_model. Its unit and exact meaning per model are not documented in the source system.
integer
Maximum number of months after which a recalculation must be performed.
string
Whether the adjustment triggers on a fixed calendar date ("Anpassung zu Datum") or after a defined number of months has elapsed ("Anpassung nach Ablauf Monaten").
string
Requires the personal grant. Free-text comment.
date
Start of a contract-clipped variant of the validity interval.
date
End of a contract-clipped variant of the validity interval.
date
Tenancy start date, as carried on this record.
date
Tenancy end date, as carried on this record.