All checks were successful
Auto Tag on Version Change / check-version (push) Successful in 5s
132 lines
2.9 KiB
Markdown
132 lines
2.9 KiB
Markdown
# Saved Favourites (Contacts)
|
|
|
|
Fetch the authenticated user's saved favourites for Fahipay payment services. Each service group is fetched individually by page name.
|
|
|
|
---
|
|
|
|
## Endpoint
|
|
|
|
```
|
|
GET https://fahipay.mv/api/app/favs/?page={serviceName}&lang=en
|
|
```
|
|
|
|
---
|
|
|
|
## Prerequisites
|
|
|
|
- Valid `authID` from [login](01-login.md) or [OTP](02-otp.md)
|
|
- Valid `__Secure-sess` session cookie
|
|
|
|
---
|
|
|
|
## Request
|
|
|
|
### Headers
|
|
|
|
| Header | Value |
|
|
|---|---|
|
|
| `authid` | `xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` |
|
|
| `User-Agent` | `okhttp/4.12.0` |
|
|
| `Accept-Encoding` | `gzip` |
|
|
| `Connection` | `Keep-Alive` |
|
|
| `Cookie` | `__Secure-sess=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` |
|
|
|
|
### Query Parameters
|
|
|
|
| Parameter | Description |
|
|
|---|---|
|
|
| `page` | Service group name — see table below |
|
|
| `lang` | Language — always `en` |
|
|
|
|
---
|
|
|
|
## Service Groups
|
|
|
|
Call this endpoint once per service group:
|
|
|
|
| `page` value | Service | Description |
|
|
|---|---|---|
|
|
| `ooredooraastas` | Ooredoo Raastas | Ooredoo mobile top-up |
|
|
| `dhiraagureload` | Dhiraagu Reload | Dhiraagu mobile top-up |
|
|
| `ooredoobillpay` | Ooredoo Bill | Ooredoo bill payment |
|
|
| `dhiraagubillpay` | Dhiraagu Bill | Dhiraagu bill payment |
|
|
|
|
---
|
|
|
|
## curl Example
|
|
|
|
```bash
|
|
curl --request GET \
|
|
--url 'https://fahipay.mv/api/app/favs/?page=ooredooraastas&lang=en' \
|
|
--compressed \
|
|
--header 'Accept-Encoding: gzip' \
|
|
--header 'Connection: Keep-Alive' \
|
|
--header 'Cookie: __Secure-sess=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
|
|
--header 'User-Agent: okhttp/4.12.0' \
|
|
--header 'authid: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
|
|
```
|
|
|
|
---
|
|
|
|
## Response
|
|
|
|
### With Entries
|
|
|
|
The top-level response is a JSON object. The key matching the `page` query parameter contains an object of saved entries, keyed by an arbitrary server-assigned string.
|
|
|
|
```json
|
|
{
|
|
"ooredooraastas": {
|
|
"1": {
|
|
"number": "9600000001",
|
|
"name": "Ali"
|
|
},
|
|
"2": {
|
|
"number": "7600000002",
|
|
"name": "Mohamed"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Empty Group
|
|
|
|
When the user has no saved favourites for a service, the value for the page key is an empty **array** (not an object):
|
|
|
|
```json
|
|
{
|
|
"ooredooraastas": []
|
|
}
|
|
```
|
|
|
|
> Parse with `optJSONObject(page)` — this returns `null` for the empty-array case, so empty groups are safely skipped.
|
|
|
|
---
|
|
|
|
## Entry Object
|
|
|
|
| Field | Type | Description |
|
|
|---|---|---|
|
|
| `number` | `string` | The saved phone number or account number |
|
|
| `name` | `string` | User-assigned display name for this favourite |
|
|
|
|
Only entries where `number` is a valid 7-digit Maldivian mobile number (starting with `7` or `9`) are used as transfer contacts.
|
|
|
|
---
|
|
|
|
## Usage
|
|
|
|
Fetch all four service groups in sequence. For each group:
|
|
1. Call `GET /api/app/favs/?page={serviceName}&lang=en`
|
|
2. Check that `response[serviceName]` is a JSON object (not an array)
|
|
3. Iterate keys; for each entry, validate `number` as a phone number
|
|
4. Build a contact entry with the service group as the bank/category label
|
|
|
|
---
|
|
|
|
|
|
|
|
---
|
|
|
|
[← Profile Picture](06-profile-picture.md)
|