docs(api): document booking window meta and month-availability endpoint
- appointment-settings.md: weekly-schedule meta (online_booking_enabled, booking_window value/unit), defaults, and the slot-gating behavior. - appointment.md: new public month-availability endpoint (Gregorian year/month, disabled/enabled dates) and the empty-slots conditions for appointment-slots. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -57,6 +57,8 @@ Get all appointment slots (available and booked) for a doctor on a specific date
|
||||
```
|
||||
|
||||
> Returns **all** slots grouped by work shift. `is_available: false` means the slot has an active (pending/confirmed) appointment. Session boundaries match the doctor's `WeeklySchedule` or date override config.
|
||||
>
|
||||
> Returns an **empty** `sessions` array when the date is a holiday, a closed date override, in the past, beyond the doctor's booking window, or when online booking is disabled (see `meta` in `appointment-settings.md`).
|
||||
|
||||
### Errors
|
||||
| Code | HTTP | Description |
|
||||
@@ -66,6 +68,55 @@ Get all appointment slots (available and booked) for a doctor on a specific date
|
||||
|
||||
---
|
||||
|
||||
## GET `/api/v1/appointment-settings/month-availability/{doctorUuid}`
|
||||
|
||||
Which days of a month are bookable — used by the public calendar to grey out unavailable days.
|
||||
|
||||
**Permission:** `PUBLIC`
|
||||
|
||||
### Path Parameters
|
||||
| Param | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| `doctorUuid` | string (UUID) | Doctor UUID |
|
||||
|
||||
### Query Parameters
|
||||
| Param | Type | Required | Description |
|
||||
|-------|------|----------|-------------|
|
||||
| `year` | integer | ✅ | **Gregorian** year (e.g. `2026`) |
|
||||
| `month` | integer | ✅ | Gregorian month `1`–`12` |
|
||||
|
||||
> Input is Gregorian. A Jalali (Shamsi) front-end must convert the displayed month to the Gregorian month(s) it spans before calling.
|
||||
|
||||
### Response `200`
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": {
|
||||
"year": 2026,
|
||||
"month": 6,
|
||||
"disabled_dates": ["2026-06-01", "2026-06-17", "2026-06-26"],
|
||||
"enabled_dates": ["2026-06-15", "2026-06-16", "2026-06-18"],
|
||||
"online_booking_enabled": true,
|
||||
"booking_window": { "value": 1, "unit": "month" }
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| `disabled_dates` | string[] | `Y-m-d` days with no bookable slot (holiday / closed override / non-working / past / out-of-window) |
|
||||
| `enabled_dates` | string[] | `Y-m-d` days with at least one slot |
|
||||
| `online_booking_enabled` | boolean | Doctor's online-booking flag |
|
||||
| `booking_window` | object | `{ value, unit }` — `unit` is `week` or `month` |
|
||||
|
||||
### Errors
|
||||
| Code | HTTP | Description |
|
||||
|------|------|-------------|
|
||||
| `ERR_VALIDATION_002` | 404 | Doctor not found |
|
||||
| `ERR_VALIDATION_001` | 422 | Invalid year/month |
|
||||
|
||||
---
|
||||
|
||||
## POST `/api/v1/appointment`
|
||||
|
||||
Book an appointment slot.
|
||||
|
||||
Reference in New Issue
Block a user