Tenancy verification queue
Tenancy
Tenancy verification queue
List tenancy verification rows for review, each with a fresh 15-minute signed document URL. Cursor-paginated.
GET
Tenancy verification queue
Overview
The moderation queue for tenancy verifications. Defaults tostatus=PENDING, ordered by createdAt DESC. Each row embeds a fresh, 15-minute signed download URL for the private tenancy document so a moderator can view the evidence without the file being publicly accessible.
Available to any admin role — listing the queue 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 list the queue.
Path parameters
None.Query parameters
| Name | Type | Required | Notes | Example |
|---|---|---|---|---|
status | enum | no | PENDING (default), APPROVED, REJECTED. | PENDING |
cursor | string | no | Opaque base64url pagination cursor, 1..512 chars. | eyJjcmVhdGVkQXQ… |
limit | integer | no | Page size, 1..100. Default 25. | 50 |
Request body
None.Response — 200 OK
| Field | Type | Notes |
|---|---|---|
items | array | Array of tenancy verification rows (below). |
nextCursor | string | null | Cursor for the next page, or null on the last page. |
Tenancy verification row
| Field | Type | Notes |
|---|---|---|
id | string | Verification row ObjectId. |
userId | string | The submitting user. |
landlordName | string | Name supplied during onboarding. |
documentType | enum | TENANCY_AGREEMENT | RENT_STATEMENT | LANDLORD_LETTER. |
uploadId | string | The backing upload row id. |
reviewStatus | enum | PENDING | APPROVED | REJECTED. |
reviewedBy | string | null | Admin id who last decided, or null. |
reviewedAt | string | null | ISO timestamp of the decision, or null. |
reviewNotes | string | null | Rejection reason, or null. |
createdAt | string | ISO timestamp. |
user | object | null | { id, email, firstName, lastName } summary, or null. |
upload | object | null | { id, fileKey, mimeType, fileSizeBytes }, or null. |
documentDownloadUrl | string | null | 15-minute signed URL to view the document, or null if the upload is missing. Re-issued on every request — do not cache. |
Error responses
| Status | Code | Meaning |
|---|---|---|
| 400 | VALIDATION_FAILED | limit out of 1..100 or status unknown. |
| 401 | UNAUTHENTICATED | Missing, malformed, expired, or non-admin-scope token. |
See also
- Approve tenancy — accept a verification.
- Reject tenancy — decline a verification.
- Upload flow — how the document got into private storage.
curl
Postman
Seedocs/postman/swappr.postman_collection.json → Admin Tenancy → Queue.