Get my profile
Profile
Get my profile
Read the authenticated user’s full profile for the Account screen.
GET
Get my profile
Overview
Returns the authenticated user’s full profile — everything the Account and Edit Profile screens need. Call this right after login (the login payload carries only a lightweight summary) and again after anyPATCH /users/me to refresh local state.
dateOfBirth is decrypted transparently from encrypted-at-rest storage and returned as an ISO calendar date.
Authentication
Bearer <accessToken> required. Scope: user. Available throughout onboarding (not gated on completion).
Response — 200 OK
| Field | Type | Notes |
|---|---|---|
id | string | 24-char Mongo ObjectId. |
email | string | Lowercased. Read-only — not editable via PATCH. |
firstName | string | null | null until collected at signup. |
lastName | string | null | null until collected at signup. |
dateOfBirth | string | null | ISO YYYY-MM-DD, or null. |
bio | string | null | Free-text profile bio (≤ 500 chars), or null. |
avatarUrl | string | null | Public CDN URL of the profile photo, or null. |
onboardingStatus | enum | IN_PROGRESS | COMPLETE. |
currentStep | integer | null | 1..4 during onboarding; null once complete. |
tenancyStatus | enum | NOT_SUBMITTED | PENDING | APPROVED | REJECTED. |
subscriptionStatus | string | Lowercased subscription status. |
createdAt | string | null | ISO 8601 account creation timestamp. Drives the “Member since” label. null only on legacy rows without it. |
Error responses
| Status | Code | Meaning |
|---|---|---|
| 401 | UNAUTHENTICATED | Missing, malformed, or expired access token. |
| 404 | NOT_FOUND | User does not exist or has been soft-deleted. |
See also
- Update my profile
- Login — returns the lightweight summary.