Tenancy verification detail
Tenancy
Tenancy verification detail
Full review context for one verification: applicant profile (decrypted DOB), signed document URL, their current home, and desired-home preferences.
GET
Tenancy verification detail
Overview
Everything a moderator needs to review one tenancy verification on a single page: the verification row (with a fresh 15-minute signed download URL for the private document), the applicant’s profile (including the decrypteddateOfBirth), their current-home listing (photos, description, features, rent, coordinates), and their desired-home preferences.
GeoJSON [lng, lat] pairs are flattened to { lat, lng } server-side so clients can never swap them.
Available to any admin role — the detail is read-only. The decisions (approve / reject) are role-gated.
Authentication
Bearer <accessToken> with scope: 'admin' required (requireAdmin).
Read-only — all admin roles (SUPER, MODERATOR, FINANCE) may view the detail. No audit row is written (parity with the queue listing).
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
id | string | yes | Tenancy verification ObjectId (from the queue). |
Query parameters
None.Request body
None.Response — 200 OK
Four sections. applicant, currentHome, and preferences are independently nullable — a deleted account nulls applicant; a mid-onboarding user nulls currentHome/preferences.
| Field | Type | Notes |
|---|---|---|
verification | object | The verification row — same shape as a queue row, incl. documentDownloadUrl. |
applicant | object | null | Applicant profile (below), or null if the account no longer exists. |
currentHome | object | null | The home they have (below), or null while mid-onboarding. |
preferences | object | null | The home they want (below), or null while mid-onboarding. |
applicant
| Field | Type | Notes |
|---|---|---|
id | string | User id. |
email | string | Account email. |
emailVerified | boolean | — |
firstName / lastName | string | null | — |
dateOfBirth | string | null | Date-only YYYY-MM-DD, decrypted at read from the PII store. |
phoneE164 | string | null | Decrypted at read. Currently null for all users (no collection flow yet). |
bio | string | null | Profile bio. |
avatarUrl | string | null | Public CDN URL. |
tenancyStatus | enum | NOT_SUBMITTED | PENDING | APPROVED | REJECTED. |
onboardingStatus | enum | IN_PROGRESS | COMPLETE. |
status | enum | ACTIVE | BANNED | SUSPENDED. |
createdAt / lastSeenAt | string | null | ISO timestamps. |
currentHome
| Field | Type | Notes |
|---|---|---|
id | string | Listing id. |
propertyType | enum | DETACHED | SEMI_DETACHED | TERRACED | FLAT | MAISONETTE | BUNGALOW. |
bedrooms / bathrooms | integer | 0..10. |
address / addressDetails / postcode | string | UK-normalised postcode. |
location | object | { lat, lng } — flattened from GeoJSON. |
rent | object | { amountMinor, frequency: WEEKLY | MONTHLY } in pence. |
rentMonthlyMinor | integer | Monthly-normalised pence. |
features | enum[] | GARDEN, PARKING, BALCONY, LIFT, GROUND_FLOOR, PETS_ALLOWED, WHEELCHAIR_ACCESS. |
photos | array | { url, thumbnailUrl, orderIndex, isCover, width, height, blurhash } — public CDN URLs, ordered, exactly one cover when non-empty. |
description | string | Empty in DRAFT, else 100–150 chars. |
status | enum | DRAFT | LIVE | HIDDEN. |
createdAt / updatedAt | string | null | ISO timestamps. |
preferences
| Field | Type | Notes |
|---|---|---|
id | string | Preferences row id. |
desiredPropertyTypes | enum[] | Same enum as propertyType, ≥1 entry. |
minBedrooms / maxBedrooms | integer | min ≤ max. |
maxRent / maxRentMonthlyMinor | object / integer | Same shapes as rent. |
preferredLocations | array | 1–5 × { label, lat, lng, postcode | null }. |
searchRadiusMiles | number | One of 0, 1, 3, 5, 10, 25 (0 = exact area only). |
desiredFeatures | enum[] | Same enum as features. |
createdAt / updatedAt | string | null | ISO timestamps. |
Error responses
| Status | Code | Meaning |
|---|---|---|
| 401 | UNAUTHENTICATED | Missing, malformed, expired, or non-admin-scope token. |
| 404 | NOT_FOUND | Unknown or malformed verification id. |
See also
- Tenancy queue — list verifications for review.
- Approve tenancy — accept a verification.
- Reject tenancy — decline a verification.
curl
Postman
Seedocs/postman/swappr.postman_collection.json → Admin Tenancy → Detail.