Loading FlowZen
Getting your workspace ready...
Getting your workspace ready...
Manage user profile information, avatar, documents, and identity verification.
Company.owner is the single global super-admin — the only role that can act across every region and manage company-level settings.
The admin role is region-scoped (same rule as finance): an admin's scope is the members whose effective region matches theirs, with the main-office fallback when their regionLabel is unset. A regional admin can see and manage members, attendance, documents, approvals and finance records for their own region only — never another region's.
What stays company-level (owner-only): takedown, freeze/hold, brand theme, join codes, and the region roster itself.
/api/profileGet current user's full profile.
Two fields exist specifically for members who have been disconnected from their company, where the profile would otherwise degrade into “Not set” / “none”: documentCount drives the read-only Documents tab, which is only shown to a disconnected member when it is greater than 0, and previousEmployment summarises the employment they actually finished. It is null while they are still an approved member.
The disconnect nulls out company and companyJoined, so joined is reconstructed from the last joined-company entry in membershipHistory, while ended comes from employmentEndDate — the contract-expired history entry is stamped with the cron run time, not the last working day. region resolves the member's own regionLabel, falling back to the main office.
/api/profileUpdate current user's profile information.
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Optional | Full name |
phone | string | Optional | Phone number |
dob | string | Optional | Date of birth (ISO) |
address | string | Optional | Home address |
bloodGroup | string | Optional | Blood group |
emergencyContact | object | Optional | { name, phone, relation } |
customRole | string | Optional | Custom job title |
/api/profileDelete current user's account.
/api/profile/imageUpload or update profile avatar.
| Field | Type | Required | Description |
|---|---|---|---|
avatarUrl | string | Required | URL of uploaded image |
/api/profile/imageRemove profile avatar.
/api/profile/documentsGet user's uploaded documents.
A member who has been disconnected has no company left to read the required categories from, but their own uploads are immutable history and the blob keys are not company-scoped, so they stay downloadable. Such a request gets categories: [] and readOnly: true rather than the 403 an approved company used to require. readOnly is the client's signal to hide upload and delete controls; both mutations below still require an approved company, so an ex-member can neither upload nor delete.
/api/profile/documentsUpload a document against a required category. Requires multipart/form-data and an approved company.
| Field | Type | Required | Description |
|---|---|---|---|
file | file | Required | The document. Max 20 MB |
category | string | Required | Must match a category configured in the company's requiredDocuments |
fieldValues | string | Optional | JSON-encoded array of { label, value } |
The category decides which extensions are accepted via acceptedFileTypes. Only one document per category is kept, so the existing one must be deleted first. PDF uploads are parsed for a blood group, which is written back to the profile if found, and fieldValues labelled “account number” / “ifsc” are copied onto the profile too.
/api/profile/documentsRemove the document held against a category. Requires an approved company.
| Field | Type | Required | Description |
|---|---|---|---|
category | string | Required | Category whose document should be deleted (query param) |
/api/profile/email/verifySend OTP to verify new email address.
| Field | Type | Required | Description |
|---|---|---|---|
email | string | Required | New email address |
/api/profile/email/confirmConfirm email change with OTP.
| Field | Type | Required | Description |
|---|---|---|---|
email | string | Required | New email address |
otp | string | Required | 6-digit OTP code |
/api/profile/id-card/statusCheck ID card request status.
/api/profile/id-card/requestRequest a new ID card.
/api/profile/identity-code/requestRequest a new identity code for security scanning.
/api/profile/monthly-checkGet monthly attendance/salary check status.
| Query Param | Type | Required | Description |
|---|---|---|---|
month | string | Required | Month in YYYY-MM format |
/api/profile/jobsGet jobs associated with current user.