tagName behind a term you’re looking for, and to know what shape its value will arrive in before you parse it.
For how tags are structured in a response — categories, typed values, schedules, options — read Tags and tag values first.
Reading the tables
Every column below is something you can read off a tag in a response — there are no internal registry values here.Where the data lands
Readingvalue is right for most terms, but not all — for an option it is nearly empty, and for a schedule-bearing term it’s a summary. This column tells you where to actually look:
Component tags are listed here because you can still meet them as standalone tags: fetch a document’s tags with
GET .../docs/{leaseDocId}/tags and they come back individually, each with its own category: STANDARD and its own value resolved from the unit it was captured with. It is the consolidated lease view that folds them away.Units are the signal, not a separate data type
Internally a tag carries both a data type and a unit, but the data type is not exposed anywhere in this API — and it isn’t a stable property of the term either. The two are set together per tag instance: picking a unit also sets the data type that goes with it, so a term whose definition defaults to text can be stored as a number the moment someone gives it a numeric unit. There is no useful “this term is always a number” fact to publish, and this reference doesn’t try to. What you observe instead isvalue.kind and value.unit. The unit is what decides the kind, by this rule, in order:
Three consequences worth designing around:
- A
$unit is the whole test for money, and a%unit the whole test for percent. Both are prefix tests over the unit string, so$psf (annual)is money and% of FMVis percent without any per-tag special-casing. Branch onkind, never on the tag name. - A percentage arrives as the percentage itself, not a fraction:
3.5with unit%means three and a half percent. Terms that accept both percent and dollar units —rentBump,opexCap— returnpercentormoneyaccording to what was captured, so the sametagNamecan hand you either. - Free text wins over the unit. A term stored as text returns
kind: texteven when it carries a percent or dollar unit. Rental rates are the common case: a rate the lease words rather than states — most often fair market value — comes back astextwithunit: "FMV"rather than as a money value with nothing in it, and a rate the lease leaves to the landlord comes back astextwithunit: "landlordDefined".
capturedData, so it is omitted whenever the captured text couldn’t be parsed into that kind — a range that wouldn’t split leaves start and end unset, a relative date leaves value unset. capturedData always holds the raw text and is the fallback.
Lease type and country scoping
By default a term is available on any lease. Some are restricted, and a restricted term simply never appears on a lease that doesn’t qualify:
The tables below flag each of these in the Scope column. This is the mechanism behind the warning on lease type: change a lease’s type and its type-scoped terms stop surfacing.
customValue meanings
Sixteen terms carry data in customValue1–customValue6. The positional table lives on Tags and tag values; the tables below flag them in the Where the data lands column.
The recurring pattern is a :-:-delimited parallel array — several customValue fields each holding one token per period, read together by index. The abatement terms are the clearest case:
:-: and zip by index.
Terms that break the pattern
A few terms don’t behave the way the tables would lead you to expect:autoRenewalgroups its component tags by space rather than by thereferenceIdevery other option chain uses. Its components also remain visible as space-keyed tags in their own right instead of being folded away entirely. If you are walking option chains byreferenceId, auto-renewal won’t be found that way — read theAUTO_RENEWALcomponent off the tag and its per-space effects fromLease.autoRenewalExpirationDates.rentSchedule,percentageRent, and the abatement terms carry their real payload in ascheduleor incustomValuearrays, not invalue. The tag’s ownvalueis close to meaningless for them.suiteNumberis a term as well as a field name. As a tag itscapturedDatais a comma-separated list of the spaces named in the document — distinct fromLease.suiteNumber, which is the resolved list of space objects the lease occupies.opexCapandpercentageRentboth usecustomValue1as a mode switch that changes how the remainingcustomValuefields should be read. Check it first.securityDepositandletterOfCreditAmounthold the original amount invalueand the amount after the refund schedule incustomValue1. Whichever you report, be consistent.

