> ## Documentation Index
> Fetch the complete documentation index at: https://docs.thecleanlife.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# List Cancellation Reasons

> GET /partners/bookings/cancellation-reasons — List valid cancellation reasons for partner bookings.

## Overview

Returns the list of **active customer cancellation reasons** supported by CleanLife. You must call this endpoint before cancelling a booking and pass the chosen `reasonId` in `PATCH /partners/bookings/:bookingId/cancel`.

***

## Endpoint

```
GET /partners/bookings/cancellation-reasons
```

## Authentication

Requires a valid API Key with the `partner_bookings_cancel` permission.

***

## Example Request

```bash theme={null}
curl -X GET "https://apiv3.thecleanlife.dev/v1/partners/bookings/cancellation-reasons" \
  -H "x-api-key: YOUR_API_KEY"
```

***

## Success Response

**HTTP Status:** `200 OK`

```json theme={null}
{
  "success": true,
  "data": [
    {
      "id": "aaaaaaaa-0000-0000-0000-000000000001",
      "nameEn": "Customer changed plans",
      "nameAr": "العميل غيّر خطته"
    },
    {
      "id": "bbbbbbbb-0000-0000-0000-000000000002",
      "nameEn": "Wrong date or time selected",
      "nameAr": "تاريخ أو وقت غير صحيح"
    }
  ]
}
```

### Response fields

| Field    | Type   | Description                                                           |
| -------- | ------ | --------------------------------------------------------------------- |
| `id`     | UUID   | Cancellation reason ID — pass as `reasonId` when cancelling a booking |
| `nameEn` | string | English label (display to English-speaking users)                     |
| `nameAr` | string | Arabic label (display to Arabic-speaking users)                       |

***

## Error Responses

| HTTP Status | Code           | Description                                  |
| ----------- | -------------- | -------------------------------------------- |
| `401`       | `UNAUTHORIZED` | Missing or invalid API key                   |
| `403`       | `FORBIDDEN`    | Missing `partner_bookings_cancel` permission |

***

## Notes

* Cache this list with a moderate TTL (e.g. 1–24 hours). Reasons change infrequently.
* Only **active customer-facing** reasons are returned.
* `reasonId` is **required** when calling the cancel endpoint.

***

## Related Endpoints

* `PATCH /partners/bookings/:bookingId/cancel` — Cancel a booking using a `reasonId` from this list
* `GET /partners/bookings/:bookingId/status` — Verify booking status before cancelling
