Save App provides two password management flows: an authenticated change-password endpoint for users who know their current password, and an unauthenticated reset flow for users who have forgotten it. The reset flow relies on Firebase Phone Authentication to verify identity on the client before calling the backend.Documentation Index
Fetch the complete documentation index at: https://docs.digiflecttech.dev/llms.txt
Use this file to discover all available pages before exploring further.
POST /api/auth/change-password
Changes the password for the currently authenticated user. Requires a valid Bearer token in theAuthorization header.
This endpoint is rate-limited to 5 requests per minute.
Request headers
Bearer <token> — the JWT token returned at login.Request body
The user’s existing password. Minimum 8 characters. The server verifies this against the stored hash before making any change.
The user’s desired new password. Minimum 8 characters.
Response
true when the password was changed successfully.A human-readable confirmation message.
Error responses
| Status | Condition |
|---|---|
401 Unauthorized | Missing or invalid Bearer token, or currentPassword does not match the stored password. |
Example
Password reset flow
Use this flow when the user cannot log in because they have forgotten their password. The client must first verify the user’s phone number using Firebase Phone Authentication before calling the backend reset endpoint.POST /api/auth/forgot-password is deprecated and no longer sends OTPs or emails. Use Firebase Phone Authentication on the client side to verify the user’s identity, then call POST /api/auth/reset-password directly.Step 1 — Verify phone on the client
Use the Firebase SDK in your mobile or web application to send a verification code to the user’s phone and confirm the code. Once the user successfully verifies, proceed to step 2.Step 2 — POST /api/auth/reset-password
Resets the password for the account associated with the given phone number. This endpoint is rate-limited to 2 requests per minute.Request body
The phone number of the account to reset, in Uganda format (
+256XXXXXXXXX).The user’s new password. Minimum 8 characters.
Response
true when the password was reset successfully.A human-readable confirmation message.
Error responses
| Status | Condition |
|---|---|
404 Not Found | No account found for the given phone number. |
Example
POST /api/auth/verify-reset-otp
Verifies a one-time passcode for thereset_password purpose against the OTP table. This endpoint is a legacy mechanism from before the Firebase Phone Auth migration.
Request body
The phone number associated with the OTP record.
The OTP code to verify.
Response
Returns{"success": true, "message": "OTP verified successfully"} on success, or 400 Bad Request if the OTP is invalid or expired.