Skip to content

Get Tenancy

GET
/api/canvas/{deal_id}/tenancy
curl --request GET \
--url https://example.com/api/canvas/example/tenancy \
--header 'Authorization: Bearer <token>'

Return the rent-roll tenancy graph (leases + ladder + concentration) for deal_id.

Returns 200 with available: false and empty arrays when the property graph has no leases for the deal (no rent roll in the workbook, or the parse-time hook was skipped). The UI renders the empty state in that case.

deal_id
required
Deal Id
string

Successful Response

Media typeapplication/json
TenancyResponse

Top-level response for GET /canvas/{deal_id}/tenancy.

object
deal_id
required
Deal Id
string
available
required
Available
boolean
lease_count
required
Lease Count
integer
unit_count
required
Unit Count
integer
tenant_count
required
Tenant Count
integer
total_sf
Any of:
number
leases
required
Leases
Array<object>
LeaseRow

A single lease in the tenancy graph.

object
entity_id
required
Entity Id
string
unit_id
Any of:
string
tenant_name
Any of:
string
sf
Any of:
number
lease_start
Any of:
string
lease_end
Any of:
string
lease_type
Any of:
string
current_rent
Any of:
number
maturity_year
Any of:
integer
expiration_schedule
required
Expiration Schedule
Array<object>
ExpirationYearRow

Lease-count + SF rolling in a given expiration year.

object
year
required
Year
integer
lease_count
required
Lease Count
integer
sf
required
Sf
number
pct_of_total_sf
Any of:
number
tenant_concentration
required
Tenant Concentration
Array<object>
TenantConcentrationRow

Per-tenant SF + %-of-total-SF (SF-descending).

object
tenant_name
required
Tenant Name
string
sf
required
Sf
number
pct_of_total_sf
Any of:
number
largest_tenant_pct
Any of:
number
Examplegenerated
{
"deal_id": "example",
"available": true,
"lease_count": 1,
"unit_count": 1,
"tenant_count": 1,
"total_sf": 1,
"leases": [
{
"entity_id": "example",
"unit_id": "example",
"tenant_name": "example",
"sf": 1,
"lease_start": "example",
"lease_end": "example",
"lease_type": "example",
"current_rent": 1,
"maturity_year": 1
}
],
"expiration_schedule": [
{
"year": 1,
"lease_count": 1,
"sf": 1,
"pct_of_total_sf": 1
}
],
"tenant_concentration": [
{
"tenant_name": "example",
"sf": 1,
"pct_of_total_sf": 1
}
],
"largest_tenant_pct": 1
}

Validation Error

Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
input
Input
ctx
Context
object
Examplegenerated
{
"detail": [
{
"loc": [
"example"
],
"msg": "example",
"type": "example",
"input": "example",
"ctx": {}
}
]
}