Deactivate a tenant
Marks a tenant inactive so they can no longer sign in to the tenant portal. Nothing is deleted: the tenant, their history and their ledger stay exactly as they are, and the tenant can be reactivated later.
Authorization
AuthorizationstringrequiredPath parameters
tenantIdstringrequiredThe tenant. A Snowflake id, sent as a decimal string.
Query parameters
forceMoveOutFromLeasesbooleanfalse, the default, refuses to deactivate a tenant who is still on a lease that has not ended. true moves them out of every one of those leases first, then deactivates them.
Response
200 · The tenant, now with `active` set to `false`.
idstringThe tenant. This is the person, not their place on any particular lease.
activebooleanfalse once the tenant has been deactivated. A deactivated tenant cannot sign in and cannot be given a new password.
emailstringEmail address. Absent when none is on file.
firstNamestringGiven name.
lastNamestringFamily name. Absent when only a first name is on file.
phonestringPhone number, formatted for reading. Absent when none is on file.
createdstring · date-timeWhen the tenant record was created.
updatedstring · date-timeWhen the tenant record was last changed.
lastSeenstring · date-timeWhen the tenant last used the tenant portal. Absent when they never have.
lastPortalInvitestring · date-timeWhen a portal invite was last sent. Absent when none ever was.
portalStatusenum<string>Where the tenant is in getting onto the tenant portal: notInvited (never invited), invited (invited but never signed in), active (has signed in).
chatIdstringThe tenant's conversation with the company. Absent when no conversation exists.
languagestringISO 639-1 language code used for messages to this tenant.
ssnstringThe tenant's Social Security number, if one was recorded. Returned in full, so treat every response containing it as sensitive. No example is shown here on purpose.
driversLicenseobjectDriver's licence details, if recorded. Returned in full, so treat it as sensitive. No example is shown here on purpose.
dateOfBirthstring · dateThe tenant's date of birth, if recorded. No example is shown here on purpose.
genderenum<string>The tenant's recorded gender. Absent when not recorded.
currentAddressobjectWhere the tenant currently lives, as recorded on the tenant record. This is not derived from their lease.
emergencyContactsobject[]People to contact in an emergency.
iconsstring[]Icon keys a property manager has pinned to the tenant. Always present, possibly empty.
imageIdstringThe tenant's photo. Absent when they have none.
primaryLeaseIdstringOf the tenant's leases that have not ended, the one with the highest rent. Absent when they are on none.
currentLeasesobject[]Every lease the tenant is on that has not ended.
propertiesobject[]The properties behind currentLeases.
unitsobject[]The units behind currentLeases.
401 · The access token is missing, expired, or does not belong to a property manager.
404 · No tenant with that id exists for the calling company. A record that belongs to another company is reported the same way as one that does not exist. The id you asked for is in `entityId`; `detail` names only the kind of record.
409 · The tenant is still on at least one lease that has not ended, and `forceMoveOutFromLeases` was not set. The count is in `title`, and `instance` carries the exception name rather than a request path — this response is assembled by the controller rather than by the usual problem-details machinery.
Deactivating sets active to false on the tenant and disables their MagicDoor sign-in. That is the whole of it.
What changes: the tenant can no longer sign in to the tenant portal. Lists that filter on active=true stop returning them.
What does not change: the tenant record itself, their name and contact details, their identity documents, their lease history, their payments and their ledger are all untouched and still readable through this API. Deactivating a tenant does not remove them from a lease unless you ask for that with forceMoveOutFromLeases.
There is no endpoint in this section that erases a tenant. Reactivate a tenant puts them back.
With forceMoveOutFromLeases=true the tenant is moved out of every lease that has not ended before they are deactivated. That is a real change to those leases and to anything derived from them. It is not undone by reactivating the tenant.
Deactivating an already-inactive tenant returns the tenant unchanged rather than failing.